Una radio open source

Posted On 05 Gen 2009
Comment: Off

linuxtutorialTutorial Linux – Basta davvero poco per trasmettere su Internet: grazie al contributo di alcuni appassionati è adesso possibile realizzare facilmente uno studio radiofonico. Occorrono un server di trasmissione e un client per l’encoder (il codificatore) che possono anche stare su un unico calcolatore, sebbene sia preferibile separare i sistemi per ottenere il migliore risultato.
Oltre al nome di dominio è bene dotarsi di una connessione con IP statico, non che siano strettamente necessari, ma evitano di dover notificare di volta in volta agli ascoltatori l’IP dal quale trasmettiamo. Poiché in Italia è ancora costoso procurarsi una connessione T1 vi suggerisco di appoggiarvi ad un buon ISP che offra connettività di alta qualità.
In figura 1 viene riportato lo schema di principio della stazione radiofonica digitale: la voce proveniente dai microfoni in formato analogico viene inviata ad un mixer che concentra il flusso verso il client dove risiede l’encoder costituito dal programma Liveice; mentre LAME si occupa della conversione da analogico a digitale della voce e degli altri ingressi. Il server di trasmissione esegue Icecast, che utilizzando un formato di trasmissione del flusso ed una porta TCP/IP convenzionalmente riconosciuta dai comuni riproduttori MP3 ci permetterà di spedire su Internet la nostra programmazione radiofonica.
L’aspetto più interessante è che processi differenti possono essere lanciati su calcolatori diversi configurati in maniera opportuna ottimizzando ad esempio la connessione di rete, le regole di filtraggio, il carico sulla CPU…) in modo che un servizio non inibisce l’altro.
Icecast è la controparte Linux del programma Shoutcast. Entrambi permettono di diffondere musica via Internet in tutto il mondo. E’ come avere la possibilità di ascoltare la vostra stazione radio preferita dovunque voi siate. Il formato musicale abitualmente impiegato per le trasmissioni è MP3 con un rateo dati di 32 o 64 kBps.
Questo rateo così basso è necessario per garantire un buon flusso senza disturbi. I riproduttori MP3 memorizzano in un buffer di alcuni secondi i flussi da riprodurre provenienti da Internet, per sopperire ad eventuali piccole interruzioni.
Il formato MP3 permette di ascoltare la programmazione musicale a chiunque abbia Xmms o Winamp. Al momento il materiale in questo formato non richiede licenza, in ogni caso è meglio verificare sul sito http://www.mp3licensing.com/ se la società che detiene il brevetto impone i diritti. In alternativa ci si potrà spostare sul su uno schema di codifica/decodifica differente, come Ogg Vorbis, che non è sottoposto a brevetto e quindi non prevede il pagamento di diritti.
A prescindere, ed è importante viste le ultime evoluzioni legislative proprio in Italia, la trasmissione al pubblico di materiale tutelato con i diritti d’autore va svolta nel pieno rispetto delle normative. Assicuratevi di avere il permesso per trasmettere i brani di cui non siete gli autori materiali.

 

 

