VideoLAN Streaming

VideoLAN es un proyecto que permite tanto visualizar como servir vídeos en forma de streaming y bajo demanda. Es una alternativa más completa a Flumotion, ya que soporta protocolos como RTSP y MMS muy útiles para dispositivos móviles como PDAs.

En esta receta no voy a entrar a explicar como funciona el cliente VLC ni nada por el estilo, para eso esta el manual de VideoLAN. Yo solo voy a hacer referencia a como utilizar el core vlm que permite ejecutar VLC como servidor. También he probado VLS como servidor, pero como en las últimas versiones de VideoLAN se ha quedado obsoleto no voy a hacer más referencia a él a no ser que alguien lo pida explícitamente.

Fichero de configuración

Lo primero será crearse el fichero de configuración del servidor. Éste fichero es un simple fichero de texto que puede llamarse de cualquier forma. La nueva sintaxis que han introducido los desarrolladores de VideoLAN es muy coñazo, así que yo creo que mejor explico cada ejemplo por separado.

Ejemplo Unicast

# VLC media player VLM command batch
# http://www.videolan.org/vlc/

### Prueba de Unicast (Cambiar el PC destino)
new prueba1 broadcast enabled loop
setup prueba1 input "/home/.../LOTR-CD3.avi"
setup prueba1 output #duplicate{dst=std{access=udp,mux=ts,dst=EQUIPO_DESTINO:4321}}
control prueba1 play

Lo primero son los comentarios, que como se ve son con la almohadilla. Este ejemplo es de unicast a EQUIPO_DESTINO. Aquí se pone la IP del host cliente al cual se quiere servir el vídeo. En la primera línea se crea un nuevo componente con "new" de nombre "prueba1", lo activamos con "enabled" y hacemos que se ejecute en bucle "loop".

En la segunda linea indicamos el vídeo fuente que se va a servir con "input". En la tercera indicamos que el protocolo que se utilizará sera "udp" utilizando el formato MPEG-TS "ts" y cuyo destino será "EQUIPO_DESTINO" al puerto "4321". Por último activamos el streming en el servidor con "play".

El cliente simplemente ejecutará en su host:

$ vlc udp://@:4321

O dentro del GUI "Abrir volcado de Red" en la pestaña UDP/RTP y elegir el puerto.

Ejemplo Broadcast

En el fichero de configuración incluimos lo siguiente:

### Prueba de BROADCAST (Solo PCs)
new prueba2 broadcast enabled loop
setup prueba2 input "/home/..../Matrix_f900.avi"
setup prueba2 output #standard{mux=ts,access=udp,dst=225.0.0.1,sap,name="Matrix Trailer"}
control prueba2 play

Este ejemplo es igual que el anterior, pero en el output indicamos una dirección multicast "225.0.0.1" y además incluimos un anuncio SAP del vídeo con el nombre "Matrix Trailer".

El cliente debe ejecutar:

$ vlc udp://@225.0.0.1

VoD

### Prueba de VoD con RTSP
new Test vod enabled
setup Test input "/home/...../prueba.mpg"

Este ejemplo es distinto a los anteriores porque el elemento que aquí se necesita es un "vod" en vez de un "broadcast". Como entrada sólo se necesita el vídeo que demanda el cliente.

El servidor se deberá ejecutar con las siguientes opciones:

$ vlc -vvv --color -I telnet --rtsp-host SERVIDOR_IP:5554

Y el cliente:

$ vlc rtsp://SERVER_IP:5554/Test

HTTP Streaming

### Prueba de HTTP Straming para la PDA
new PDA broadcast enabled loop
setup PDA input "/home/..../dekkers.avi"
setup PDA output #duplicate{dst=std{access=http,mux=ts,dst=EQUIPO_DESTINO:8080}}
control PDA play

Ahora en el output se utiliza el protocolo "http". Es igual que el primer ejemplo pero sobre el protocolo HTTP.

El cliente para visualizarlo:

$ vlc http://SERVER_IP:8080

MMSH de M$

### Prueba con MMSH
new procesado5 broadcast enabled loop
setup procesado5 input "/home/..../dekkers.avi"
setup procesado5 output #duplicate{dst=std{access=mmsh,mux=ts,dst=EQUIPO_DESTINO:5000}}
control procesado5 play

Igual que antes pero utilizando el protocolo "mmsh". Este protocolo también nos vale para el cliente ese raro "Media Player", o algo así creo que se llama.

Para cliente GNU/Linux:

$ vlc mmsh://SERVER_IP:8080

Para cliente mierdero (M$) desde el "Media Player" acceder a: mms://SERVER_IP:8080.

Post-procesado

Hasta aquí hemos configurado casi todos los protocolos posibles que nos permite utilizar VideoLAN. Pero hay veces que para determinados dispositivos móviles el bit-rate del streaming es demasiado alto y hay que reducirlo para poder verlos. En esta sección vamos a ver un par de ejemplos de como hacerlo.

