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:This email address is being protected from spambots. You need JavaScript enabled to view it..1.2:8000/vlc.ogg}'
 
-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:This email address is being protected from spambots. You need JavaScript enabled to view it..1.2:8000/vlc.ogg}'
 
·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:This email address is being protected from spambots. You need JavaScript enabled to view it..1.2:8000/vlc.ogg}'
 
-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:This email address is being protected from spambots. You need JavaScript enabled to view it..1.2:8000/vlc.ogg}}'
 
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:This email address is being protected from spambots. You need JavaScript enabled to view it..1.2:8000/vlc.ogg}}'