MP3 audio streaming


Icecast

Istallazione

Icecast può essere installato come un normale port di FreeBSD.

ATTENZIONE: la versione attuale di icecast (con patch di kame) presenta dei problemi con gli algoritmi di crittografia (DES). Dovrebbe essere sufficiente specificare l’opzione -without-crypt nel Makefile. Nella versione installata tale opzione non è sufficiente a risolvere il problema. Pertanto ho modificato la funzione password_match nel file utility.c. in modo che restituisca sempre 1 (questa funzione verifica che la passwd sia corretta). Questo consente di accedere al server (sia sorgenti che utenti) con una password qualsiasi (con ovvi limiti di sicurezza).

Inoltre per utilizzare icecastctl (vedi utilizzo) è necessario modificare il main.c in modo che scriva sul $PIDFILE di icecastctl (attualmente /var/run/icecast.pid) il pid corrente.

Utilizzo

La versione attuale di icecast (1.1.4) non supporta sorgenti IPv4 e sorgenti IPv6 contemporaneamente. E’ pertanto indispensabile specificare quale tipo protocollo utilizzano le sorgenti con l’opzione -4 (IPv4) o -6 (IPv6).

Affinchè icecast invii in uscita il traffico in multicast è necessario settare il parametro mcast_dest <multicast_address> nel file di configurazione. Anche mcast_hlim deve essere settato per indicare valore di hop limit utilizzato da icecast per i pacchetti multicast: se questo paramentro non viene specificato il valore di default è 1 (utile solo se non si devono attraversare mrouter).

Icecast può essere utilizzato in modalita interattiva o background. Per selezionare la modalita modificare la direttiva console_mode nel file di configurazione (che può essere specificato con l’opzione -c).

In modalita interattiva è possibile verificare lo stato delle connessioni delle sorgenti, dei client, e modificare la configurazione del server. Per un elenco completo dei comandi a disposizione editare help al prompt di icecast in modalita interattiva.

Se si intende utilizzare il server in background (console_mode = 3) è comodo utilizzare lo script di shell icecastctl . Con questo script è possibile far partire (sorgenti IPv4 o sorgeti IPv6), fermare, e far ripartire il server, verificarne lo stato corrente e modificare il file di configurazione.

Nel caso si utilizzi icecastctl è indispensabile settare console_mode = 3. Per una descrizione dettagliata delle opzioni di icecastctl lanciare il comando icecastctl -help.

E’ possibile interagire con il server utilizzato in modalita’ background (in pratica utilizzando la stessa interfaccia a linea di comando della modalita’ interattiva) con un telnet <address> <admin_port> dove per admin port si intende la porta indicata con il parametro admin_port nel file di configurazione. Non viene richiesta alcuna password (vedi installazione) pertanto e’ sufficiente dare <invio> al prompt del telnet.


Shout

Installazione

Si installa automaticamente installando icecast (si trova in <icecast_install_dir> /work/icecast[versione]/shout).

 

Utilizzo

    shout <icecast_server_addr> -C <config_file> -I <out_interface> -M <multicast_info_addr>

Dove:

Note

E’ consigliabile utilizzare altre soluzioni per generare flussi mp3 per un server Icecast, dal momento che shout non produce dei flussi di buona qualita (interruzzioni dell’audio in ricezione).


Winamp

Grazie ad un particolare plugin, winamp può essere utilizzato come sorgente di flussi mp3 di un server icecast. Produce flussi audio decisamente più ‘stabili’ di quelli prodotti da shout e mette a disposizione tutte le funzionalita di winamp (ad esempio possibilita di utilizzare un microfono come sorgente, generazione di pagine HTML di descrizione, etc). Per utilizzare tcpv6, installare winamp su una macchina dotata di BIS.

 

Installazione ed utilizzo

Dopo aver installato winamp con la normale procedura di installazione, installare il plugin SHOUTcast source (icecast è un clone di un server chiamato shoutcast), appartenente alla categoria di plugin DSP/effect. L’istallazione del plug-in consiste nello scompattrare il plugin nella directory <winamp_dir>/plugins. Le ultime release di questo plugin (dsp150b2.exe) sono in formato autoscompattante. Dopo aver installato il plugin, lanciare winamp (se è aperto, chiuderlo e rilanciarlo) e in Options->Preferences abilitare il plugin. Appare una piccola icona nella taskbar che consente di accedere ad una finestra di configurazione di parametri quali l’indirizzo e la porta del server icecast, qualita dell’audio, etc. Inseriti i parametri cliccare cu connect ed aspettare che la connessione venga stabilita. A questo punto utilizzare winamp normalente: i brani mp3 ascoltati vengono inviati anche al server icecast.

Se non si vuole sentire l’audio sulla stazione sorgente, installare anche il NULL output plugin (output plugin). Questo può essere utile su stazioni non dotate di sistema audio.

ATTENZIONE: per utilizzare winamp come sorgente per un server icecast è necessario disporre di un codificatore mp3. Verificare se è gia presente nel sistema in Control Panel -> Multimedia -> Devices -> Audio Compression Codec: deve essere presente un "Fraunofer IIS MPEG Layer-3 Codec". L’ unico modo di installarlo è di installare il MS NetShow (un utility per codificare file mp3, editarne i tag, creare presentazioni multimediali).

Note

Winamp può anche essere utilizzato per ricevere un flusso IPv4 di una radio (ad esempio vedere in shoutcast.com) ed inviarlo al server icecast.


Mcastread

Per la ricezione di flussi mp3 su IPv6 multicast può essere utilizzato l’applicativo (per piattaforma FreeBSD) mcastread.

 

Installazione

Nelle ultime release di Kame viene automaticamente installato con gli applicativi.

 

Utilizzo

Mcastread riceve un flusso multicast senza interpretarlo in alcun modo, ed inviandolo allo standard output. Per ascoltare un brano mp3 ricevuto da un server remoto su ipv6 multicast, è pertanto necessario utilizzare, tramite pipe, un applicativo in grado di riprodurre un brano mp3.

Un esempio di utilizzo può essere:

         mcastread -v <interface> <IPv6_mcast_addr> <port> | mpg123 -

Dove