16/07/2010->New version
VLC a part de ser un excelent reproductor multimèdia per a diferents plataformes, també ens permet fer streaming amb múltiples protocols i té moltíssimes possibilitats. Una d'aquestes, és la possibilitat de fer de source client d'Icecast, en un esquema com aquest. Des de vlc com a source client, podem fer streaming de fitxers d'audio, audio en directe, fitxers de video i video en directe amb qualsevol dispositiu de captura de vídeo. Amb Icecast, hem de tenir en compte que així com es pot fer streaming d'audio tant en ogg com en mp3, en el cas del vídeo només podem enviar flux al servidor en format theora .
Per fer-ho doncs, primer hem de tenir el servidor (en el nostre cas Ubuntu Feisty Server) amb Icecast funcionant, i el client (en el nostre cas Ubuntu Edgy Eft) amb vlc instal·lat. En aquest post veiem com configurar el client source amb vlc, per tal de fer streaming d'audio i video amb Icecast.
·INSTAL·LACIÓ DE VLC:
Lo normal és tenir instal·lat vlc a des del gestor de paquets:
apt-get install vlc |
El problema és que amb el paquet que ens instal·la vénen unes opcions d'instal·lació per defecte que no són les que necessitem. Per fer de source client d'Icecast, vlc necessita estar instal·lat amb el mòdul access_output_shout activat. Per mirar si tenim aquest aquest mòdul activat a la nostra instal·lació:
vlc -l | grep shout VLC media player 0.8.6 Janus playlist New winamp 5.2 shoutcast import shout Shoutcast radio listings shout Shoutcast TV listings |
Veiem que no hi és. Així doncs necessitarem instal·lar vlc des del codi font. Per tal de no estar pendents d'actualitzacions el que podem fer és deixar instal·lat el paquet apt, i fer una instal·lació d'un altre client vlc totalment separada. Primer baixem i descomprimim el codi font de vlc:
wget http://download.videolan.org/pub/videolan/vlc/0.8.6a/vlc-0.8.6a.tar.gz mv vlc-0.8.6a.tar.gz /usr/local/src/. cd /usr/local/src tar xvfz vlc-0.8.6a.tar.gz |
Alhora de compilar, podem fer-ho amb moltíssimes opcions, per veure-les:
cd /usr/local/src/vlc-0.8.6a/ ./configure --help `configure' configures vlc 0.8.6a to adapt to many kinds of systems. Usage: ./configure [OPTION]... [VAR=VALUE]... To assign environment variables (e.g., CC, CFLAGS...), specify them as VAR=VALUE. See below for descriptions of some of the useful variables. ....... |
Primer instal·lem els paquets necessaris per construir vlc:
apt-get build-dep vlc; |
A la llista de opcions, hem de mirar quins mòduls, codecs, opcions, ... van instal·lats per defecte i quins no. Els que necessitem seran els mòduls següents: codec theora, el mòdu v4l que ens permetrà accedir a dispositius de camptura de video a través de v4l, el mòdul dvb en el cas de que volguem accedir a la tarja de tv, i el mòdul shout , que ja és el que ens permet que vlc fagi de source client d'Icecast. També indicarem que volem fer la instal·lació en el directori /opt/vlc-0.8.6a. Amb aquestes opcions compilem i instal·lem el vlc:
./configure --prefix=/opt/vlc-0.8.6a/ --exec-prefix=/opt/vlc-0.8.6a/ --enable-theora --enable-shout --enable-v4l --enable-dvb make make install |
Un cop finalitzat, per accedir a aquesta segona instal·lació de vlc, hem d'executar vlc des de /opc/vlc-0.8.6a/bin. Comprovem que efectivament el mòdul shout està activat en aquesta instal·lació:
cd /opt/vlc-0.8.6a/bin/ musa@akira:/opt/vlc-0.8.6a/bin$ ./vlc -l | grep shout VLC media player 0.8.6a Janus access_output_shout IceCAST output playlist New winamp 5.2 shoutcast import shout Shoutcast radio listings shout Shoutcast TV listings |
Si executem vlc, s'ens obrirà la seva interfíce gràfica. Fem click a 'Paràmetres'-> 'Preferències' i se'ns obrirà la pantalla de preferències al menú de l'esquerra selecconem 'Flux de Sortida' -> 'Sortida d'Accés' -> 'Shoutcas'. Aquí podrem configurar el nom del flux i la descripció d'aquest:
VLC, com ja hem comentat, ens permet combinar les moltíssimes possiblitats que ens ofereix. Però aquesta flexibilitat i possibilitats, s'aconsegueix executant vlc des de la consola (en el nostre cas /opt/vlc-0.8.6a/bin/vlc). A continuació veurem com fer diferents tipus d'streaming tant d'àudio com de vídeo amb vlc cap a Icecast.
El mòdul shout de vlc té la següent sintaxis:
standard{access=shout,mux=ogg, url=source:password_de_source@ip_servidor_icecast:port_icecast/punt_de_muntatge}'.
En el nostre cas la ip del servidor és 192.168.1.2, el port icecast el 8000. Per accedir als streamings, podem obrir qualsevol client, per exemple vlc, i reproduir http://ip_servidor:pot_icecast/punt_montatge.
A continuació es mostren alguns exemples. Són molt bàsics, i per tant s'hauries d'afinar a les nostres necessitats i/o limitacions tant de cpu, memòria, ampla de banda, etc.. Per accedir als exemples que es mostren a continuació només cal que obrim amb vlc el flux de xarxa del sevidor icecast: http://192.168.1.2:8000/vlc.ogg (en el nostre ca):
·STREAMING d'AUDIO:
-Fitxer mp3 el passem a ogg i en fem streaming cap icecast:
musa@akira:/opt/vlc-0.8.6a/bin$./vlc -vvv /media/sda5/music/ALTERNATIVE/06__BULLET_PROOF.MP3 --sout '#transcode{acodec=vorbis,ab=128}:standard{access=shout,mux=ogg, url=source: |
-Audio en directe des del micro (/dev/dsp):
musa@akira:/opt/vlc-0.8.6a/bin$./vlc -vvv v4l:/dev/dsp --sout '#transcode{acodec=vorbis,ab=128}:standard{access=shout, mux=ogg,url=source: |
·STREAMING VÍDEO:
-Fitxer de video (ja en format theora):
musa@akira:/opt/vlc-0.8.6a/bin$./vlc -vvv /home/musa/Desktop/ICECAST/streaming_video2 --sout '#standard{access=shout,mux=ogg,url=source: |
-Video en directe des de la webcam (en el nostre cas /dev/video0). També podria ser la capturadora de vídeo (/dev/video ??). En aquest cas dupliquem la sortida, una que ens mostri per la pantalla del client-source lo que estem enviant, i l'altre envia el flux a Icecast. A més haurem de fer la transformació del video a theora amb l'opció transcode. vb ens indica el bitrate.:
musa@akira:/opt/vlc-0.8.6a/bin$./vlc -vvv v4l:/dev/video0 --sout '#transcode{vcodec=theo,vb=1024}:duplicate{dst=display,dst=std{access=shout, mux=ogg,url=source: |
Sortida source client:
Sortida client:
-Video i audio en directe des de la webcam i el micro. Haurem de fer el transcode tant de l'audio (a vorbis) com del vídeo (theora):
musa@akira:/opt/vlc-0.8.6a/bin$./vlc -vvv v4l://:v4l-vdev="/dev/video0" :v4l-adev="/dev/dsp" --sout '#transcode{vcodec=theo,vb=1024,acodec=vorbis, ab=128}:duplicate{dst=display,dst=std{access=shout,mux=ogg, url=source: |