In questo progetto andrò ad affrontare i passi necessari alla creazione di una web radio su Raspberry PI. Nello specifico utilizzerò il software Icecast, utilizzato spesso come alternativa a un altro celebre software (Shoutcast), che però sembra non essere più supportato. Da notare che Icecast è già disponibile nei repository di Raspbian, quindi è di più semplice installazione.
Occorrente:
- Raspberry PI (consiglio il modello B da 512 MB di RAM, comunque sia attualmente lo sto facendo su un Raspberry PI 2 Modello B che vanta un processore ARM quad-core da 900 MHz e 1 GB di RAM);
- Scheda SD o micro-SD (a seconda del modello di Raspberry PI che possedete) abbastanza capiente (io ne utilizzerò una da 32 GB, acquistata su Amazon per 16 €);
- Adattatore WI-FI o cavo ethernet per collegare il Raspberry PI sulla rete;
- Il software Icecast2 (che ci permetterà di realizzare il server sul quale poi verrà trasmessa la nostra web radio);
- Raspbian (la distribuzione Linux ufficiale per Raspberry PI).
Innanzitutto effettuiamo il login (se non lo abbiamo già fatto). Quindi o come utente pi che è quello di default su Raspbian, oppure come root. Una volta fatto ciò bisognerà aggiornare il gestore dei pacchetti disponibili per Raspbian, tramite il comando (come utente pi):
sudo apt-get update
Oppure senza “sudo” come utente root. Da qui in poi eviterò di dirvi di togliere o aggiungere “sudo” prima del comando.
Una volta impartito il comando, si passerà all’installazione vera e propria con:
sudo apt-get install icecast2
Impartendo questo comando, vi verrà chiesto di configurare Icecast2. Rispondete di affermativamente e inserite nome utente, password e tutti i dati richiesti, in questo modo potrete già avere Icecast2 funzionante. Ma per una configurazione più completa sarà necessario modificare il file di configurazione in formato XML situato nel seguente percorso: /etc/icecast2/icecast.xml
Quindi, in definitiva, per modificarlo utilizzeremo:
sudo nano /etc/icecast2/icecast.xml
Una volta fatto ciò, ci comparirà una schermata molto simile a questa (il config qui di seguito contiene parti tagliate, ho cercato di rimuovere quelle con commenti, non attive di default, indicate con […]):
<icecast> <!-- location and admin are two arbitrary strings that are e.g. visible on the server info page of the icecast web interface (server_version.xsl). --> <location>Italia</location> <admin>tua@email.it</admin>
<!-- limite massimo di ascoltatori e sorgenti (cioè quanti clients possono trasmettere) maggiori informazioni disponibili su http://icecast.org/docs/icecast-2.4.0/config-file.html --> <limits> <clients>30</clients> <sources>2</sources> <threadpool>5</threadpool> <queue-size>524288</queue-size> <client-timeout>30</client-timeout> <header-timeout>15</header-timeout> <source-timeout>10</source-timeout> <!-- If enabled, this will provide a burst of data when a client first connects, thereby significantly reducing the startup time for listeners that do substantial buffering. However, it also significantly increases latency between the source client and listening client. For low-latency setups, you might want to disable this. --> <burst-on-connect>1</burst-on-connect> <!-- same as burst-on-connect, but this allows for being more specific on how much to burst. Most people won't need to change from the default 64k. Applies to all mountpoints --> <burst-size>65535</burst-size> </limits> <authentication> <!-- Sources log in with username 'source' --> <source-password>PASSWORD-DA-IMPOSTARE</source-password> <!-- Relays log in username 'relay' --> <relay-password>PASSWORD-DA-IMPOSTARE</relay-password> <!-- Admin logs in with the username given below --> <admin-user>NOME-UTENTE-ADMIN</admin-user> <admin-password>PASSWORD-UTENTE-ADMIN</admin-password> </authentication>
[...]
<!-- This is the hostname other people will use to connect to your server. It affects mainly the urls generated by Icecast for playlists and yp listings. --> <hostname>indirizzo.della.webradio.it</hostname> <!-- You may have multiple <listener> elements --> <listen-socket> <port>8000</port> <!-- <bind-address>127.0.0.1</bind-address> --> <!-- <shoutcast-mount>/stream</shoutcast-mount> --> </listen-socket>
[...]
<logging> <accesslog>access.log</accesslog> <errorlog>error.log</errorlog> <!-- <playlistlog>playlist.log</playlistlog> --> <loglevel>3</loglevel> <!-- 4 Debug, 3 Info, 2 Warn, 1 Error --> <logsize>10000</logsize> <!-- Max size of a logfile --> <!-- If logarchive is enabled (1), then when logsize is reached the logfile will be moved to [error|access|playlist].log.DATESTAMP, otherwise it will be moved to [error|access|playlist].log.old. Default is non-archive mode (i.e. overwrite) --> <!-- <logarchive>1</logarchive> --> </logging> <security> <chroot>0</chroot> <!-- <changeowner> <user>nobody</user> <group>nogroup</group> </changeowner> --> </security> </icecast>
Se avete modificato il file di configurazione ricordatevi di riavviare Icecast2 con il seguente comando:
sudo service icecast2 restart
A questo punto potrete andare in onda sulla vostra web radio, tramite l’utilizzo di appositi software. Al seguente link potete trovarne un elenco, dove si specifica quale sistema operativo è supportato: http://icecast.org/apps/
Nel mio caso ho scelto il software butt, perché avevo la necessità di trasmettere tutto l’audio del mio PC (grazie a “Missaggio Stereo” in Dispositivi di Registrazione) e butt si è rivelato il software più semplice e leggero per questo ambito.
N.B: Per andare in onda su Internet dovrete aprire la porta 8000 del vostro modem/router, altrimenti la web radio sarà accessibile solo localmente (all’interno della vostra rete domestica). Inoltre è consigliata la creazione di una pagina web con un player HTML5 che permetta di ascoltare la web radio senza software esterni (come Windows Media Player o VLC, scaricando un particolare file dal server).
Per fare ciò vi segnalo il seguente sito: http://www.shouthost.com/freeflashplayer/ dove impostando http://<indirizzo-web-radio:porta>/stream il check su “HTML5”, lo Stream Type su “Icecast” e l’eventuale “Auto start”, una volta premuto il tasto “Get Code” otterrete il player da inserire in una pagina HTML.