Icecast és un servidor d'streaming de formats multimèdia de la fundació xipgh.org . Actualment suporta audio mp3 i ogg vorbis , i video en theora . Icecast, entre moltes altres coses, ens permet de forma senzilla montant-se la nostra pròpia emisora de ràdio per Internet, bé sigui en directe o amb una playlist amb la música emmagatzemada al nostre disc dur.
L'esquema funcional de la ràdio que es monta en aquest document amb Icecast és el mostrat per la imatge. On tenim el servidor d'streaming, que serà Icecast, un client que ens genera la font a emetre (source client, o streamer), i finalment el(s) client(s) que rebràn l'audió retransmès per Icecast. Totes aquestes comunicacions es fan per http. Podem imaginar l'streamer com l'estudi de ràdio on s'enregistra el sò i s'envia a un repetiodor de ràdio. La funció d'aquest la faria el servidor d'streaming, que envia el sò rebut als usuaris, que serien com els aparells de ràdio que simplement es limiten a “sintonitzar” una emisora concreta i reproduir-la. En el cas d'Icecast podem tenir varis streamers enviant fluxs d'àudio a un mateix servidor d'streaming, i aquest fent streaming d'aquest diferents audios simultàneament.
Per als tres elements del sistema tenim vàries opcions, algunes lliures i altres no. Partint de la base que volem montar un servidor Icecast, veiem algunes de les opcions que tenim per als altres dos elements:
·Source Clients:
-ices
-vlc
-muse
-winamp (amb plugins)
...
·Clients:
·xmms
·vlc
·winamp
....
Més info .
Per tal de montar la nostra pròpia ràdio, la feina està bàsicament en configurar el servidor d'stremaing Icecast, i el(s) source client. Primer de tot doncs, veiem com configurar de forma bàsica el servidor. (NOTA: Tots els passos que es mostren a continuació s'han fet amb màquines Ubuntu).
·INSTAL·LACIÓ i CONFIGURACIÓ de ICECAST2: (ubuntu feisty server)
Primer instal·lem l'icecast:
apt-get install icecast2 |
L'instal·lació ens haurà creat el directori /etc/icecast2, on tenim tots els fitxers de configuració. En el directori /var/log/icecast2, com sempre, hi tindrem els fitxers logs. I finalment, /usr/bin/icecast2 l'executable.
En el directori /etc/icecast2 hi trobem el fitxer icecast.xml, on configurem els paràmetres del servidor streaming. En principi, amb la configuració per defecte, ens hauria de funcionar, però l'adaptem una mica:
-Canviem els passwords que ens venen per defecte en la part 'authentication': Els streamers (o sources, o clients font) es connecten al servidor amb el nom d'usuari 'source', el password d'admin és el que utilitzarem com administradors en l'accés web, i el relay, és el password que utilitzen els relays (en el nostre cas no utilitzem aquesta funció, però és aconsellable canviar el password):
<authentication> <source-password>nou_password_source</source-password> <relay-password>nou_password_relay</relay-password> <admin-user>admin</admin-user> <admin-password>nou_password_admin</admin-password> </authentication> |
<listen-socket> <port>8000</port> </listen-socket> |
<hostname>poperbu.homedns.org</hostname> |
<paths> <basedir>/usr/share/icecast2</basedir> <logdir>/var/log/icecast2</logdir> <webroot>/usr/share/icecast2/web</webroot> <adminroot>/usr/share/icecast2/admin</adminroot> <alias source="/" dest="/status.xsl"/> </paths> |
<limits> <clients>10</clients> ...... </limits> |
Hi ha molts més paràmetres que ens permeten configuracions més complexes, o que ens permeten adaptar-les més segons les necessitats que tinguem:
http://www.icecast.org/docs/icecast-2.3.1/icecast2_config_file.html
Un cop tenim la configuació bàsica enllestida, podem posar en marxa el servidor. Primer però, editem el fitxer /etc/default/icecast2 i posem el valor “ENABLE=true”. Ara ja podem posar en marxa el servidor icecast:
/etc/init.d/icecast2 start |
Ara si des del navegador accedim a http://ip_Servidor:8000, s'ens mostrarà la interficie web d'icecast. On podem administrar mínimament el servidor, i veure'n l'estat.
·INSTAL·LACIÓ i CONFIGURACIÓ de SOURCE CLIENTS per a ICECAST2:
Ara que tenim el servidor IceCast funcionant, aquest està esperant que algun source client (streamer) li “injecti” algun flux multimèdia per tal de retransmetre'l cap els clients. Com ja hem dit, per montar aquests sources tenim vàries opcions. Ices és la opció que ens ofereix el mateix icecast. Però també tenim les opcions de winamp (amb un plugin especial), muse, videolan, darkice, ezstream,etc.. Aquest source client tant pot ser la mateixa màquina on hi ha corrent el IceCast, com una altra màquina, ja que la comunicació es fa per tcp.
En el nostre cas veurem 2 d'aquestes opcions: darkIce (+darksnow) i ezstream:
DARKICE i DARKSNOW:
En aquest cas, volem montar una radio en directe, per tant darkice capturarà el sò del dispositiu d'entrada d'audio (/dev/dsp), ho montarem al mateix servidor on hi ha l'IceCast. DarkIce ens permet transmetre fluxes de ogg o bé mp3 cap el IceCast.
Instal·lem DarkIce :
apt-get install darkice |
Seguidament hem d'editar (crear) el fitxer de configuració de darkice per tal de que es pugui comunicar amb el servidor Icecast (/etc/icecast2/darkice.cfg):
[general] duration = 0 # duration of encoding, in seconds. |
darkice -c /etc/icecast2/darkice.cfg |
I des de qualsevol client ja podem escoltar la ràdio en directe. En el cas de vlc: menu fitxer, obre flux de xarxa, marquem checkbox de http, i introduïm l'adreça del servidor streaming seguit del punt de muntatge que hem definit a darkIce: 192.168.1.2:8000/test.
Darksnow és un GUI per darkice, que fa que la configuacció del darkice sigui molt més senzilla (sempre i quan tinguem les x's funcionant).
Instal·lem i executem darksnow:
apt-get darksnow darksnow |
I a través de les pestanyes configurem el source:
Un cop configurats tots els paràmetres, cliquem a “start streaming”. I, al igual que en el cas anterior, des de qualsevol client podem accedir al servidor.
EZSTREAM
Ezstream és un dels client sources que té icecast.org. Aquest, va per línia de comandes, i la principal característica és el poc consum de cpu que té. Ens permet tant format ogg com mp3, en el meu cas com que tinc quasi tota la música en mp3, aquest source client, m'anirà de conya. (Ices2, només permet ogg, encara que ices0 sí que permet mp3). Amb ezstream deixarem una playlist com a font del streaming. Per tant sempre ens sonarà alguna cosa a la ràdio.
Primer baixem i instal·lem ezstream:
(haurem d'instal·lar algunes dependències, amb apt les he pogut instal·lar totes).
wget http://downloads.xiph.org/releases/ezstream/ezstream-0.4.0.tar.gz mv ezstream-0.4.0.tar.gz /usr/local/src tar xvfz ezstream-0.4.0.tar.gz cd ezstream-04.0 ./configure make make install |
<ezstream> <url>http://localhost:8000/test.mp3</url> <sourcepassword>passwor_de_source</sourcepassword> <format>MP3</format> <filename>/etc/icecast2/samples/example1.mp3</filename> <svrinfoname>musa Stream</svrinfoname> <svrinfourl>http://musa.poperbu.net</svrinfourl> <svrinfogenre>prova</svrinfogenre> <svrinfodescription>provant ezstream</svrinfodescription> <svrinfobitrate>192</svrinfobitrate> <svrinfoquality>4.0</svrinfoquality> <svrinfochannels>2</svrinfochannels> <svrinfosamplerate>44100</svrinfosamplerate> <svrinfopublic>1</svrinfopublic> </ezstream> |
ezstream -c /etc/icecast2/ezstream.cfg |
Amb qualsevol client, podem comprovar el funcionament, connectant-nos al punt de montatge indicat per ezstream, en aquest cas test.mp3:
Un cop hem comprovat que fa l'streaming bé, ara el que ens interessa és crear una playlist, amb tota la música que tenim i volem escoltar des de qualsevol lloc. Per tant, com que ezstream ens permet passar-li una llista, creem una llista amb tota la música que volem retransmetre, en format .m3u. Això ho podem fer automàticament amb qualsevol reproductor, com per exemple xmms. Modifiquem el fitxer de configuració del ezstream, i substituïm el fitxer mp3 per la playlist, en el nostre cas /etc/icecast2/musa_radio.m3u:
<ezstream> <url>http://localhost:8000/radio_musa</url> <sourcepassword>password_de_sources</sourcepassword> <format>MP3</format> <filename>/etc/icecast2/musa_radio.m3u</filename> <svrinfoname>musa radio</svrinfoname> <svrinfourl>http://musa.poperbu.net</svrinfourl> <svrinfogenre>de tot una mica</svrinfogenre> <svrinfodescription>musa's radio</svrinfodescription> <svrinfobitrate>192</svrinfobitrate> <svrinfoquality>4.0</svrinfoquality> <svrinfochannels>2</svrinfochannels> <svrinfosamplerate>44100</svrinfosamplerate> <svrinfopublic>1</svrinfopublic> </ezstream> |
Tornem a executar ezstream per enviar el flux d'audio de la llista de reproducció cap al servidor icecast:
ezstream -c /etc/icecast2/ezstream.cfg & |
I ja tenim la nostra radio funcionant, i repdroduint la nostra llista continuament:
Doncs ja hem vist com configurar una ràdio a través d'Internet, bé sigui en directe, com hem vist en el cas de DarkIce, o bé a través d'una playlist amb Ezstream. Tots els programes els hem utilitzat d'una forma molt bàsica, hi ha molts paràmetres configurables en tots els casos per ajustar les configuracion més adients en cada cas. Així, com també hi ha moltes més solucions per fer de client source de Icecast que no hem vist en aquest minihowto, com són vlc, muse, ices, winamp, i altres.