Streaming multimedia con Flumotion
Flumotion es una plataforma de streaming escrito en Python. Es una buena alternativa para hacer streaming live o VoD. La implementación se basa en dos frameworks expectaculares: gstreamer y twisted. Entre las demás alternativas existentes para streaming, flumotion es una buena alternativa aunque la versión libre no soporta ni RTP ni broadcast streaming. Flumotion es paquete debian, pero la versión que está empaquetada no ofrece los mismos servicios que la versión 0.3.2 que se utiliza en esta receta.
Introducción
Esta plataforma se descompone en tres niveles:- High level: En este nivel hay manager's, atmosphere y flows.
- Mid level: demonios de manager's y sorker's
- Low level: componentes
Ingredientes
Lo primero es conseguir los fuentes de la versión 0.3.2 de flumotion. También se pueden conseguir en el repo subversion:Instalación
Ahora toca compilar e instalar:Prueba inicial
Lo primero ser ejecutar el manager:Configuración básica
Como alguien se habrá podido imaginar, los ficheros de configuración están en el directorio con/. Estos ficheros de configuración son XML, lo cual facilita bastante el trabajo con la plataforma. El primer fichero a tener en cuenta es planet.xml:< planet > < manager name="planet" > < host >fulanito< /host > < port >50000< /port > < transport >TCP< /transport > < certificate>/path/default.pem< /certificate > < debug >5< /debug > < component name="manager-bouncer" type="htpasswdcrypt-bouncer" > < property name="data" >< ![CDATA[ user:PSfNpHTkpTx1M ]] >< /property > < /component > < /manager > < /planet >Para el worker es necesario el fichero default.xml en conf/workers:
< worker> < worker name="default"> < manager> < host>fulanito< /host> < port>50000< /port> < transport>< /transport> < /manager> < authentication type="plaintext"> < username>user< /username> < password>test< /password> < /authentication> < feederports>8650-8669< /feederports> < debug>*:4< /debug> < /worker>Como mínimo es necesario un manager y luego se pueden utilizar tantos componentes como se necesiten. En este caso se utiliza un "htpasswdcrypt-bouncer" para hacer la autenticación del administrador. En el worker hay que indicar el usuario/password necesario para acceder a la interfaz de administración. Otro fichero a tener en cuenta es el de los flujos. En principio se puede poner cualquier nombre a este fichero, pero habrá que meterlo dentro de un directorio con el mismo nombre. Por ejemplo, dentro del directorio default/flows habrá que añadir nuestros flujos. Por defecto, esta el fichero ogg-test-theora.xml para hacer pruebas. Su contenido es el siguiente:
< ?xml version="1.0" ?> < planet> < flow name="default"> < component name="video-source" type="videotest" worker="localhost"> < !-- properties --> < property name="format">video/x-raw-yuv< /property> < property name="framerate">50/10< /property> < property name="height">240< /property> < property name="pattern">0< /property> < property name="width">320< /property> < /component> < component name="video-encoder" type="theora-encoder" worker="localhost"> < source>video-source< /source> < !-- properties --> < property name="bitrate">400< /property> < /component> < component name="muxer-video" type="ogg-muxer" worker="localhost"> < source>video-encoder< /source> < /component> < component name="http-video" type="http-streamer" worker="localhost"> < source>muxer-video< /source> < !-- properties --> < property name="bandwidth_limit">10< /property> < property name="burst_on_connect">True< /property> < property name="mount_point">/< /property> < property name="port">8800< /property> < property name="user_limit">1024< /property> < /component> < /flow> < /planet>Como puede verse, solo tenemos un flujo que se llama "default". Y luego hay cuatro componentes:
- video-source: que es de tipo videotest y se le asocia al worker localhost.
- video-encoder: que es de tipo theora-encoder.
- muxer-video: de tipo ogg-muxer. Este componente es el contenedor del stream.
- http-video: de tipo http-streamer, que "saca" el stream por http ap puerto 8800.
Configuracin intermedia
En el apartado anterior solo hemos visto ejemplos bsicos (y lo que queda por llegar). Ahora es hora de ver todos los componentes disponibles en la versin 0.3.2. Para ver los componentes disponibles hay que utilizar el comando:< ?xml version="1.0" ?> < planet> < flow name="default"> < component name="HTTP" type="http-server" version="0.3.2" worker="localhost"> < property name="hostname">fulanito< /property> < property name="mount-point">/< /property> < property name="path">/var/www/video.ogg< /property> < property name="port">8800< /property> < /component> < /flow> < /planet>Accediendo a la URL: http://fulanito:8800 veremos nuestro video en HTTP streaming.
Configuración avanzada
Ya lo haré.Visualizar el streaming
Anteriormente he comentado como se podría ver el video en streaming, bien mediante un browser o bien mediante nuestro reproductor multimedia favorito. Pero cuando se pretende que el acceso a estos contenidos multimedia sean portables (todo el mundo me entiende) es necesario buscar otro tipo de alternativas. La mejor sin duda es utilizar un browser y en esto ya han pensado los desarrolladores de flumotion. Para ello han desarrollado cortado. Cortado es un applet que permite una fácil visualización de los streams. Utilizarlo es muy sencillo, tan solo hay que añadirlo a nuestra web:< \applet width="320" height="240" code="com.fluendo.player.Cortado.class" archive="http://stream.fluendo.com/cortado/cortado-ovt-debug.jar" > < param value="http://fulanito:8800/" name="url" /> < param value="true" name="seekable" /> < param value="53.9" name="duration" /> < param value="10.0" name="framerate" /> < param value="true" name="keepaspect" /> < param value="true" name="video" /> < param value="false" name="audio" /> < param value="200" name="bufferSize" />< /applet>Según los requisitos, podemos configurar de una forma u otra los diferentes parametros del applet. Para ello consultar el API del applet.
Referencias
TODO
Instalación distribuida. Configuración avanzada del server. Configuración avanzada de cortado. Otra receta de VideoLAN. Otra receta de Icecast2. [ show comments ]
blog comments powered by Disqus