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 playLo 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:
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 playEste 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:
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:
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 playAhora en el output se utiliza el protocolo "http". Es igual que el primer ejemplo pero sobre el protocolo HTTP. El cliente para visualizarlo:
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 playIgual 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:
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 playIgual 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:TODO
Elementos scheduled [ show comments ]
blog comments powered by Disqus