L’installazione del server
L’installazione di Icecast non è particolarmente difficile. Per prima cosa occorre scaricare da Internet il programma, localizzato su http://icecast.linuxpower.org/. Scaricare la versione più recente e decomprimete il tutto:
tar zxvf icecast-1.x.x.tar.gz -C /tmp
cd /tmp/icecast-1.x.x/
Il programma va compilato digitando:
./configure
make
e come utente root installate il pacchetto:
make install
Questo comando copia tutti i file necessari al funzionamento su /usr/local/icecast. Il file di configuazione si trova in /usr/local/icecast/etc/icecast.conf. I settaggi più importanti sono:
# –first a few setting of the server and owner
#
#The location where the server is placed
location Music from the mars
#the owner’s email address
rp_email [email protected]
#The URL of the web page corresponding to the music
server_url http://www.linuxnetmag.de
[…]
#–You can administrate the icecast server via the network,
# this option is secured by a password
#normal clients should not be able to log in
client_password not_used
#The remaining passwords have to be changed
encoder_password mypassword
admin_password mypassword
oper_password mypassword
[…]
#The port icecast uses
port 8010
#The host name of the server
server_name my.computer.com
Lasciate stare gli altri parametri di configurazione, per il momento. Per lanciare il server per la prima volta, (come root sulla porta 8010), digitate:
/usr/local/icecast/bin/icecast -P 8010
Avrete qualcosa di simile al seguente output, se tutto è stato settato correttamente:
[09/Jan/2000:16:38:37] Icecast Version 1.3.0 Starting..
[09/Jan/2000:16:38:37] Using stdin as icecast operator console
[09/Jan/2000:16:38:37] Tailing file to icecast operator console
[09/Jan/2000:16:38:37] Server started…
[09/Jan/2000:16:38:37] Listening on port 8010…
[09/Jan/2000:16:38:37] Using [linux.ulisse.local] as servername…
[09/Jan/2000:16:38:37] Max values: 20 clients, 10 clients per
source, 10 sources, 5 admins
-> [09/Jan/2000:16:38:37] [Bandwidth: 0.000000MB/s] [Sources: 0]
[Clients: 0] [Admins: 1] [Uptime: 0 seconds]
->

 

Il sistema rimane in attesa di comandi, nel caso occorra configurare il server durante il suo funzionamento; digitando help, si ottiene una lista dei comandi disponibili in questo contesto.
Fino ad ora però, Icecast non invia musica perché non è ancora stato programmato per questo. Localizzate il file shout dentro /usr/local/icecast/bin/. Questo programma può essere avviato anche su un altro calcolatore sulla medesima rete; questo ha un senso perché dividendo il carico di lavoro tra il server che invia il flusso dati e quello che invece mantiene la lista di riproduzione si ripartisce meglio il carico di lavoro (ad esempio usando il secondo calcolatore, quello che funge da database MP3, anche per codificare in tempo reale in formato MP3 l’ingresso della scheda audio).
Pertanto, se lanciate shout sul medesimo server dove gira Icecast, il puntamento sarà a localhost, altrimenti occorrerà inserire l’indirizzo IP del server di riferimento. La porta sulla quale funziona Icecast di solito è la 8010, ma può ovviamente essere modificata secondo le esigenze.
Occorrerà poi stabilire una password utilizzata per il trasferimento dei file (parametrizzando admin_password in icecast.conf) e la directory dove sono residenti i file MP3.

 