### Prueba de post-procesado (reduccion del bit-rate) para PDAs
new procesado1 broadcast enabled loop
setup procesado1 input "/home/.../invalid_display_width.mpeg"
setup procesado1 output #transcode{vcodec=mp2v,vb=512,scale=1,acodec=mp2a,ab=192,channels=2}:duplicate{dst=std{access=http,mux=ts,dst=EQUIPO_DESTINO:8081}}
control procesado1 play

Igual que antes configurábamos para HTTP pero aqui antes de hacer el "duplicate" hacemos un "transcode" que consiste en reducir el ratio de video a 512k y el de audio a 192k. Para ello se ha utilizado los codecs mp2v y mp2a para video y audio respectivamente. Para ver que codecs hay disponibles empollate la documentación que hay mucha.

Otro ejemplo:

new procesado4 broadcast enabled loop
setup procesado4 input "/home/.../Matrix_f900.ogg"
setup procesado4 output #transcode{vcodec=theo,vb=128,scale=1,acodec=vorb,ab=64,channels=2}:duplicate{dst=std{access=http,mux=ogg,dst=EQUIPO_DESTINO:8084}}
control procesado4 play

¿ Todo claro ?. Vamos, creo que se explica por sí solo.

Un saludo, Arturo.

Referencias

Ejecución del servidor

Se me olvidaba que para ejecutar el servidor en modo "daemon" hay que hacer:

$ vlc -vvv --color --daemon -I telnet --vlm-conf prueba.cfg --ttl 2 --rtsp-host 0.0.0.0:5554

TODO

Elementos scheduled

Comentarios

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

cómo

Soy totalmente nuevo en esto. Descargué el vlc y me pareció un excelente reproductor. Quiero poner videos en la red pero no cuento con todos los conocimentos ni manejo todo el vocabulario específico. ¿Cómo puedo aprender sin molestar demasiado?

Desde ya muchas gracias

Imagen de int-0

Es maravillosa...

...sólo echa un vistazo: http://www.videolan.org/doc/

------------------------------------------------------------
$ python -c "print 'VG9udG8gZWwgcXVlIGxvIGxlYSA6KQ==\n'.decode('base64')"
------------------------------------------------------------

streaming remoto

Uqe protocolo debo usar para hacer streaming hacia un host remoto, es decir afuera de una LAN?

Hola

Me interesa mucho este hilo. Estoy pensando en servir en streaming 'videos' de mi pc mediante mi servidor ciego debian. No he usado mucho VLC la pregunta es si podria hacer streaming con mi pc (que tambien tiene sintonizadora) y replicar el streaming en el servidor ciego para sacarlo a internet.

Saludos

Imagen de Lk2

Pero como que

Pero hombre, como que proyecto "open source"? Es un proyecto libre en toda regla ..

Imagen de arturo

Antes de nada decir que me

Antes de nada decir que me gustaría discutir más sobre aspectos técnicos de VideoLAN y no sobre la denominación de origen de un proyecto. También agradezco al revisor/admin por "modificar" lo de "open source".

Bien, observando detenidamente la página oficial de videolan no veo por ningún lado que se refiera a este proyecto como "proyecto libre en toda regla". Que se distribuya mediante la licencia GPL no quiere decir que no sea "open source", sobre todo cuando hay tantas empresas importantes detrás de este proyecto, o también porque está inscrito en el sumer of code de google. Todo esto me lleva a considerar este proyetco como "open source".
También puede verse en la wikipedia como no hace distinción alguna entre "free software" y "open source". A mi por lo menos me parece poco riguroso, pero bueno. Si tu dices que es "libre en toda regla" de acuerdo, no voy a entrar en este tipo de discusiones que no llevan a ningún lado.

Un saludo, Arturo.

**********************************************************************************
Hay tontos que tontos parecen, hay tontos que tontos son, pero
hay una clase peor de tontos que hacen parecer tontos a los que
listos son.
**********************************************************************************

**********************************************************************************
Hay tontos que tontos parecen, hay tontos que tontos son, pero
hay una clase peor de tontos que hacen parecer tontos a los que
listos son.
*****************************

Imagen de admin

Obviamente

no estás obligado a conocer la diferencia, pero si para ti es lo mismo una cosa que otra, muchos usuarios de este portal de SOFTWARE LIBRE te agradeceremos que lo llames de ese modo y “las discusiones que no llevan a ningún lado” ni siquiera tendrán que empezar.

A esta asociación/colectivo/grupo/engendro le preocupa infinitamente más esa cuestión que los aspectos técnicos de ningún programa. Quizá debías tenerlo en cuenta.

De nada por lo de la edición, ese es parte del trabajo de los editores.

Gracias por la receta, siempre tocas temas muy interesantes.