Progetto #8 – Web radio con Raspberry PI

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:

  1. 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);
  2. 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 €);
  3. Adattatore WI-FI o cavo ethernet per collegare il Raspberry PI sulla rete;
  4. Il software Icecast2 (che ci permetterà di realizzare il server sul quale poi verrà trasmessa la nostra web radio);
  5. 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.

Missaggio Stereo - Web Radio su Raspberry PI

Missaggio Stereo – Windows 10

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.