Il comando che segue impartisce queste istruzioni tutte assieme:
/usr/local/icecast/bin/shout localhost -P mypassword -e 8010 /tmp/mp3/*
Se tutto funziona a dovere adesso shout inizierà a trasmettere musica a Icecast:
Playing /tmp/mp3/Alice_in_Fashionland.mp3
[2:38] Size: 2219520 Bitrate: 112000 (28455 bytes/dot)
[………………………………..
Mentre sulla consolle di Icecast vedremo l’esito della connessione:
-> [09/Jan/2000:17:37:57] Accepted encoder on mountpoint /monkey from localhost.
2 sources connected
-> [09/Jan/2000:17:37:57] Assigning listeners from pending source 3
-> [09/Jan/2000:17:37:57] Kicking source 3 [localhost] [Lost all clients to new
source]
[encoder], connected for 10 minutes and 19 seconds, 824214 bytes transferred. 2
sources connected
-> [09/Jan/2000:17:37:57] Kicking all 0 clients for source 3
->
Adesso possiamo ascoltare la musica sulla porta 8010 alla quale puntano di default tutti i player MP3, ad esempio, usando freeamp:
freeamp http://my.server.local:8010
il programma si connetterà automaticamente a Icecast. Per avere una riproduzione di qualità migliore suggerisco di usare Xmms (mediante il quale è anche possibile creare la propria playlist, approfondite leggendo le istruzioni di configurazione di questo programmino).

 

Per gli utenti di Windows occorrerà creare un link nella propria home page dalla quale si vuole trasmettere la musica, in modo da lanciare automaticamente il player MP3, un esempio del codice HTML da inserire potrebbe essere questo:
<a href=”shoutcast-playlist.pls”><img src=”tunein.gif” Border=0></a>
posizionando il file shoutcast-playlist.pls nella stessa directory dove risiede la pagina dalla quale lo state richiamando. Il file shoutcast-playlist.pls ha la medesima sintassi, sia per Xmms che per i player Windows:

numberofentries=1
File1=http://my.server:8010
L’installazione di Liveice è senza sorprese. Tuttavia, prima di iniziare occorre installare un codificatore MP3. Raccomando l’uso di Lame perché lavora egregiamente assieme a Liveice. Questo programma è reperibile all’indirizzo: http://www.sulaco.org/mp3/.
Dopo averlo scompattato digitando tar zxvf lame3.87beta.tar.gz -C /tmpoccorre compilare ed installare il pacchetto:
cd /tmp/lame3.87/
./configure
make
make install
Seguite la medesima procedura per Liveice (che potete prelevare da: http://star.arm.ac.uk/~spm/software/liveice.html):
tar zxvf liveice.tar.gz -C /tmp
cd /tmp/liveice
./configure
make
make install
e copiate la directory (come root) in /usr/local
cp -a /tmp/liveice /usr/local
Liveice può essere configurato tramite un’apposita interfaccia, il file di configurazione si trova nella directory /usr/local/liveice
cd /usr/local/liveice
./liveiceconfigure.tk

 

quindi impostate le seguenti opzioni:
-Serverspecifica il computer dove Icecast gira e al quale inviare l’audio. Nel caso sia il medesimo calcolatore dove fate lavorare il codificatore, scegliete localhost. Specificate anche la porta attraverso la quale il server ascolta il flusso dei dati;
-Impostate il formato PCM Audio a 32000Hz;
-Lo switch Soundcard deve essere selezionato. Se la vostra scheda audio supporta il full-duplex, cioè registra e manda in esecuzione contemporaneamente, attivate anche l’opzione omonima;
-Selezionate l’encoder, abbiamo detto LAME3 con un rateo di 32000 bit;
-poi impostate Soundcard only;
-nel campo Executables – Encoder inserite lame;
-Quindi salvate la configurazione nel file liveice.cfg ed uscite dal pannello di configurazione.
Come passo successivo occorre avviare Icecast, aprite una finestra terminale e digitate:
icecast
Dovreste visualizzare il seguente output:
Icecast Version 1.3.0 Starting…
Icecast comes with NO WARRANTY, to the extent permitted by law.
You may redistribute copies of Icecast under the terms of the
GNU General Public License.
For more information about these matters, see the file named COPYING.
[21/Oct/2000:00:47:33] Icecast Version 1.3.0 Starting..
[21/Oct/2000:00:47:33] Using stdin as icecast operator console
[21/Oct/2000:00:47:33] Tailing file to icecast operator console
[21/Oct/2000:00:47:33] Server started…
[21/Oct/2000:00:47:33] Listening on port 8010…
[21/Oct/2000:00:47:33] Using [muse.local] as servername…
[21/Oct/2000:00:47:33] Max values: 20 clients, 10 clients per
source, 10 sources, 5 admins
-> [21/Oct/2000:00:47:34] [Bandwidth: 0.000000MB/s] [Sources: 0]
[Clients: 0] [Admins: 1] [Uptime: 1 seconds]
->
Icecast è in attesa di ricevere il flusso dati. Per vedere l’elenco dei comandi, da consolle è sufficiente digitare ?, mentre per eseguirlo in background usate lo switch -b. In alternativa potete usare l’interfaccia web, richiamandola dall’url http://hostname:porta/admin/, dove hostname è il nome del vostro server (potete usare anche localhost) e porta il numero di porta definito nel file di configurazione icecast.conf. Assicuratevi di impostare una password, perché come impostazione predefinita, l’utility di amministrazione di Icecast basata sul web è aperta a qualsiasi sistema. Adesso lanciate LiveIce:
./liveice
e dovreste visualizzare il seguente output:
playlist
0
Initialising Soundcard
16Bit 32000Hz Stereo
opening connection to 192.168.1.13 8010
Attempting to Contact Server
connection successful: forking process
opening pipe!…
writing password
Setting up Interface
Soundcard Reopened For Encoding
Input Format: 16Bit 32000Hz Stereo
Output Format: 32000 Bps Mpeg Audio
IceCast Server: 192.168.1.13:8010
Mountpoint: liveice
Name: LiveIce Radio
Genre: Live
Url: http://www.miosituomusicale.local
Description: LiveIce

Press ‘+’ to Finish
Lvl: L: 5 R: 4
Il flusso dati viene spedito al server Icecast tramite Liveice:
-> [21/Oct/2000:00:51:58] Accepted encoder on mountpoint /icy_0 from linux.ulisse.local 1 sources connected
->

 

 

L’input di linea
Il mixer fornisce una vasta gamma di opzioni per l’input. Durante la trasmissione si possono scegliere quindi le sorgenti più diverse o i file MP3 già memorizzati sul disco fisso. Liveice richiede una qualità particolare per l’ingresso audio, se il volume di registrazione è troppo basso, non si sentirà nessun segnale in uscita, viceversa, se è troppo alto saturerà l’ingresso del mixer. Come nelle stazioni tradizionali, basterà ascoltarsi e regolare i valori per il risultato migliore. Come mixer software potete provare kmix, gmix o xqmixer.
Adesso la vostra stazione radiofonica è pronta.

 

 

Trasmissione audio/video
Un possibile impiego alternativo potrebbe essere quello di inviare l’audio in abbinamento ad una sorgente video. Esistono numerosi documenti sulla rete e articoli apparsi sulle riviste specializzate che spiegano come predisporre un server per lo streaming video. Ovviamente è possibile fruire i programmi ricevuti dalla scheda TV da qualsiasi parte ci si connetta, ma lo svantaggio deriva dall’impossibilità di trasmettere anche la componente audio. Se diffondete le immagini di una web-cam, il suono non è molto importante, ma cos’è una trasmissione televisiva senza audio?
Dando per scontata quindi questa configurazione di base, potrete trasmettere in contemporanea l’audio scegliendo il bottone Rec. sotto la parte di mixer che riguarda la sorgente (CD, Line-In oppure microphone) che desiderate gestire. Dal lato dell’ascoltatore occorre oltre al browser un qualsiasi riproduttore MP3 che sia interfacciabile ad Icecast (per esempio xmms, freeamp, mpg123).
mpg123 http://my.server.local:8010
E’ molto importante specificare la porta di lavoro corretta. Adesso potrete ricevere il video proveniente dalla scheda TV ed il relativo audio ovunque voi siate semplicemente contattando il vostro server.
La codifica in tempo reale è più efficiente rispetto alla semplice riproduzione di un file MP3, che invece soffre il ritardo di riproduzione e quindi si avverte la mancanza di sincronia tra audio e video. Si può ovviare aumentando il numero di refresh ad almeno 20 per secondo, ma questo comporta un carico elevato di traffico sulla rete locale. Qualcuno quindi ripiega facendo partire in ritardo il segnale video, in modo da sincronizzarlo con il momento della riproduzione MP3, sebbene in questo giochi ancora un ruolo il riproduttore MP3 dal lato client.

 

 

Riferimenti:
-http://www.sulaco.org/mp3/
-http://star.arm.ac.uk/~spm/software/liveice.html
-http://www.icecast.org/
-http://www.opensourceradio.com
-http://www.mclink.it (un buon provider al quale richiedere servizi IP);
-http://www.shoutcast.com (per ascoltare buona musica);

About the Author

Related Posts