Il seguente tutorial spiega come configurare un server di streaming radio IceCast e riprodurre file audio (musica o podcast) sulla piattaforma FreeBSD. Questo tutorial presuppone che tu stia eseguendo FreeBSD 10.0 o versioni successive e che tu abbia effettuato l'accesso come utente root. Si presupponeva inoltre che si dispone di un editor di testo per modificare i file di configurazione.
Prima di iniziare, è importante comprendere le tre parti di un server di streaming audio. Innanzitutto, abbiamo il software server stesso, IceCast. IceCast si comporta come un hub centrale in cui i flussi audio entrano e vengono inviati. Il servizio IceCast accetta flussi audio dai client di origine. I client di origine sono programmi che leggono file audio o altre fonti audio, come i microfoni. Nel nostro esempio, il client di origine è Ices e fornisce un flusso audio al server IceCast. Il terzo componente è un client in ascolto. I flussi audio viaggiano dal server IceCast agli ascoltatori che ascoltano l'audio. In genere un client in ascolto è un'applicazione desktop, ad esempio un browser Web, il lettore multimediale VLC o WinAMP. Visivamente, la disposizione è simile alla seguente:
Source client (Ices) --> IceCast server --> Listening client (browser)
Per configurare un server di streaming IceCast su FreeBSD, installiamo prima il software server stesso. Questo può essere fatto eseguendo il seguente comando.
pkg install icecast2
Quindi apriamo il /etc/rc.conf
file e abilitiamo il servizio in background IceCast. Questo viene fatto aggiungendo il seguente testo in fondo al /etc/rc.conf
file.
icecast_enable="YES"
Il prossimo passo è configurare il servizio IceCast. Il pacchetto IceCast viene fornito con un file di configurazione di esempio che è possibile modificare. Questo file di esempio si trova nella /usr/local/etc
directory. Faremo una copia di questo file di esempio prima di modificarlo.
cd /usr/local/etc
cp icecast.xml.sample icecast.xml
Vogliamo ora modificare alcuni campi chiave del icecast.xml
file. La maggior parte del file può essere lasciata con le impostazioni predefinite, ma dovremmo modificare le informazioni di accesso. Possiamo farlo visitando l'autenticazione sezione (in corrispondenza della linea 30) e la modifica della sorgente della password e trasmettere password- a qualcosa di appropriato. Queste password ci consentiranno di trasmettere i dati al server IceCast da un client di origine. Dovremmo anche modificare le variabili admin-user e admin-password in qualcosa di unico per il nostro sistema. Queste due credenziali proteggono l'interfaccia basata sul web del server IceCast. Quindi, verso la riga 150, dovremmo cambiare le variabili mount-name , username ela password . Queste tre variabili proteggono il punto di montaggio del server IceCast. Infine, nella parte inferiore del icecast.xml
file dovremmo vedere una sezione di sicurezza che è stata commentata. Dovremmo rimuovere i simboli di apertura <- e chiusura -> dal paragrafo di sicurezza . Una volta che il icecast.xml
file è stato modificato, salvare il file.
Una volta che il file di configurazione è stato modificato, vogliamo abilitare la registrazione. Per fare ciò, eseguire i seguenti comandi.
mkdir /var/log/icecast
chown nobody:nogroup /var/log/icecast
Infine, avviamo il server IceCast, questo fa sì che il server ascolti le connessioni client in entrata e in ingresso.
service icecast2 start
Il server IceCast è attivo e funzionante, quindi ora dobbiamo fornire qualcosa per giocare. Il prossimo passo è installare il client di origine Ices. FreeBSD al momento non offre un pacchetto binario per Ices, quindi dobbiamo costruirlo dalle porte. Questo può essere fatto eseguendo i seguenti comandi.
portsnap fetch
portsnap extract
cd /usr/ports/audio/ices
make install
make clean
Il client di origine Ices avrà bisogno di un account utente e registrazione. Per creare un utente per il software Ices e impostare una password sull'account, eseguire questi comandi.
pw groupadd ice
pw useradd ices -g ice -m
passwd ices
Con l'utente creato, ora possiamo abilitare la registrazione per Ices.
mkdir /var/log/ices
chown ices:ice /var/log/ices
Da qui in poi, non dovremmo più avere bisogno dell'accesso come utente root e possiamo operare come utente ghiacciato . Successivamente, dobbiamo creare due directory. Una directory, music
conterrà i file audio che stiamo per trasmettere. La seconda directory, conf
conterrà i nostri file di configurazione.
su ices
cd /home/ices
mkdir music conf
cp /usr/local/share/ices/ices-playlist.xml conf/configuration.xml
Ora abbiamo un file di configurazione di esempio in atto. È tempo di modificare il conf/configuration.xml
file per adattarlo al nostro ambiente. Le uniche parti del file che è necessario modificare sono verso il basso intorno alla riga 60. Qui è necessario fornire la password e la posizione di montaggio impostate nel icecast.xml
file. Ad esempio, se impostiamo il nome del nostro mount nel icecast.xml
file /radio.ogg
, allora dovremmo cambiare anche configuration.xml
il parametro mount del nostro file /radio.ogg
. Il nostro campo passwordconfiguration.xml
deve corrispondere alla password di origine che abbiamo creato nel icecast.xml
file. Una volta che il nostro configuration.xml
file è stato modificato, dovremo salvare le nostre modifiche.
Con il file di configurazione in atto, il passo successivo dovrebbe essere quello di copiare i file audio che desideriamo trasmettere nella music
directory. Tutti i file audio devono essere in .ogg
formato poiché IceCast non gestirà i .mp3
file con le impostazioni predefinite. Una volta che tutti i file audio che desideriamo trasmettere siano nella music
directory, dobbiamo creare una playlist. Una playlist è un semplice file di testo con un elenco della musica che vogliamo trasmettere in streaming. Possiamo facilmente creare una playlist con i seguenti comandi.
cd /home/ices/conf
ls -d ../music/*.ogg > playlist.txt
I file audio verranno riprodotti nell'ordine in cui compaiono nel playlist.txt
file. Il file può essere modificato in qualsiasi editor di testo per regolare l'ordine dell'audio in streaming.
Tutto ciò che dobbiamo fare per iniziare lo streaming dei nostri file audio è eseguire questo comando.
ices configuration.xml
Nota a margine: spesso potremmo voler eseguire il client sorgente Ices e quindi disconnetterci e andare a fare qualcos'altro. In tal caso, mi piace eseguire Ices all'interno di una sessione dello schermo . Ecco un esempio su come eseguire i ghiacci con lo schermo.
screen
cd /home/ices/conf
ices configuration.xml
Quindi premi Ctrl + A e tocca il tasto D. Ciò scollegherà la sessione dello schermo e ci consentirà di disconnetterci mentre Ices riproduce l'audio in background. In seguito, possiamo bloccare Ices accedendo ed eseguendo:
screen -r
killall ices
exit
Ora possiamo collegarci al nostro server sulla porta 8000 in un browser Web per ascoltare il nostro flusso audio. L'URL apparirà http://myservername:8000
. Questo indirizzo può essere reso pubblicamente disponibile se si desidera consentire ad altri di ascoltare lo streaming.
In precedenza, ho detto che IceCast riproduce .ogg
file e non .mp3
. Questo è abbastanza facile da superare su FreeBSD. Come utente root, possiamo installare uno strumento di conversione, chiamato sox , che convertirà i nostri .mp3
file in .ogg
file. Supponendo che tutti i nostri .mp3
file siano nella /home/ices/music
directory, possiamo installare sox ed eseguire una conversione come segue:
pkg install sox
cd /home/ices/music
for i in *.mp3; do sox ./"$i" ./"$i".ogg; done
Possiamo quindi aggiornare la nostra playlist usando:
cd ../conf
ls -d ../music/*.ogg > playlist.txt
Tieni presente che lo streaming audio può richiedere molta larghezza di banda. Uno o due client che ascoltano la nostra stazione radio non richiedono molta larghezza di banda, ma 50 o più client potrebbero spingere un server sulla sua larghezza di banda mensile assegnata. È una buona idea abilitare il limite di larghezza di banda sul server di streaming per evitare costi finanziari imprevisti.