You are on page 1of 60

Proyecto de streaming de vdeo

Autor: Alejandro Romero Abada

Streaming multimedia

Alejandro Romero Abada

ndice
Introduccin..........................................................................................................................................3 El servidor Icecast (Streaming en directo)...........................................................................................4 Introduccin.....................................................................................................................................4 Instalacin de Icecast .....................................................................................................................! Inter"a# $eb de administracin........................................................................................................% &na 'rueba sencilla..........................................................................................................................( El re'roductor )*+............................................................................................................................,Introduccin...................................................................................................................................,.rueba con )*+ (modo te/to).......................................................................................................,.rueba con )*+ (modo gr0"ico)....................................................................................................,, Emitir vdeo de una $ebcam........................................................................................................., Servidores de )deo bajo demanda ()o1).........................................................................................,3 El servidor 23&4.31.................................................................................................................,3 Instalacin de 23&4.31........................................................................................................,4 Inter"a# $eb de 23&4.31.....................................................................................................,4 +on"iguracin de 23&4.31..................................................................................................,! Instalacin de varios servicios............................................................................................................,! Instalacin de los servicios............................................................................................................,% +odi"icador 554.E2........................................................................................................................,6 Instalacin de 554.E2.................................................................................................................,( Instalacin del cdec de vdeo ).( (7eb4)............................................................................,8 9'ciones de 55m'eg..................................................................................................................... , Streaming con 55server................................................................................................................. 3 Ejem'lo de streaming con 55server.............................................................................................. 4 &sar 554.E2 con Icecast............................................................................................................ % &sar servidor $eb A'ac:e como servicio de streaming bajo demanda en ;<4*!...................... % El servidor Stream=m (e/'erimental)............................................................................................ 6 Servidor 5lumotion............................................................................................................................. 8 Instalacin......................................................................................................................................3Inter"a# gr0"ico...............................................................................................................................3, )deo en directo (live)..............................................................................................................34 5ic:eros de con"iguracin..............................................................................................................4 )deo bajo demanda ()91).....................................................................................................43 )deo en directo (live)..............................................................................................................4! El re'roductor de vdeo de ;<4*!...................................................................................................!8 Re"erencias.........................................................................................................................................%-

.0gina de %-

Streaming multimedia

Alejandro Romero Abada

Introduccin
En este 'ro>ecto veremos como montar servicios de vdeo 'or la red as como algunas de sus 'osibilidades. E/isten dos "ormas de transmitir vdeo 'or la red? tanto local como 'or Internet? el vdeo en directo > el vdeo bajo demanda. A ambos se les llama com@nmente streaming de vdeo? Aue Auiere decir "lujo de vdeo. El vdeo en directo consiste en emitir un "lujo de datos? Aue 'ueden ser vdeo? audio o ambos? en tiem'o real. &n cliente Aue estB utili#ando un servicio de streaming en directo estar0 visuali#ando lo Aue el servidor emita en ese momento sin 'osibilidad de volver a visuali#ar 'artes anteriores del vdeo. El vdeo bajo demanda? como su nombre indica? consiste en la emisin del "lujo de datos de vdeo > audio 'ero en el momento en Aue un cliente lo solicite. Esto im'lica Aue 'ara Aue un vdeo 'ueda ser servido bajo demanda el vdeo tiene Aue :aber sido grabado anteriormente? 'or ejem'lo un "ic:ero de vdeo. En ambos casos los clientes? Aue son re'roductores de contenidos de audio > vdeo? utili#an bu""ers Aue van almacenando el "lujo de datos antes de em'e#ar a re'roducirlo. 1e esta "orma se intenta evitar la latencia Aue 'uede 'roducirse durante la rece'cin de los datos. 9tra 'arte im'ortante de la emisin de datos multimedia 'or la red es la codi"icacin. El audio o el vdeo deber0 ir codi"icado en un determinado "ormato 'ara "acilitar la emisin de los datos. Seg@n Aue codi"icacin tenga? 'odr0 reducirse el anc:o de banda consumido durante la emisin? > as el servicio ser0 mas e"iciente. Sin embargo cuanto mas com'rimido estB el "lujo de datos? menor ser0 su calidad aunAue tendr0 menos 'roblemas a la :ora de servirlos en la red reduciendo la latencia. En este caso es necesario con"igurarlo 'ara Aue :a>a un eAuilibrio entre la calidad de imagen o audio? > la "orma de transmisin de Bste. .odemos con"igurar as'ectos como el bitrate? o bits 'or segundo Aue son enviados a la red? 'udiendo manejarlos 'ara administrar la carga de la red. +uanto m0s bits 'or segundo? m0s carga 'ara la red? lo cual di"icultara la re'roduccin. Sin embargo? si el bitrate es mu> bajos? 'uede ocasionar errores en la imagen? como una imagen 'i/elada? aunAue el "lujo se enve correctamente. En este 'ro>ecto veremos varios servicios de streaming? donde se instalar0n en un eAui'o con *inu/ 1ebian SAuee#e (1ebian %) de %4 bits.

.0gina 3 de %-

Streaming multimedia

Alejandro Romero Abada

El servidor Icecast (Streaming en directo)


Introduccin
*os servidores de streaming de vdeo > audio suelen trabajar de la misma "orma? una "uente emisora de datos? Aue 'ueden ser vdeo o audio? enva el "lujo de datos :acia un servidor de streaming? Aue se encarga de distribuir ese "lujo de datos entre los clientes. *os clientes 'ueden ser re'roductores multimedia instalado en el sistema o'erativo o en la $eb. El servidor de streaming Aue vamos a usar es Icecast? en su versin ? Aue distribuir0 el "lujo de datos a los clientes Aue lo soliciten. Cste servidor es un 'ro>ecto de so"t$are libre mantenido 'or Di':.org. Es ca'a# de distribuir contenido tanto de audio como de vdeo? aunAue al 'rinci'io "ue e/clusivamente de audio? siendo mu> utili#ado 'ara crear radios en Internet. Actualmente Icecast so'orta los streams 9gg )orbis? 4.3? 9gg S'ee/? 9gg 5*A+? 9gg <:eora > AA+. .odemos ver mas detalles del 'ro>ecto > su documentacin en su sitio o"icial. *os servidores de streaming distribu>en el "lujo en 'untos de montaje? Aue son con"igurados en el mismo "ic:ero de con"iguracin.

*a "uente emisora de datos 'uede ser otro re'roductor multimedia? una tarjeta de <)? una $ebcam? etc. .0gina 4 de %-

Streaming multimedia

Alejandro Romero Abada

Instalacin de Icecast2
En esta 'eAueEa 'r0ctica vamos a usar un 'rograma Aue tomar0 los datos o"recidos 'or los dis'ositivos > se los enviar0 al servidor de streaming Icecast . .ara em'e#ar instalamos Icecast : #aptitude install icecast2 &na ve# instalado? accedemos al "ic:ero de con"iguracin de Icecast ? Aue se encuentra en FetcFicecast Ficecast./ml. 3os encontramos con un "ic:ero D4* con multitud de o'ciones 'ara con"igurar Icecast. Se comentan algunas interesantes: GlimitsHGFlimitsH Entre estas dos etiAuetas 'odemos con"igurar una serie de lmites Aue 'odemos establecer en nuestro servidor: GclientsHnIJclientesGFclientsH AAu de"inimos el n@mero m0/imo de clientes Aue van a usar el servidor 'ara descargar el contenido multimedia. GsourcesHnIJdeJcone/ionesGFsourcesH Se de"ine el n@mero m0/imo de "uentes. Son el m0/imo n@mero de "lujos de datos desde el origen (desde un dis'ositivo :acia Icecast). G:eader=timeoutHsegundosGF:eader=timeoutH AAu se indica el tiem'o m0/imo en segundos Aue un cliente debe es'erar 'ara 'oder conectarse al servidor. Gaut:enticationHGFaut:enticationH &suarios > contraseEas 'ara la con"iguracin del servidor. <ambiBn se con"iguran usuario > contraseEa 'ara iniciar las cone/iones con las "uentes de datos ('ara Aue se 'uedan crear las cone/iones entre los dis'ositivos > el servidor). Gsource='ass$ordHcontraseEaGFsource='ass$ordH AAu se indica la contraseEa Aue deber0n usar las "uentes de datos 'ara enviar el "lujo de datos al servidor. KsourceL es el nombre de usuario. .ara mandar los datos al servidor? se debe usar el usuario KsourceL > la contraseEa Aue se indiAue aAu. Grela>='ass$ordHcontraseEaGFrela>='ass$ordH *os servidores Icecast 'ueden enviar los datos a otro servidor Icecast? actuando este como maestro o rela>. Esta o'cin se de"ine en el servidor maestro? donde se establece la contraseEa Aue deber0n usar los servidores esclavos. +omo usuario se usa Krela>L.

.0gina ! de %-

Streaming multimedia

Alejandro Romero Abada

Gadmin=userHusuarioGFadmin=userH &suario administrador. Se 'uede usar en el inter"a# $eb. Gadmin='ass$ordHcontraseEaGFadmin='ass$ordH +ontraseEa del administrador. Se 'uede usar en la inter"a# $eb. G:ostnameHservidorGF:ostnameH 3ombre o I. del servidor. G'ortHnIJ'uertoGF'ortH .uerto usado 'ara Aue los usuarios 'uedan descargar el "lujo de datos? 'or ejem'lo? un re'roductor multimedia. GmountH Gmount=nameHnombreJdelJ'untoJdeJmontajeGFmount=nameH GFmountH AAu se establece un 'unto de montaje donde se va a volcar el "lujo de datos desde la "uente. E/isten m0s o'ciones 'ara incluir dentro del bloAue GmountH. Estas o'ciones seran solo 'ara este 'unto de acceso? a di"erencia de las o'ciones de "uera del bloAue Aue seran globales. Algunas aAu: GusernameHnombreGFusernameH 3ombre de usuario 'ara este 'unto de montaje es'ec"ico. G'ass$ordH'assGF'ass$ordH +ontraseEa 'ara este 'unto de montaje es'ec"ico. Gma/=listenersHnIGFma/=listenersH 3@mero de usuarios 'ara acceder al 'unto de montaje. Se 'ueden ver m0s o'ciones aAu. Es im'ortante activar un 'ar0mentro en FetcFde"aultFicecast . El 'ar0metro a modi"icar es KE3AM*EL > lo tenemos Aue activar 'ara Aue el servidor 'ueda ejecutar el scri't de inicio. *o dejamos as: ENABLE=true E/isten muc:as mas o'ciones 'ara con"igurar el servidor a las necesidades del administrador.

Interfaz web de administracin


Icecast 'osee una inter"a# $eb de administracin donde 'odemos ver estadsticas del uso del servidor 'or clientes? los 'untos de montaje Aue se est0n retransmitiendo? eliminar una cone/in de un cliente concreto o un "lujo de datos concreto. .ara entrar? de'ender0 de como tengamos con"igurado el "ic:ero de con"iguracin. En Bl tendremos Aue indicar un nombre de usuario > .0gina % de %-

Streaming multimedia

Alejandro Romero Abada

contraseEa 'ara administrador. Eso se indica entre las etiAuetas Gadmin=userH > Gadmin='ass$ordH? siendo la 'rimera 'ara el nombre del usuario > la segunda 'ara la contraseEa. .ara entrar va $eb al inter"a# de administracin? escribimos en el navegador la &R* re"erente a la direccin I. del servidor > el 'uerto Aue tengamos con"igurado en Icecast (direccinI.:'uerto). En este ejem'lo? usamos ,-.-.-.,:(---? siendo el 'uerto (--- el usado 'or de"ecto del servidor. Accederemos a una 'antalla con estas o'ciones:

Al 'ulsar en alguno de los enlaces nos 'edir0 el usuario > contraseEa Aue indicamos en el "ic:ero de con"iguracin (Gadmin=userH > Gadmin='ass$ordH). Al entrar? en KAdministrationL nos a'arecer0 unas estadsticas globales del servidor? indicando 'or ejem'lo el n@mero de clientes? Aue seran los "lujos de datos en uso? los usuarios Aue est0n usando el servicio (listeners)? direccin I. del servidor? etc? adem0s de mostrar otras estadsticas de los 'untos de montaje en uso.

.odemos ver un vdeo Aue est0 en un 'unto de montaje desde el navegador 'oniendo la &R* del 'unto de montaje directamente en el navegador? como 'or ejem'lo :tt':FF,-.-.-.,:(---F'rueba.ogg. .or cada 'unto de montaje en uso encontraremos unas o'ciones @tiles como K*ist +lientsL Aue lista los usuarios Aue se encuentran utili#ando el 'unto de montaje. 1esde a:? 'odemos Kec:arL a un usuario 'ulsando en KNicOL. .0gina 6 de %-

Streaming multimedia

Alejandro Romero Abada

.odemos ver algunos datos de los usuarios conectados como su I. o los segundos Aue lleva conectado. En K4ove mount'ointsL tenemos la 'osibilidad de 'asar los usuarios Aue estBn conectador en un 'unto de montaje a otro 'unto de montaje. K&'date 4etadataL actuali#a los metadatos del stream. .or @ltimo KNill sourceL desactiva el 'unto de montaje? :aciendo Aue los usuarios Aue lo estBn utili#ando dejen de usarlo.

Una prueba sencilla


.rimero reali#amos una 'eAueEa 'r0ctica sencilla? usando los valores 'or de"ecto Aue trae Icecast. *o @nico Aue se aEadir0 al "ic:ero de con"iguracin ser0 el 'unto de montaje. AEadimos lo siguiente: <mount> <mount-name>prueba.ogg</mount-name> </mount> El 'unto de montaje se llamar0 'rueba.ogg. 3o nos olvidemos de activar el servicio en FetcFde"aultFicecast . Reiniciamos el servicio con: #/etc/init.d/icecast2 restart A:ora instalamos un 'ar de a'licaciones? Aue son ""m'eg t:eora > ogg"$d: #aptitude install ffmpeg2t eora #aptitude install oggf!d &na ve# instalados? > con un vdeo de 'rueba alojado en el mismo eAui'o donde est0 el Icecast? ejecutamos este comando: ffmpeg2t eora prueba.a"i -o /de"/stdout # oggf!d local ost $%%% ac&me /prueba.ogg .0gina ( de %-

Streaming multimedia

Alejandro Romero Abada

+on esto? ""m'eg t:eora re'roduce el vdeo? lo convierte a "ormato t:eora > lo enva al dis'ositivo est0ndar FdevFstdout. El 'rograma ogg"$d toma el "lujo de datos de FdevFstdout? lo enva a local:ost 'or el 'uerto (---? con la contraseEa K:acOmeL al 'unto de montaje 'rueba.ogg. El 'ueto (--- est0 establecido en el "ic:ero de con"iguracin de Icecast? as como la contraseEa K:acOmeL del usuario KsourceL > el 'unto de montaje 'rueba.ogg. A:ora 'odemos re'roducir el stream desde un re'roductor cualAuiera como 'or ejem'lo el re'roductor de 'elculas Aue viene instalado 'or de"ecto en 1ebian. Abrimos el 'rograma > seleccionamos .elculaFAbrir direccin. 1es'uBs introducimos la &R* del 'unto de montaje del Icecast? Aue sera :tt':FF,-.-.-.,:(---F'rueba.ogg:

&na ve# Aue se cargue el bu""er? 'odremos ver el vdeo en streaming desde la red local.

.0gina 8 de %-

Streaming multimedia

Alejandro Romero Abada

El reproductor VLC
Introduccin
El re'roductor )*+ es un re'roductor multimedia de cdigo abierto > mantenido 'or el 'ro>ecto )ideo*A3. .uede re'roducir multitud de codecs de audio > vdeo. Adem0s le :an aEadido la 'osibilidad de :acer streaming de vdeo? > adem0s 'oder enviarlo a un servidor Icecast. .uede ser manejado tanto 'or inter"a# gr0"ica como 'or comandos.

Prueba con VLC (modo texto)


Instalamos el 'aAuete vlc: #aptitude install "lc +on el servidor Icecast >a con"igurado? no necesitaremos :acer cambios en el? solo con"iguraremos la salida del 'rograma )*+. .ara lan#ar el "lujo de datos :acia Icecast desde )*+ 'or lnea de comandos :a> Aue indicar una serie de 'ar0metros: vlc 'rueba.avi ==sout PQtranscodeRvcodecSt:eora?vbS(--?acodecSvorb?abS, (T:standard RaccessSs:out?mu/Sogg?dstSsource::acOmeU,-.-.-.,:(---F'rueba.oggTP +on este comando indicamos Aue )*+ re'rodu#ca el vdeo 'rueba.avi con una serie de 'ar0metros: ==sout V 4ani'ular0 la salida del vdeo. *os 'ar0metros de 'onen entre comillas sim'les. Qtranscode V Se codi"icar0 la salida del vdeo? > se 'asar0 al codec de vdeo t:eora con tasa de bits a (--? > el audio a vorb (ogg) a , ( bits 'or segundo. :standard V Se usar0 salida standard > se 'asar0n los siguientes 'ar0metros: accessSs:out V Se enviar0 a un servidor Icecast. mu/Sogg V Se 'asar0 enca'sulado con ogg. dst V Es donde se va a enviar el "lujo. En este caso se va a enviar a la direccin ,-.-.-., en el 'uerto (--- al 'unto de montaje 'rueba.ogg con el usuario source > contraseEa :acOme.

.0gina ,- de %-

Streaming multimedia

Alejandro Romero Abada

Prueba con VLC (modo gr fico)


<ambiBn 'odemos :acer lo mismo desde su inter"a# gr0"ica sim'lemente abriendo el 'rograma > reali#ar estos 'asos: 1es'legar K4edioL > 'ulsar sobre KEmitirL. .odemos seleccionar AuB elemento Aueremos emitir? si desde un arc:ivo? desde le lector 1)1? desde otro "lujo de datos de la red o desde un dis'ositivo como 'or ejem'lo una $ebcam. En el caso de Aue sea un arc:ivo? seleccionamos el arc:ivo a re'roducir:

1es'uBs 'ulsamos en KEmitirL. Esto nos leva a otra ventana donde tendremos Aue indicar la "uente? Aue a'arecer0 >a indicada? > 'ulsando en siguiente con"iguraremos otros as'ectos: .odemos indicar en K3uevo destinoL si lo Aueremos enviar a otro "ic:ero 'ara Aue se guarde en disco o al Icecast? entre otras o'ciones. Seleccionamos Icecast > 'ulsamos en KAEadirL. AAu instroducimos los datos del servidor Icecast como su direccin I.? el 'uerto? el 'unto de montaje? en este caso 'rueba.ogg? > el usuario > contraseEa? en este caso source::acOme. Es im'ortante Aue entre el usuario > la contraseEa a'are#ca los dos 'untos (:). .0gina ,, de %-

Streaming multimedia

Alejandro Romero Abada

1ejamos K;abilitar transcodi"icarL? Aue se encargar0 de reali#ar la conversin. Esta conversin se indica en K.er"ilL donde seleccionaremos K)ideo W <:eora X )orbis (922)L. .ulsamos sobre siguiente. En la @ltima ventana activamos KEmitir todas las emisiones elementalesL. )eremos un cuadro de te/to donde 'odemos ver una cadena de salida con los 'ar0metros establecidos? Aue 'odemos modi"icar. En cuanto 'ulsemos sobre Emitir? comen#ar0 la emisin del "lujo de datos :acia Icecast. Ya solo Auedara Aue los clientes se conectaran al servidor bien 'or un re'roductor multimedia o un re'roductor de vdeo en la $eb.

!mitir "#deo de una webcam


<ambiBn 'odemos ca'turar el vdeo de una $ebcam &SM > enviarlo a Icecast 'ara Aue lo distribu>a. &sando )*+? el comando Aue tendramos Aue ejecutar sera: vlc v4l :FFFdevFvideo- ==sout PQtranscodeRvcodecSt:eora?vbS,---?scaleS,?acodecSnoneT:stdRaccessSs:out?mu/Sogg?dstSsource ::acOmeU,-.-.-.,:(---F'rueba.oggTP )*+ toma el vdeo del dis'ositivo FdevFvideo-? Aue es donde se trata la in"ormacin de vdeo de una $ebcam u otro dis'ositivo de vdeo. )4l ()ideo4*inu/ ) es una A.I de ca'tura de vdeo Aue )*+ usa 'ara e/traer el "lujo de datos del dis'ositivo. Se encuentra integrado en el n@cleo de *inu/. E/isten $ebcams I. Aue se conectan directamente a la red. Estas tienen su 'ro'ia direccin I. > 'ueden enviar directamente el "lujo de datos :acia Icecast? sin tener Aue usar ning@n codi"icador Aue enve el "lujo como 'uede ser )*+. &na de las o'ciones mas interesantes del streaming con )*+ es la ca'acidad de du'licar la salida del stream? 'udiendo as enviar el "lujo a Icecast 'or un lado? mientras se graba en disco en un "ic:ero de vdeo 'or otro. .odemos :acerlo con el video 'rocedente de una $ebcam? se toma el "lujo de datos de la $ebcam? se enva 'or un lado al servidor Icecast 'ara Aue los clientes lo re'rodu#can? > 'or otro de graba en disco? Aue 'uede ser utili#ado 'or otro servidor de video bajo demanda ()o1) 'ara re'roducirlo en cualAuier momento.

.0gina , de %-

Streaming multimedia Ejem'lo: Enviar audio? du'licarlo :acia Icecast > al disco:

Alejandro Romero Abada

vlc 'ruebaJmusica.m'3 ==sout PQtranscodeRacodecSvorb?abS, (T:du'licateRdstSstdRaccessSs:out?mu/Sogg?dstSsource::acOmeU ,8 .,%(.66.,(4:(---F'rueba.oggT?dstSstdRaccessS"ile?mu/Sogg?dstSF:omeFalejandroFEscritorioFm usica.oggTTP +on Kdu'licateL 'odemos enviar dos veces la seEal :acia dos sitios distintos? 'oniendo adem0s dos veces la o'cin de destino (dst). .ara 'oder ver estos vdeos en el navegador $eb? 'odemos incrustar un re'roductor inclu>endo este cdigo en la $eb: Gembed srcSZ:tt':FF,8 .,%(.,.,(-:(---F'rueba.oggZ t>'eSZvideoFoggZ controllerSZtrueZ auto'la>SZtrueZ :eig:tSZ4--Z $idt:SZ4--ZH GFembedH En este cdigo le indicamos al navegador Aue incruste un re'roductor de vdeo con "ormato ogg > Aue tome el stream en la direccin indicada? Aue es el 'unto de montaje 'rueba.ogg del servidor Icecast.

Servidores de Vdeo bajo demanda (VoD)


*os servidores de vdeo bajo demanda o"recen servicio de streaming de vdeo o audio? 'ero a di"erencia del streaming en directo? el contenido multimedia 'uede ser re'roducido en cualAuier momento? >a Aue el contenido se encuentra alojado en el servidor. &n claro ejem'lo 'uede ser Youtube. <ambiBn tiene los mismos 'roblemas Aue el servicio en directo >a Aue "unciona de la misma "orma. .ueden cortarse o Aue la calidad de imagen sea mala debido a la calidad de la cone/in. <ambiBn se usan bu""ers durante la re'roduccin > el usuario 'uede avan#ar? retroceder o 'ausar el vdeo.

!l ser"idor $%U&P'(
&no de los servicios Aue "uncionan con )o1 es gnum'3d. Este servicio se 'oda instalar desde los re'ositorios de 1ebian? 'ero actualmente :a> Aue descargarse el 'aAuete desde la $eb o"icial. Se 'uede descargar desde aAu.

.0gina ,3 de %-

Streaming multimedia

Alejandro Romero Abada

Instalacin de

!"#$%D

&na ve# descargado el 'aAuete tar.g# (desde aAu)? lo descom'rimimos con tar:

&na ve# descom'rimido el 'aAuete? entramos en el directorio creado > ejecutamos el comando KmaOe installL:

A:ora Aue est0 instalado 'odremos :acer uso de Bl. El "ic:ero de con"iguracin se encuentra en KFetcFgnum'3dL. Si ejecutamos el comando Kgnum'3d=to' = =manualL veremos algunas de las o'ciones Aue dis'one 23&4.31. +on la con"iguracin 'or de"ecto Aue trae gnum'3d? 'odemos crear un directorio? concretamente F:omeFm'3? > de'ositar a: cualAuier "ic:ero de m@sica en m'3. 1es'uBs ejecutamos el comando Kgnum'3d=inde/L 'ara Aue 'ueda inde/ar los "ic:eros Aue se encuentren en el directorio. .or @ltimo lan#amos el servicio con el comando Kgnum'3dL. A:ora 'odemos ver una $eb de administracin del servicio introduciendo en el navegador la &R* KdireccionI.:((((L? siendo el 'uerto (((( el 'uerto 'or de"ecto de gnum'3d. A: 'odemos ver los "ic:eros m'3 contenidos en el directorio F:omeFm'3. Este directorio se 'uede cambiar en el "ic:ero de con"iguracin? en KrootL.

Inter&a' (eb de

!"#$%D

1esde el inter"a# $eb del servicio 'odemos ver algunas estadsticas > con"iguraciones. Accedemos como est0 descrito anteriormente (direccionI.:(((()? > accederemos a una '0gina como esta:

En la 'estaEa K4usicL nos a'arecer0n los elementos Aue tengamos en el directorio F:omeFm'3. <ambiBn 'odemos tener "ic:eros de vdeo? con lo cual tambiBn tendremos la 'osibilidad de re'roducir vdeo bajo demanda. En la 'estaEa KMro$se b> <agL tendremos los "ic:eros catalogados en di"erentes secciones. .0gina ,4 de %-

Streaming multimedia

Alejandro Romero Abada

*a 'estaEa K+ustom .la>listL a'arecer0n las listas de re'roduccin 'ersonali#adas Aue tengamos. *a 'estaEa KRandom SelectionL consiste en mostrar todos los "ic:eros de audio Aue e/isten en el directorio? incluido los Aue estBn en otros directorios dentro del directorio 'rinci'al. *a 'estaEa de K.re"erencesL consiste en cmo ordenar el contenido? el idioma > el tema del inter"a# $eb. *as de KSearc:L sirve 'ara buscar entre los elementos del directorio > KStatisticsL son estadsticas del uso del servidor.

Con&iguracin de

!"#$%D

+omo muc:os servicios de 1ebian? 23&4.31 tambiBn tiene un "ic:ero de con"iguracin 'ara 'ersonali#ar el servicio a nuestras necesidades? seg@n el uso Aue le va>amos a dar. El "ic:ero se encuentra en KFetcFgnum'3dFgnum'3d.con"L. Algunas de las o'ciones mas im'ortantes son: user V &suario Aue va a utili#ar el servicio. 'ort V .uerto donde va a escuc:ar el servicio. .or de"ecto (((( root V Es el directorio 'rinci'al donde se van a de'ositar los "ic:eros multimedia. log"ile V 5ic:ero de logs. .or de"ecto en KFvarFlogFgnum'3dFaccess.logL. errorlog V 5ic:ero de logs 'ara errores. .or de"ecto en KFvarFlogFgnum'3dFerror.logL. allo$edJclients V .ermitir clientes 'or su I.. <ambiBn se 'ueden 'ermitir rangos I.. deniedJclients V 1enegar clientes 'or su I.. Se 'ueden 'oner rangos I.. <odas estas o'ciones > el resto tienen en el mismo "ic:ero de con"iguracin una descri'cin de su uso. <ambiBn aAu? en la documentacin o"icial? se e/'lica el uso de las o'ciones.

Instalacin de varios servicios)


Se va a 'roceder con la instalacin de los servicios de "orma Aue una $ebcam graben contenido en el disco duro > lo enven a Icecast? Aue a su ve# lo distribuir0 en directo. El servidor de )o1 tendr0 en su directorio 'rinci'al los "ic:eros de vdeo grabados 'or la $ebcam? as Aue el servidor enviar0 el vdeo a los clientes Aue lo soliciten.

.0gina ,! de %-

Streaming multimedia *os objetivos son:

Alejandro Romero Abada

Establecer una c0mara Aue 'uede ser &SM (Aue est0 conectada al servidor) o I. (Aue )*+ tomar0 el contenido de ella indicando la &R* de la c0mara). )*+ tomar0 el "lujo de datos de la c0mara >? 'or un lado? enviar0 el contenido a Icecast? > 'or otro? guardar0 el contenido en disco? concretamente en el directorio 'rinci'al de 23&4.31. 23&4.31 tendr0 los "ic:eros de vdeo en su directorio 'rinci'al > servir0 el contenido. Se 'odr0n visuali#ar abriendo un re'roductor e indicando la &R* 'ara re'roducir los vdeos? o desde la $eb incrustando un re'roductor.

Instalacin de los ser"icios


Instalaremos los servicios? em'e#ando 'or Icecast: Qa'titude install icecast Instalamos el re'roductor )*+: Qa'titude install vlc Se instalar0n multitud de de'endencias. A:ora 'rocedemos con la instalacin de 23&4.31: 1escargamos el 'aAuete aAu. 3os descargamos el Ktar.g#L. *o descom'rimimos: Qtar /v" gnum'3d=3.-.tar.g# Entramos en el directorio > ejecutamos esto: QmaOe install

.0gina ,% de %-

Streaming multimedia Ya tenemos los servicios instalados. A:ora 'rocederemos a con"igurarlos:

Alejandro Romero Abada

Activamos icecast en KFetcFde"aultFicecast L en KE3AM*EL cambiando "alse 'or true. +reamos 'rimero el 'unto de montaje en el "ic:ero de con"iguracin de icecast. .ara eso editamos KFetcFicecast Ficecast./mlL > aEadimos el 'unto de montaje: GmountH Gmount=nameHcam,.oggGFmount=nameH GFmountH A:ora si Aueremos 'odemos 'ersonali#arlo a nuestro gusto cambiando el 'uerto ('or de"ecto (((()? el nombre > 'ass$ord del admin(Gadmin=userHGadmin='ass$ordH)? u otras o'ciones como las anteriormente vistas en la seccin de Icecast. +on"iguraremos el dervidor 23&4.31? editando el "ic:ero KFetcFgnum'3dFgnum'3d.con"L > modi"icamos KrootL 'oniendo un directorio dedicado a los videos grabados? 'or ejem'lo? KFvideosL. A continuacin ejecutamos el comando de )*+ a'ro'iado? > usando Kdu'licateL 'ara Aue los vdeo se guarden en el directorio Aue :emos con"igurado en 23&4.31? en KFvideosL.

Codi&icador **#$E
554.E2 es una serie de :erramientas de codi"icacin > streaming de vdeo > audio Aue "orma 'arte de la comunidad de so"t$are libre. El 'ro>ecto contiene :erramientas como 'ueden ser el codi"icador ffmpeg? el servidor de streaming ffserver? el re'roductor ffplay? la biblioteca libavcodec Aue contiene los cdecs Aue ""m'eg 'uede usar? etc. *a sinta/is de los comandos tiene esta estructura: ""m'eg [o'ciones\ [o'ciones de entrada\ [entrada\ ] [o'ciones de salida\ [salida\ ] &n ejem'lo del comando 'uede ser este: ""m'eg =i F:omeFusuarioFEscritorioFvideo.avi F:omeFusuarioFEscritorioFvideo .ogg Este comando convierte un vdeo con e/tensin .avi a otro con e/tensin .ogg.

.0gina ,6 de %-

Streaming multimedia

Alejandro Romero Abada

""m'eg =" video4linu/ =s 3 -/ 4- =r 4 =i FdevFvideo- F:omeFusuarioFEscritorioF'rueba.avi Este comando se encarga de ca'turar vdeo de una $ebcam &SM > guardarlo en la ruta indicada.

Instalacin de ))&P!$
55m'eg 'uede instalarse en 1ebian bien desde los re'ositorios o bien com'ilando el cdigo Aue o"rece el 'ro>ecto en su $eb. .ara instalarlo desde los re'ositorios solo basta ejecutar el siguiente comando en un terminal:

aptitude install ffmpeg Nota' (e esta forma se instalar) la "ersi*n estable para (ebian+ la r%.,.,--+ .ue es del 2%%/. No es la "ersi*n mas actuali0ada. .ara instalarlo desde el cdigo "uente debemos seguir las indicaciones Aue o"recen en la $eb del 'ro>ecto? aAu. Se 'uede descargar la @ltima versin usando git? o descargando 'aAuetes de versiones estables (55m'eg Releases). Si deseamos instalar la @ltima versin? 'rimero instalamos git:

aptitude install git *o siguiente ser0 dirigirnos a un directorio donde de'ositaremos el 'ro>ecto > ejecutamos git clone [URL]ffmpeg. .or ejem'lo: git clone git://git.videolan.org/ffmpeg.git ffmpeg Entramos en el directorio Aue se :a creado > 'rocederemos al com'ilado. <enemos la o'ortunidad de aEadir o'ciones a la :ora de com'ilar? como la com'atibilidad con t:eora? vorbis o incluso ).(. .odemos ver las o'ciones dis'onibles con el comando ./configure --help.

.0gina ,( de %-

Streaming multimedia

Alejandro Romero Abada

1ebemos instalar una serie de de'endencias 'ara 'oder instalar ""m'eg con B/ito: build=essential V +om'ilador +. >asm V Ensamblador. libasound =dev V *ibrera necesaria 'ara 'oder usar A*SA en ""m'eg. libvorbis=dev V +odec de vdeo <:eora. libvorbis=dev V +odec de audio )orbis. libv'/ V +odec de vdeo ).( (.ara incluirlo? seguir Instalacin del codec de vdeo ).()

55m'eg lleva instalado internamente multitud de codi"icadores > dem0s com'onentes? sin embargo 'odemos aEadir mas instalando la res'ectiva de'endencia e indic0ndolo en las o'ciones del com'ilado. .or ejem'lo 'odemos tambiBn instalar el codec de vdeo ).(.

Instalacin del cdec de vdeo V$+ (,eb#)


El cdec de vdeo ).( "ue liberado 'or 2oogle en -,- 'ara ser im'lementado como est0ndar de vdeo en ;<4*!? dentro del contenedor 7eb4? > as rivali#ar con el cdec ;. %4. .ara incluirlo en 55m'eg debemos instalarlo antes de la com'ilacin. E/iste una versin en los re'ositorios de 1ebian? el 'aAuete libv'/? sin embargo a la :ora de la com'ilacin de 55m'eg? este no la ace'ta 'orAue reAuiere una versin su'erior? as Aue descargaremos el cdigo del 'ro>ecto de ).( > lo com'ilaremos. .rimero? nos dirigimos a la $eb del 'ro>ecto > descargamos el 'aAuete libvpx-v .!."-p#.tar.b$% Aue se encuentra aAu. &na ve# descargado? lo llevamos a un directorio lim'io > lo descom'rimimos: tar xvf libvpx-v .!."-p#.tar.b$% Entramos en el directorio creado. .odemos usar ./configure --help si Aueremos ver las o'ciones de com'ilacin. En la 'r0ctica no indicaremos ninguna? 'or lo Aue se instalar0n las o'ciones 'or de"ecto. Ejecutamos: ./configure

.0gina ,8 de %-

Streaming multimedia *o com'ilamos: ma&e -'%

Alejandro Romero Abada

&samos la o'cin =j > el n@mero de n@cleos de nuestro 'rocesador 'ara Aue la com'ilacin sea mas r0'ida. A continuacin lo instalamos con: ma&e install Ya tendremos instalado la versin mas actuali#ada del cdec ).(? as Aue >a 'odremos incluirlo en 55m'eg aEadiBndolo en las o'ciones de com'ilacin.

+on ).( instalado? 'rocedemos a con"igurar la com'ilacin de 55m'eg: ./configure --enable-libtheora --enable-libvorbis --enable-libvpx *o com'ilamos: ma&e -'% Y lo instalamos: ma&e install

9tra "orma de instalar 55m'eg desde el cdigo Aue 'ro'orciona la $eb o"icial es descargando el 'rograma en versiones recientes 'ero estables. Son las descargas com'riidas en Kb$ip% tarballL o Kg$ip tarballL? Aue est0n en la seccin K((mpeg ReleasesL de la '0gina de descargas.

1escom'rimimos el "ic:ero con el comando tar.

.0gina - de %-

Streaming multimedia

Alejandro Romero Abada

El 'rocedimiento de com'ilado e instalacin es el mismo Aue el Aue usamos con git. Sim'lemente :a> Aue con"igurar el com'ilado? com'ilarlo e instalarlo: ./configure --enable-libtheora --enable-libvorbis --enable-libvpx ma&e -'% ma&e install

*pciones de ))mpeg
Este 'rograma contiene muc:as o'ciones? desde como ca'turar el origen de los datos? la salida? cambiar de codec? "ormato contenedor? etc. AAu algunas de las o'ciones: =i V Indica el "ic:ero u origen del "lujo de datos. <ambiBn indica la ruta de salida? de'endiendo del orden Aue se coloAue. .or ejem'lo? se 'uede usar 'ara indicar el origen? > des'uBs en el mismo comando? indicar la salida. Al indicar la salida es o'cional? 'uesto Aue se 'uede indicar la ruta sin 'oner la o'cion =i. =" V Indica el dis'ositivo donde se ca'tura el "lujo. .uede ser de una $ebcam? un micro"ono o una tarjeta ca'turadora de vdeo. Ejem'lo: ""m'eg =" video4linu/ =s 3 -/ 4- =r ! =i FdevFvideo, F:omeFusuarioFEscritorioF'rueba.ogg Este comando usa video4linu/ dis'ositivo FdevFvideo,. 'ara ca'turar la imagen de la $ebcam? Aue es el

Es com@nmente usado video)linux% 'ara recoger el "lujo de datos de las $ebcams 'uesto Aue es una A.I de ca'tura de vdeo 'ara *inu/? Aue 'uede usarse tambiBn con otros dis'ositivos de vdeo. <ambiBn 'uede usarse alsa (Advanced *inu/ Sound Arc:itecture) 'ara 'oder recoger el "lujo de datos del micr"ono. ""m'eg =" alsa =i 'lug:$:-?- F:omeFusuarioFEscritorioFaudio.ogg

.0gina , de %-

Streaming multimedia

Alejandro Romero Abada

Este ejem'lo consiste en ca'turar el audio del micr"ono usando el com'onente A*SA. El dis'ositivo plugh*: + es el dis'ositivo de ca'tura de audio 'or de"ecto del com'onente A*SA. .ara 'oder ca'turar el audio es necesario activarlo. .ara ello ejecutamos en un terminal alsamixer+ 'resionamos en 54 'ara "iltrar 'or los dis'ositivos de ca'tura? seleccionamos capture con las teclas de direccin > 'ulsamos la tecla es'acio 'ara activarla. 1es'uBs subimos el volumen con la tecla de direccin arriba. 9tra "orma de ca'turar el audio es con oss (9'en Sound S>stem)? Aue es el antiguo com'onente de audio del n@cleo de *inu/? Aue :o> en da est0 obsoleto. AAu se 'ueden indicar dis'ositivos de /dev. =s V Establece la resolucin de la imagen. Ej: 3 -/ 4-. <ambiBn 'uede indicarse abreviaciones como vga? Aue corres'onde %4-/4(-. &na lista de estas abreviaciones 'uede com'robarse en la documentacin o"icial. =as>nc [nI\ V Sincroni#a el audio con el vdeo. Se indica en segundos > 'ueden ser n@meros negativos o 'ositivos. =r [nI\ V Establece el n@mero de "rames 'or segundo ("'s). .or de"ecto es !. =acodec [nombre cdec\ V Selecciona el cdec de audio a usar. =vcodec [nombre cdec\ V Selecciona el cdec de vdeo a usar. .ara ver los cdecs dis'onibles? ejecutar Kffmpeg -formats,. Estas son algunas de las o'ciones m0s b0sicas de 554.E2? aunAue e/isten in"inidad de o'ciones 'ara controlar el "lujo.

.0gina

de %-

Streaming multimedia

Alejandro Romero Abada

+treaming con ))ser"er


&no de los com'onentes Aue se instalan con 55m'eg es el servidor de streaming de audio > vdeo 55server. &sando 55m'eg como "uente de datos > 55server como servidor Aue reciba las 'eticiones de los clientes? se 'uede montar un servicio de streaming en directo. ;a> Aue decir Aue este servidor no est0 lo su"icientemente desarrollado > 'uede ser inestable a veces. 9tra desventaja es el menor n@mero de cdecs Aue so'orta? entre ellos m'eg o avi. .odemos encontrar en la $eb o"icial el "ic:ero de con"iguracin 'or de"ecto aAu. *a documentacin o"icial se 'uede encontrar tambiBn aAu. El "uncionamiento de 5"server es mu> sim'le: recibe una "uente de datos? sea audio? vdeo o ambos? > a 'artir de la con"iguracin? o"rece los datos con una e/tensin > codecs determinado a los clientes. Estas "uentes son llamados K"eedsL. +ada "eed tiene su 'ro'ia con"iguracin > cada uno 'uede recibir un "lujo de datos distinto. El "ic:ero de con"iguracin se encuentra en KFetcF""server.con"L > desde aAu de 'uede con"igurar el servidor. +ada o'cin viene acom'aEada 'or una descri'cin de su "uncin. Algunas de ellas: .ort V Establece el 'uerto de escuc:a del servidor. *os clientes 'ueden conectarse a travBs de este 'uerto. 4a/+lients V 3@mero m0/imo de clientes Aue so'ortar0 el servidor. G5eed [nombre\.""mH V 3ombre del "eed. Al usar 55m'eg 'ara enviar el "lujo a 55server abr0 Aue incluir el nombre del "eed en la &R*: ""m'eg =i F:omeFusuarioFEscritorioFvideo.m'g :tt':FFlocal:ost:(-8-Fnombre"eed.""m 5ile [ruta\ V AAu se almacenar0 tem'oralmente el "eed. 5ile4a/Si#e [nI\ V <amaEo m0/imo del "eed tem'oral en disco. A+* allo$ [I.\ V 1irecciones I. ace'tadas 'ara re'roducir el "lujo. Stream [nombre\.[e/tensin\ V 3ombre del stream. *os clientes se conectar0n a travBs de este nombre en una &R*: :tt':FF,8 .,%(.,.,-:(-8-Fnombrestream.m'g 5eed [nombre"eed\.""m V 5eed Aue usar0 el stream. &n stream estar0 asociado a un "eed. 1e esta "orma? 55m'eg enviar0 el "lujo a un "eed? este "eed se asociar0 con un stream? > los .0gina 3 de %-

Streaming multimedia clientes se conectar0n al stream. 55m'eg ========H 5eed ========H Stream ========H+liente

Alejandro Romero Abada

5ormat ["ormato contenedor\ V AAu se indica el "ormato contenedor del stream. En el mismo "ic:ero de con"iguracin se indican los "ormatos so'ortados. AudioMitRate [nI\ V <asa de bits 'or segundo. A ma>or n@mero ma>or es el tr0"ico en la cone/in. 1e'ende del codec usado. AudioSam'leRate [nI\ V 5recuencia del audio. 3ormalmente es 44,--. 1e'ende tambiBn del codec usado. )ideoMitRate [nI\ V <asa de bits de vdeo. )ideoMu""erSi#e V <amaEo del bu""er de vdeo. +on un tamaEo inadecuado el "lujo 'uede interrum'irse. )ideo5rameRate [nI\ V 5rames 'or segundo del vdeo. Al ejecutar el comando de 55m'eg? :a> Aue indicar el mismo n@mero con la o'cin K-rL. 1eben coincidir? si no? mostrar0 un error. )ideoSi#e [nI\ V Resolucin del vdeo. <ambiBn 'uede usarse abreviaturas como KvgaL. Audio+odec [nombrecodecaudio\ V 3ombre del codec de audio Aue se va a utili#ar. .or ejem'lo KlibvorbisL o sim'lemente KvorbisL. Si est0 comentada? 55server eligir0 el codec con re"erencia al "ormato contenedor. .or ejem'lo? si K(ormatL contiene KoggL? 55server usar0 vorbis? si contiene KmpegL? usar0 m' . )ideo+odec [nombrecodecvideo\ V 3ombre del codec de vdeo. Al igual Aue K-udio.odecL? se indica el codec de vdeo Aue se usar0. <ambiBn 55server usar0 codecs 'or de"ecto si est0 comentada.

!,emplo de streaming con ))ser"er


+on 55m'eg instalado? +on"iguraremos FetcF""server.con". .ara este ejem'lo se dejar0n la ma>ora de las o'ciones 'or de"ecto. Solo se modi"icar0n algunas 'ara Aue "uncione: +ambiamos K/ideo(rameRateL 'or !? Aue es el Aue usaremos con el comando de 55m'eg. +on"iguramos K/ideo0i$eL con 3 -/ 4-. +omentamos todas las lneas del ejem'lo K-0( compatibleL 'ara Aue no enve dos "lujos al mismo stream.

.0gina 4 de %-

Streaming multimedia

Alejandro Romero Abada

A continuacin? ejecutamos en un terminal el suguiente comando 'ara arrancar 55server con el "ic:ero de con"iguracin: ffserver -f /etc/ffserver.conf A:ora 55server se Auedar0 escuc:ando. *o Aue a'are#ca en 'antalla es el log del servicio. Ejecutamos en un terminal a'arte el comando de 55m'eg. Algo como esto: ffmpeg -r %1 -s 2% x%) -f video)linux% -i /dev/video -f alsa -i plugh*: + http://localhost:3 ! /feed#.ffm +on esto em'e#ar0 a recoger la imagen de la $ebcam &SM? Aue en el sistema est0 en FdevFvideo-? > el sonido del micr"ono. .odemos re'roducir el vdeo con un re'roductor Aue 'ueda re'roducir streaming? 'or ejem'lo )*+? Aue 'uede leer multitud de codecs. Si usamos )*+ 'ara re'roducir el ejem'lo anterior? tenemos Aue ir a K4edio H Abrir volcado de redL > aEadimos la siguiente &R*: http://localhost:3 ! /test#.mpg .ulsamos en KRe'roducirL > veremos como se carga el bu""er de )*+ > a'arece la imagen de la $ebcam > el sonido del micr"ono.

.0gina ! de %-

Streaming multimedia

Alejandro Romero Abada

Usar ))&P!$ con Icecast


AunAue 55m'eg no 'ueda enviar el "lujo a Icecast directamente? si Aue 'odemos usar ogg"$d como intermediario 'ara :acer llegar el vdeo? al igual Aue con ""m'eg t:eora. .ara ello? debemos tener instalado Icecast? 55m'eg > ogg"$d. .rimero activamos Icecast en el "ic:ero /etc/default/icecast% modi"icando la lnea de E3AM*E en true. 1es'ues nos dirigimos a /etc/icecast%/icecast.xml e incluimos un 'unto de montaje > con sus o'ciones. .ara :acer la 'rueba? algo b0sico como 'oner solo el nombre del 'unto de montaje: 4mount5 4mount-name5prueba.ogg4/mount-name5 4/mount5 &na ve# editado el "ic:ero? iniciamos el servicio de Icecast? > lan#amos el siguiente comando de 55m'eg > ogg"$d: ffmpeg -f video)linux% -r %1 -s #6 x#%) -i /dev/video -f alsa -i plugh*: + -f ogg /dev/stdout 7 oggf*d localhost 3 hac&me /prueba.ogg 1ebemos 'oner la o'cin -f ogg al "inal 'ara Aue surja un error de "ormato. Si el vdeo > el audio no est0n sincroni#ados? 'odemos usar la o'cin -async [n8 segundos] 'ara sincroni#arlo. Este comando enviar0 el vdeo en codec <:eora > el audio en codec 5lac.

"sar servidor (eb -pac.e como servicio de streaming bajo demanda en /0#L1
El servidor $eb A'ac:e tambiBn inclu>e la "uncin de servir vdeo de un "ic:ero en ;<4*!? con el codec 7eb4 'or ejem'lo. Esto sim'li"ica muc:o la tarea a la :ora de subir un vdeo a la $eb. .ara reali#ar esto debemos :acer algunos cambios en un "ic:ero e incluir en la $eb cdigo en ;<4*! 'ara Aue "uncione. .rimero tenemos Aue modi"icar el "ic:ero Aue :ace re"erencia a los ti'os mime del sistema? Aue es donde A'ac:e identi"ica la e/tensin de los "ic:eros. Esto se encuentra en /etc/mime.types.

.0gina % de %-

Streaming multimedia AEadimos en este "ic:ero estas dos lneas: audio/*ebm video/*ebm *eba *ebm

Alejandro Romero Abada

1e esta "orma A'ac:e 'odr0 identi"icar los "ic:eros 7eb4 > o"recerlo en la $eb sin 'roblemas. 1ebemos tener un "ic:ero en "ormato 7eb4 'ara :acer la 'rueba. .odemos obtenerlo grabando con la $ebcam > 55m'eg con el siguiente comando: ffmpeg -f video)linux% -r %1 -s 26 x%) -i /dev/video -f alsa -i plugh*: + -f *ebm /var/***/video.*ebm Este comando grabar0 vdeo con el codec ).( > el audio en )orbis. A:ora incor'oramos el cdigo ;<4*! en la $eb con la etiAueta 4video5: Gvideo srcSLvideo.$ebmL controlsHGFvideoH 'or su'uesto? 'ara 'oder visuali#arlo? tenemos Aue usar un navegador Aue sea com'atible con ;<4*!? Aue a da de :o>? son la ma>ora.

!l ser"idor +tream-m (experimental)


Stream=m es un servidor de vdeo basado en 7eb4 > Aue est0 en un estado e/'erimental? 'or lo tanto sus cualidades son mu> limitadas > sus o'ciones escasas. Aun as es bastante estable 'ara la versin en la Aue se encuentra. Al igual Aue Icecast? este servidor solo se encarga de distribuir el contenido de a los clientes? dejando la codi"icacin a otro 'rograma? 'or ejem'lo a 55m'eg. Este servidor 'odemos descargarlo de su $eb aAu. 3os descargamos el "ic:ero com'rimido Kstream=m= r,8= -,,-8 6.#i'L.

.0gina 6 de %-

Streaming multimedia Realicemos un ejem'lo:

Alejandro Romero Abada

&na ve# descargado el "ic:ero? creamos un directorio 'ara descom'rimirlo. *o :acemos de esta "orma: un$ip stream-m-r#!-% ## !%".$ip Se descom'rimir0n todos los "ic:eros necesarios 'ara el "uncionamiento del servidor. Este servidor? a di"erencia de otros? no se instala? sino Aue se :ace "uncionar mediante un comando. +o'iamos el "ic:ero server.conf.sample > lo 'egamos en el mismo directorio con el nombre de server.conf 'ara usarlo o :acer modi"icaciones en el sin modi"icar el original. &na ve# creado el "ic:ero? ejecutamos el siguiente comando: 'ava -cp lib/stream-m.'ar 0treaming0erver server.conf Se ejecutar0 el servidor > mostrar0 el log del servicio. A continuacin? usaremos 55m'eg 'ara o"recerle el vdeo al servidor: ffmpeg -f video)linux% -r %1 -s 26 x%) -i /dev/video -f alsa -i plugh*: + -f *ebm http://localhost:3 3 /publish/first9pass*ord:secret +on esto se enviar0 al servidor el vdeo de la $ebcam > el audio del micr"ono en "ormato 7eb4. <odos estos 'asos vienen descritos en el "ic:ero REA14E del directorio del servidor como 'uede ser el nombre del stream (K"irstL) o la contraseEa de dic:o stream (KsecretL). .ara ver el vdeo? 'odemos incluir una lnea en la '0gina $eb Aue est0 o"reciendo A'ac:e. Al igual Aue la 'rueba del servidor bajo demanda con A'ac:e? 'odemos incluir la misma lnea? 'ero en ve# de indicar el "ic:ero de vdeo? indicamos una &R*? Aue es donde est0 emitiendo Stream=m. .or ejem'lo: 4video src:,http://localhost:3 3 /custome/first, controls54/video5 Se inclu>e la 'alabra K'ublis:L en la &R* 'ara enviar al servidor el vdeo? > la 'alabra KcustomeL en la &R* 'ara ver el vdeo.

.0gina ( de %-

Streaming multimedia

Alejandro Romero Abada

Servidor *lumotion
5lumotion es un servidor de vdeo tanto en directo como bajo demanda escrito en '>t:on > desarrollado 'or la em'resa es'aEola 5lumotion Services. El servidor 'uede adAuirirse de "orma gratuita > en "orma de 'ago? la cual la de 'ago o"rece mas o'ciones > :erramientas. En este 'ro>ecto se usar0 el servidor b0sico gratuito. .odemos ver su documentacin o"icial aAu. *a arAuitectura de 5lumotion es distinta a la de los dem0s servidores de streaming. Se basa en se'arar el "lujo en com'onentes > organi#arlos seg@n su "uncin.

+omo 'odemos ver en la imagen? el "lujo son se'arados 'or com'onentes? Aue tienen una "uncin es'ec"ica: .roducer: Se encargan de tomar la in"ormacin Aue dan los dis'ositivos? "ic:eros u otros streaming desde la Red. Sera como el origen del "lujo. AAu toman la in"ormacin de una $ebcam? micr"ono? dis'ositivo de <)? etc. Encoder: Se encargan de codi"icar la in"ormacin o"recida 'or el .roducer. .ueden codi"icar a t:eora? ).(? etc en el caso de vdeo? o vorbis? m'3? etc en el caso de audio. +onverter: +onvierte la imagen a distintos "ormatos. <ambiBn contiene numerosas o'ciones 'ara manejar la imagen. 4u/er: Enca'sula el audio > el vdeo resultante a un "ormato contenedor como 'ueden ser ogg? avi? $ebm? etc. ;<<. AudioF)ideo: Servidor ;<<. de streaming. Sirve las 'eticiones de los clientes. Mouncer: 4ecanismos de seguridad entre los com'onentes. .ort *istener: Escuc:a las 'eticiones en el 'uerto indicado en el servidor. .0gina 8 de %-

Streaming multimedia

Alejandro Romero Abada

5lo$ es donde se encuentra el 'rocesado del "lujo de datos > la atms"era es el 'aso intermedio entre la Red > el "lujo. *a atms"era 'uede contener com'onentes de seguridad? como 'ueden ser la restriccin de usuarios o veri"icar la seguridad entre los distintos com'onentes? >a Aue dic:os com'onentes 'ueden estar en distintos eAui'os. .or @ltimo? todo se engloba en un 'laneta? Aue es todo el servicio de 5lumotion. <ambiBn se 'uede observar la 'resencia de manager > $orOer. 4anager es Auien controla el 'roceso de streaming > los $orOer son los Aue crean los 'rocesos de los com'onentes? com'onentes? como >a se dijo? 'ueden estar en distintos eAui'os? 'or lo tanto en cada uno de ellos :abra $orOer trabajando tambiBn.

Instalacin
Este servidor 'uede ser instalado en &buntu desde los re'ositorios: aptitude install flumotion Al instalarlo desde los re'ositorios? el directorio de instalacin de 5lumotion ser0 K/etc/flumotionL? si se com'ila? se instalar0 donde se :a>a com'ilado. 1ado Aue la 'rueba se reali#ar0 en 1ebian? tendremos Aue descargarnos el "ic:ero 'ara com'ilarlo? Aue 'odemos descargarlo desde aAu. 1escargamos la @ltima versin? K"lumotion=-=,-=-.tar.g#L. A continuacin lo descom'rimimos: tar xv$f flumotion- -# - .tar.g$ Se descom'rimir0 un directorio con todas las :erramientas 'ara com'ilar? 'ero antes debemos resolver una serie de de'endencias. .odemos leer estos reAuisitos en el "ic:ero REA14E. 1ado Aue las de'endencias de 2streamer est0n instaladas 'or de"ecto en 1ebian? instalaremos las siguientes: build=essential '>t:on .%=dev libg:c%=gstreamer=dev '>t:on=#bar'>gtO .0gina 3- de %-

Streaming multimedia '>t:on .%=t$isted '>t:on=Oi$i '>t:on .%=cairo libvorbis=dev libt:eora=dev libogg=dev

Alejandro Romero Abada

+on"iguramos: ./configure +om'ilamos: ma&e -'% Y 'or @ltimo lo instalamos: ma&e install

Interfaz gr fico

5lumotion 'uede con"igurarse 'or medio de "ic:eros de con"iguracin como tambiBn 'or su inter"a# gr0"ico. .ara abrirlo? ejecutamos el siguiente comando: flumotion-admin

.0gina 3, de %-

Streaming multimedia

Alejandro Romero Abada

3os a'arecer0 el administrador gr0"ico. +on Bl 'odemos con"igurar los manager 'aso a 'aso? 'ero sin 'oder con"igurar ciertos detalles Aue en los "ic:eros de con"iguracin si 'odemos. ;e aAu una ca'tura del asistente:

.odemos elegir entre tres o'ciones. +on la 'rimera 'odemos abrir una cone/in con un manager Aue :a>amos arrancado anteriormente. *a segunda consiste en conectarse a un manager Aue est0 corriendo a:ora mismo. +on la tercera o'cin 'odemos crear un nuevo manager desde cero? con el asistente.

.0gina 3 de %-

Streaming multimedia Seleccionamos la tercera o'cin > comen#ar0 la con"iguracin.

Alejandro Romero Abada

3os indicar0 Aue se crear0 un manager? un $orOer > solo se 'odr0 acceder a este manager de "orma local. +ontinuamos.

.0gina 33 de %-

Streaming multimedia

Alejandro Romero Abada

El manager > el $orOer est0n creados > a:ora el asistente se conectar0 a ellos? 3os indica tambiBn las rutas de los "ic:eros de con"iguracin > de los log? > el comando 'ara detener el manager > el $orOer.

Vdeo en directo (live)

Avan#amos mas? > nos a'arecer0 una 'antalla 'ara seleccionar lo Aue Aueremos :acer. .or el momento elegimos crear un streaming en directo (live).

.0gina 34 de %-

Streaming multimedia

Alejandro Romero Abada

En la siguiente o'cin? 'odemos seleccionar el tener vdeo > audio. En ellas 'odemos elegir distintos dis'ositivos. 1ado Aue en esta 'rueba se reali#ar0 con una $ebcam &SMFintegrada > con el micr"ono? elegimos en vdeo K7eb cameraL > en audio KSound cardL. +ontinuamos.

.0gina 3! de %-

Streaming multimedia

Alejandro Romero Abada

Se detectar0 la c0mara > sus caractersticas? > 'odemos con"igurarlas a nuestro gusto. Elegimos Aue el $orOer est0 en local:ost.

.odemos elegir un te/to 'ara Aue se su'er'onga en la imagen > mostrar un logo. .odemos desactivarlas si Aueremos.

.0gina 3% de %-

Streaming multimedia

Alejandro Romero Abada

A:ora con"iguramos las o'ciones de la tarjeta de sonido. Elegimos el micr"ono como dis'ositivo de entrada de audio.

.0gina 36 de %-

Streaming multimedia

Alejandro Romero Abada

En la siguiente 'antalla 'odemos ver Aue tenemos la o'cin de cambiar los codecs de vdeo > audio? adem0s de elegir el "ormato contenedor. A'arecer0n los Aue est0n instalados en 5lumotion. Elegimos <:eora como vdeo? )orbis como audio? > 9gg como "ormato contenedor.

1es'uBs nos encontraremos con una 'antalla Aue nos muestra la con"iguracin de vdeo <:eora. .odemos cambiar entre la tasa de bits o calidad. Si mantenemos la tasa de bits? 'odemos con"igurarlo de "orma Aue el anc:o de banda sea constante? 'ero la calidad del vdeo 'uede variar en alg@n momento. Si seleccionamos calidad? 5lumotion intentar0 Aue la calidad del vdeo sea la misma durante la re'roduccin? variando la tasa de bits > 'or tanto el anc:o de banda. *a calidad 'uede tomar un valor entre - > %3.

.0gina 3( de %-

Streaming multimedia

Alejandro Romero Abada

*as o'ciones avan#adas son o'ciones mas concretas del codec <:eora. .odemos variar el tiem'o de "otogramas clave > la velocidad.

A continuacin se 'rocede a con"igurar un 'ar de o'ciones de )orbis. Al igual Aue <:eora? 'odemos cambiar entre la tasa de bits > la calidad.

.0gina 38 de %-

Streaming multimedia

Alejandro Romero Abada

+ontinuamos. *o siguiente ser0 con"igurar unas o'ciones sobre la "orma de servir el contenido. .odemos servirlo 'or ;<<.? 'or medio del servidor de streaming? guardarlo en disco o enviarlo a un servidor de streaming Icecast. Elegimos 'or a:ora la 'rimera o'cin.

El siguiente 'aso es con"igurar o'ciones como el 'unto de anclaje? o 'unto de montaje. AAu se de"ine la &R* 'ara acceder al contenido. .odemos cambiar el 'uerto? limitar el anc:o de banda? limitar el n@mero de clientes? etc. .odemos activar la r0"aga de cone/in (burst)? Aue consiste en reducir el tiem'o en Aue se llena el bu""er en el cliente antes de comen#ar con la re'roduccin. Solo sera al comien#o? des'uBs el "lujo se enviara a la velocidad con"igurada. <ambiBn se 'uede indicar el nombre del servidor. Si activamos el 'ublicar un re'roductor embebido en ;<4*!? los clientes Aue accedan a la &R* desde el navegador 'odr0n ver el vdeo con un re'roductor ;<4*!.

.0gina 4- de %-

Streaming multimedia

Alejandro Romero Abada

Ya terminamos de con"igurar el manager. A continuacin nos a'arecer0 una ventana mostrando el estado de los com'onentes. .odemos desde aAu detenerlos o arrancarlos. Adem0s 'odemos cambiar en tiem'o real algunas o'ciones de vdeo > ver las estadsticas del servidor.

.0gina 4, de %-

Streaming multimedia

Alejandro Romero Abada

Entre las o'ciones de K+one/inL 'odemos :acer algunas de las o'ciones Aue nos o"reca el asistente? como conectarse a otro stream en ejecucin? conectarse a uno reciente? etc. <ambiBn nos da la 'osibilidad de e/'ortar e im'ortar la con"iguracin Aue tengamos del stream. Al e/'ortarla? nos dar0 un "ic:ero D4* con la con"iguracin del 'laneta. En Bl 'odemos ver cmo est0n con"igurados los com'onentes. En la 'estaEa KAdministrarL 'odemos manejar los com'onentes? 'ararlos? ejecutarlos? o incluso crear un nuevo stream a 'artir del Aue tenemos? as como ejecutar de nuevo el asistente. En K1e'uracinL 'odemos activarlo 'ara ver con m0s detalle la con"iguracin de cada com'onente? mostr0ndonos m0s 'estaEas en cada com'onente.

)ic.eros de configuracin

.odemos tener una re"erencia del "ic:ero de con"iguracin e/'ortando la con"iguracin de un stream desde el administrador gr0"ico. En el 'odemos ver cmo est0n dis'uestos los com'onentes > de Aue "orma con"igurarlos? aunAue en la documentacin o"icial vienen indicadas m0s o'ciones 'ara los com'onentes > su e/'licacin. En la 'rueba usamos los directorios KmanagerL > K$orOerL Aue est0n en el directorio de instalacin de 5lumotion? flumotion- .# . /conf/. En caso de Aue :ubieramos instalado 'or re'ositorios? estara en /etc/flumotion.

.0gina 4 de %-

Streaming multimedia

Alejandro Romero Abada

Vdeo bajo demanda (V2D)

Este es un ejem'lo de "ic:ero de con"iguracin en D4* usado 'ara o"recer vdeo bajo demanda. Se e/'licar0n los com'onentes > sus 'ro'iedades:
G'lanetH Gmanager nameSZ'lanetZH G:ostH, 6.-.-.,GF:ostH G^== G:ostHGF:ostH G'ortHGF'ortH Gtrans'ortHGFtrans'ortH Gcerti"icateHGFcerti"icateH ==H G^== 5ID4E: $ould be nice i" $e "ind a $a> to :ave t:is be overridden b> eit:er env var or cmd line o'tion GdebugH!GFdebugH ==H Gcom'onent nameSZmanager=bouncerZ t>'eSZ:t'ass$dcr>'t=bouncerZH G'ro'ert> nameSZdataZHG^[+1A<A[ user:.S"3';<O'</,4 \\HGF'ro'ert>H GFcom'onentH GFmanagerH Gatmos':ereH Gcom'onent nameSZ:tt'=server=ondemandZ t>'eSZ:tt'=serverZ labelSZ:tt'=server=ondemandZ $orOerSZlocal:ostZ 'rojectSZ"lumotionZ versionSZ-.,-.-ZH G'ro'ert> nameSZmount='ointZHFGF'ro'ert>H G'ro'ert> nameSZ'ortZH((--GF'ro'ert>H G'ro'ert> nameSZ'at:ZHFvarFstreamingGF'ro'ert>H G'lugsH GF'lugsH GFcom'onentH GFatmos':ereH GF'lanetH

.0gina 43 de %-

Streaming multimedia

Alejandro Romero Abada

+omo se 'uede a'reciar? el "ic:ero lo abre la etiAueta G'lanetH? Aue engloba toda la con"iguracin. *o siguiente ser0 'oner un nombre al manager: Gmanager nameSZ'lanetZH 1entro de esta etiAueta 'odemos 'oner algunas o'ciones como el nombre o direccin I. del :ost. AAu tambiBn se inclu>e estas lneas:
Gcom'onent nameSZmanager=bouncerZ t>'eSZ:t'ass$dcr>'t=bouncerZH G'ro'ert> nameSZdataZHG^[+1A<A[ user:.S"3';<O'</,4 \\HGF'ro'ert>H GFcom'onentH

+abe destacar Aue todo el "ic:ero se basa ma>oritariamente en incluir un com'onente con un nombre > aEadirle 'ro'iedades > 'lugs. Esta lnea es necesaria 'ara 'oder usar el manager > 'oder ejecutar el $orOer. A:ora comien#a el bloAue re"erido a la atms"era. Ya Aue solo se trata de un servidor bajo demanda? solo se servir0n los "ic:eros alojados en disco? no sera necesario crear un "lujo como en el vdeo en directo.
Gatmos':ereH Gcom'onent nameSZ:tt'=server=ondemandZ t>'eSZ:tt'=serverZ labelSZ:tt'=server=ondemandZ $orOerSZlocal:ostZ 'rojectSZ"lumotionZ versionSZ-.,-.-ZH G'ro'ert> nameSZmount='ointZHFGF'ro'ert>H G'ro'ert> nameSZ'ortZH((--GF'ro'ert>H G'ro'ert> nameSZ'at:ZHFvarFstreamingGF'ro'ert>H G'lugsH GF'lugsH GFcom'onentH GFatmos':ereH

Solo ser0 necesario un com'onente? en este caso el servidor bajo demanda. Indicamos el nombre del com'onente servidor bajo demanda? K:tt'=server=ondemandL. *o siguiente ser0 indicar algunos as'ectos Aue va a tener el servidor. 1ebemos indicar el ti'o de servidor 'ara Aue 5lumotion entienda de Aue se trata de un servidor ;<<.. .onemos K:tt'=serverL. .odemos 'oner una descri'cin? Aue ira en KlabelL. .onemos Aue el $orOer est0 en la m0Auina local. *as o'ciones de K'rojectL > KversinL son o'cionales? 'odemos incluir in"ormacin de la versin o del 'ro>ecto. *o siguiente ser0 con"igurar las 'ro'iedades Aue tendr0 el servidor. .ara indicarlas? siem're usaremos K'ro'ert> nameS[nombre de la 'ro'iedad\L. Esto lo 'ondremos en "orma de etiAuetas? > entre la a'ertura > el cierre de dic:as etiAuetas? 'ondremos el valor Aue nos interese. .0gina 44 de %-

Streaming multimedia

Alejandro Romero Abada

*a 'rimera ser0 Kmount='ointL. Esta 'ro'iedad indica cu0l ser0 el 'unto de montaje 'ara acceder al contenido. .onemos KFL? de esta "orma accederemos al contenido 'oniendo en un re'roductor o en un re'roductor incrustado en la $eb con la &R* K:tt':FFlocal:ost:((--F [nombredel"ic:ero.e/tensin\L. Indicamos el 'uerto en la 'ro'iedad K'ortL? Aue ser0 el ((--. .or @ltimo? indicamos la ruta del directorio donde se encuentran los "ic:eros de vdeo >Fo audio. <ambiBn es 'osible incluir 'lugs? de los cuales se e/'licar0n mas adelante.

Vdeo en directo (live)

Ejem'lo de con"iguracin de un servicio de vdeo en directo:


G_/ml versionSZ,.-Z encodingSZ&<5=(Z_H G'lanet nameSZ'lanetZH Gmanager nameSZ'lanetZH G:ostH, 6.-.-.,GF:ostH Gcom'onent nameSZmanager=bouncerZ t>'eSZ:t'ass$dcr>'t=bouncerZH G'ro'ert> nameSZdataZHG^[+1A<A[ user:.S"3';<O'</,4 \\HGF'ro'ert>H GFcom'onentH GFmanagerH Gatmos':ereH Gcom'onent nameSZ:tt'=server=audio=videoZ t>'eSZ:tt'=serverZ labelSZ:tt'=server=audio=videoZ $orOerSZlocal:ostZ 'rojectSZ"lumotionZ versionSZ-.,-.-ZH G'ro'ert> nameSZ'orter=usernameZHoD3I"</Y3)$IGF'ro'ert>H G'ro'ert> nameSZmount='ointZHFogg=audio=videoF:tml!FGF'ro'ert>H G'ro'ert> nameSZ:ostnameZHdebian.localGF'ro'ert>H G'ro'ert> nameSZ'orter='ass$ordZHur+E'4$3Rs;+GF'ro'ert>H G'ro'ert> nameSZt>'eZHslaveGF'ro'ert>H G'ro'ert> nameSZ'orter=socOet='at:ZH"lu=.r`jm$.socOetGF'ro'ert>H G'ro'ert> nameSZ'ortZH((--GF'ro'ert>H G'lugsH G'lug t>'eSZcom'onent=:tml!ZH G'ro'ert> nameSZ$idt:ZH%4-GF'ro'ert>H G'ro'ert> nameSZstream=urlZH:tt':FFdebian.local:((--Fogg=audio=videoFGF'ro'ert>H G'ro'ert> nameSZcodecsZHvorbis?t:eoraGF'ro'ert>H G'ro'ert> nameSZmime=t>'eZHvideoFoggGF'ro'ert>H G'ro'ert> nameSZ:eig:tZH4(-GF'ro'ert>H GF'lugH GF'lugsH GFcom'onentH

.0gina 4! de %-

Streaming multimedia
Gcom'onent nameSZ'orter=:tt'Z t>'eSZ'orterZ labelSZ'orter=:tt'Z $orOerSZlocal:ostZ 'rojectSZ"lumotionZ versionSZ-.,-.-ZH G'ro'ert> nameSZusernameZHoD3I"</Y3)$IGF'ro'ert>H G'ro'ert> nameSZsocOet='at:ZH"lu=.r`jm$.socOetGF'ro'ert>H G'ro'ert> nameSZ'ass$ordZHur+E'4$3Rs;+GF'ro'ert>H G'ro'ert> nameSZ'ortZH((--GF'ro'ert>H GFcom'onentH GFatmos':ereH G"lo$ nameSZde"aultZH Gcom'onent nameSZ'roducer=audioZ t>'eSZsoundcard='roducerZ labelSZ'roducer=audioZ $orOerSZlocal:ostZ 'rojectSZ"lumotionZ versionSZ-.,-.-ZH G'ro'ert> nameSZdeviceZH:$:-GF'ro'ert>H G'ro'ert> nameSZc:annelsZH GF'ro'ert>H G'ro'ert> nameSZde't:ZH,%GF'ro'ert>H G'ro'ert> nameSZin'ut=tracOZH+a'turarGF'ro'ert>H G'ro'ert> nameSZsam'lerateZH44,--GF'ro'ert>H GclocO=masterHtrueGFclocO=masterH GFcom'onentH Gcom'onent nameSZ'roducer=videoZ t>'eSZ$ebcam='roducerZ labelSZ'roducer=videoZ $orOerSZlocal:ostZ 'rojectSZ"lumotionZ versionSZ-.,-.-ZH G'ro'ert> nameSZ"ormatZHY&Y GF'ro'ert>H G'ro'ert> nameSZ"ramerateZH F,GF'ro'ert>H G'ro'ert> nameSZ:eig:tZH4(-GF'ro'ert>H G'ro'ert> nameSZ$idt:ZH%4-GF'ro'ert>H G'ro'ert> nameSZmimeZHvideoF/=ra$=>uvGF'ro'ert>H G'ro'ert> nameSZelement="actor>ZHv4l srcGF'ro'ert>H G'ro'ert> nameSZdeviceZHFdevFvideo-GF'ro'ert>H GclocO=masterH"alseGFclocO=masterH GFcom'onentH Gcom'onent nameSZencoder=videoZ t>'eSZt:eora=encoderZ labelSZencoder=videoZ $orOerSZlocal:ostZ 'rojectSZ"lumotionZ versionSZ-.,-.-ZH Geater nameSZde"aultZH G"eed aliasSZde"aultZH'roducer=video:de"aultGF"eedH GFeaterH G'ro'ert> nameSZOe>"rame=ma/distanceZH44GF'ro'ert>H G'ro'ert> nameSZs'eedZH3GF'ro'ert>H G'ro'ert> nameSZbitrateZH4-----GF'ro'ert>H GclocO=masterH"alseGFclocO=masterH

Alejandro Romero Abada

.0gina 4% de %-

Streaming multimedia
GFcom'onentH Gcom'onent nameSZencoder=audioZ t>'eSZvorbis=encoderZ labelSZencoder=audioZ $orOerSZlocal:ostZ 'rojectSZ"lumotionZ versionSZ-.,-.-ZH Geater nameSZde"aultZH G"eed aliasSZde"aultZH'roducer=audio:de"aultGF"eedH GFeaterH G'ro'ert> nameSZbitrateZH%4---GF'ro'ert>H GclocO=masterH"alseGFclocO=masterH GFcom'onentH Gcom'onent nameSZmu/er=audio=videoZ t>'eSZogg=mu/erZ labelSZmu/er=audio=videoZ $orOerSZlocal:ostZ 'rojectSZ"lumotionZ versionSZ-.,-.-ZH Geater nameSZde"aultZH G"eed aliasSZde"aultZHencoder=audio:de"aultGF"eedH G"eed aliasSZde"ault=bisZHencoder=video:de"aultGF"eedH GFeaterH GclocO=masterH"alseGFclocO=masterH GFcom'onentH Gcom'onent nameSZ:tt'=audio=videoZ t>'eSZ:tt'=streamerZ labelSZ:tt'=audio=videoZ $orOerSZlocal:ostZ 'rojectSZ"lumotionZ versionSZ-.,-.-ZH Geater nameSZde"aultZH G"eed aliasSZde"aultZHmu/er=audio=video:de"aultGF"eedH GFeaterH G'ro'ert> nameSZburst=on=connectZH5alseGF'ro'ert>H G'ro'ert> nameSZ'orter=usernameZHoD3I"</Y3)$IGF'ro'ert>H G'ro'ert> nameSZmount='ointZHFogg=audio=videoFGF'ro'ert>H G'ro'ert> nameSZ'ortZH((--GF'ro'ert>H G'ro'ert> nameSZt>'eZHslaveGF'ro'ert>H G'ro'ert> nameSZ'orter=socOet='at:ZH"lu=.r`jm$.socOetGF'ro'ert>H G'ro'ert> nameSZ'orter='ass$ordZHur+E'4$3Rs;+GF'ro'ert>H GclocO=masterH"alseGFclocO=masterH G'lugsH GF'lugsH GFcom'onentH GF"lo$H GF'lanetH

Alejandro Romero Abada

Nota' debian.local puede cambiarse por local ost o la 12 actual del sistema para .ue sea accesible desde la red. .0gina 46 de %-

Streaming multimedia

Alejandro Romero Abada

En este "ic:ero? al igual Aue el de bajo demanda? .onemos la lnea re"erente a usuario > contraseEa del manager 'ara Aue el $orOer 'ueda "uncionar. Al con"igurar la atms"era? comen#amos a incluir com'onentes? Aue en este caso? ser0n mas numerosos. El 'rimer com'onente del ejem'lo consiste en Aue 5lumotion o"recer0 un re'roductor ;<4*! si accedemos desde el navegador a la &R* del contenido (si no Aueremos Aue se muestre en el navegador con un re'roductor incrustado 'odemos omitir el com'onente). .rimero se con"igurara el servidor ;<<. > des'uBs 'or la etiAueta 'lug? las cualidades del re'roductor. En las o'ciones del servidor? indicamos el ti'o? en este caso K:tt'=serverL? > las dem0s o'ciones? al igual Aue en la 'rueba bajo demanda. En todo el "ic:ero se usar0 la misma in"ormacin e/ce'to en el ti'o? Aue ser0 di"erente en cada com'onente? 'ara Aue 5lumotion 'ueda distinguir entre ellos. A continuacin? 'ondremos algunos datos del com'onente K'orterL. Este com'onente se encarga de escuc:ar las 'eticiones de los clientes en un determinado 'uerto > 'as0rselas al servidor de streaming (:tt'=streamer)> al de ;<<. (:tt'=server). .odemos 'oner en K'orter=usernameL cualAuier nombre de usuario. En el ejem'lo est0 escrito el Aue con"igur el administrador gr0"ico? aunAue 'odemos 'oner el Aue Aueramos. *o mismo con la contraseEa? K'orter='ass$ordL. En K'orter=socOet.'at:L establecemos el nombre Aue tendr0 el socOet donde se comunicar0n el 'orter con los servidores de streaming > ;<<.. .ondremos el 'unto de montaje donde se servir0 el re'roductor ;<4*!? en este caso ser0 Fogg= audio=videoF:tml!. El el ejem'lo? la 'ro'iedad de K:ostnameL viene como Kdebian.localL? con"igurado tambiBn con el administrador gr0"ico? aunAue 'odemos 'oner tambiBn Klocal:ostL o la direccin I. del sistema. Si 'onemos la I. del sistema 'odemos visuali#ar el re'roductor ;<4*! desde otro eAui'o de la red. *a siguiente o'cin a indicar es Kt>'eL? donde indicamos de AuB "orma va a escuc:ar el com'onente. *as dos o'ciones son KmasterL > KslaveL. Si no 'onemos nada? la o'cin 'or de"ecto ser0 KmasterL? > 'or tanto escuc:ar0 directamente en el 'uerto indicado. En el caso de KslaveL? escuc:ar0 en el 'uerto 'ero a travBs del K'orterL? el cu0l este sera intermediario entre la red > el servidor ;<<. o el servidor de streaming. 1es'uBs indicamos el 'uerto (K'ortL) como el ((--? Aue es donde vendr0n las 'eticiones. En la etiAueta K'lugL 'ondremos las caractersticas de un re'roductor ;<4*!. *o indicamos 'oniendo como nombre Kcom'onent=:tml!L. +on"iguramos las dimensiones Aue va a tener el re'roductor? Aue van a ser %4- de K$idt:L (anc:o) > 4(- de K:eig:tL (alto). 1e"inimos la &R* 'ara acceder desde el navegador? en este caso K:tt':FFdebian.local:((--Fogg.audio=videoFL. A:ora con"iguramos Aue codecs va a re'roducir el re'roductor. +omo el vdeo estar0 codi"icado en t:eora > vorbis? de"inimos en KcodecsL los codecs Kvorbis?t:eoraL. Y el ti'o de vdeo en Kmime= t>'eL como KvideoFoggL.

.0gina 4( de %-

Streaming multimedia

Alejandro Romero Abada

+erramos las corres'ondientes etiAuetas > 'asamos al siguiente com'onente:


Gcom'onent nameSZ'orter=:tt'Z t>'eSZ'orterZ labelSZ'orter=:tt'Z $orOerSZlocal:ostZ 'rojectSZ"lumotionZ versionSZ-.,-.-ZH G'ro'ert> nameSZusernameZHoD3I"</Y3)$IGF'ro'ert>H G'ro'ert> nameSZsocOet='at:ZH"lu=.r`jm$.socOetGF'ro'ert>H G'ro'ert> nameSZ'ass$ordZHur+E'4$3Rs;+GF'ro'ert>H G'ro'ert> nameSZ'ortZH((--GF'ro'ert>H GFcom'onentH

En este bloAue de"inimos la con"iguracin del 'orter? necesario 'ara Aue los com'onentes del servidor ;<<. > de streaming 'uedan ser accedidos a la red a travBs de este. .ara ello ambos com'onentes deben de ser ti'o esclavo (slave). .onemos el como nombre K'orter=:tt'L 'or ejem'lo. El ti'o lo de"inimos como K'orterL > el resto de atributos son los t'icos Aue vamos 'oniendo en el "ic:ero. .onemos el KusernameL > el K'ass$ordL como Aueramos. El KsocOet='at:L tambiBn lo de"inimos como Aueramos > el K'ortL lo indicamos como ((--. <odas estas 'ro'iedades deben coincidir en los com'onentes ;<<. > streamer. +erramos la atms"era > comen#amos con el "lujo ("lo$). El nombre del "lujo est0 de"inido como Kde"aultL en esta 'rueba.
Gcom'onent nameSZ'roducer=audioZ t>'eSZsoundcard='roducerZ labelSZ'roducer=audioZ $orOerSZlocal:ostZ 'rojectSZ"lumotionZ versionSZ-.,-.-ZH G'ro'ert> nameSZdeviceZH:$:-GF'ro'ert>H G'ro'ert> nameSZc:annelsZH GF'ro'ert>H G'ro'ert> nameSZde't:ZH,%GF'ro'ert>H G'ro'ert> nameSZin'ut=tracOZH+a'turarGF'ro'ert>H G'ro'ert> nameSZsam'lerateZH44,--GF'ro'ert>H GclocO=masterHtrueGFclocO=masterH GFcom'onentH

Este com'onente es el Aue se encarga de tomar el audio del dis'ositivo de audio. .uede ser la tarjeta de sonido? sonido test Aue viene con 5lumotion? etc. En esta 'rueba est0 con"igurado 'ara Aue ca'ture el sonido del micr"ono. 1e"inimos el nombre K'roducer=audioL. El ti'o tiene Aue ser Ksoundcard='roducerL 'ara Aue tome el sonido de la tarjeta de sonido. En las 'ro'iedades? de"inimos el dis'ositivo A*SA K:$:-L? Aue es el dis'ositivo de ca'tura de audio. En Kc:annelsL (canales) de"inimos 'ara Aue sea estereo. .onemos en Kde't:L el n@mero ,% Aue es el n@mero de bits 'or muestra (sam'le) Aue tendr0 el audio. 3ormalmente el sonido de ,% .0gina 48 de %-

Streaming multimedia

Alejandro Romero Abada

bits 'or muestra es utili#ado en los +1 de audio. +on"iguramos Kin'ut=tracOL como K+a'turarL. Esta es la etiAueta del dis'ositivo de ca'tura. *o siguiente ser0 con"igurar el Ksam'lerateL. El sam'lerate ("recuencia de muestreo) com@nmente usado es 44,-- ;#? tambiBn mu> usado en los +1 de audio. .asamos al siguiente com'onente? el K'roducer=videoL:
Gcom'onent nameSZ'roducer=videoZ t>'eSZ$ebcam='roducerZ labelSZ'roducer=videoZ $orOerSZlocal:ostZ 'rojectSZ"lumotionZ versionSZ-.,-.-ZH G'ro'ert> nameSZ"ormatZHY&Y GF'ro'ert>H G'ro'ert> nameSZ"ramerateZH F,GF'ro'ert>H G'ro'ert> nameSZ:eig:tZH4(-GF'ro'ert>H G'ro'ert> nameSZ$idt:ZH%4-GF'ro'ert>H G'ro'ert> nameSZmimeZHvideoF/=ra$=>uvGF'ro'ert>H G'ro'ert> nameSZelement="actor>ZHv4l srcGF'ro'ert>H G'ro'ert> nameSZdeviceZHFdevFvideo-GF'ro'ert>H GclocO=masterH"alseGFclocO=masterH GFcom'onentH

+omo en los dem0s com'onentes? 'onemos el nombre del com'onente > sus dem0s o'ciones. En ti'o establecemos K$ebcam='roducerL >a Aue el vdeo se tomar0 de una $ebcam. En K"ormatL establecemos el "ormato de vdeo de origen? en este caso Y&Y ? Aue es el "ormato nativo de la $ebcam. 9tro "ormato de $ebcam 'uede ser I4 -? aunAue e/isten variedad de "ormatos m0s. En K"ramerateL establecemos los "rames 'or segundo ("'s)? en este caso . .onemos la resolucin? 4(- como K:eig:tL > %4- como K$idt:L. El ti'o mime lo 'onemos con la 'ro'iedad KmimeL? > ser0 KvideoF/=ra$=>uvL? Aue es el "ormato nativo de la $ebcam. &samos Kelement= "actor>L 'ara establecer la A.I de ca'tura de vdeo? en este caso Kv4l srcL (video4linu/ ). .or @ltimo? indicamos el dis'ositivo Aue re'resenta a la $ebcam? KFdevFvideo-L. *o siguiente ser0 con"igurar los codecs de vdeo > audio. 1e aAu saldr0 la codi"icacin "inal Aue se va a o"recer a los usuarios:
Gcom'onent nameSZencoder=videoZ t>'eSZt:eora=encoderZ labelSZencoder=videoZ $orOerSZlocal:ostZ 'rojectSZ"lumotionZ versionSZ-.,-.-ZH Geater nameSZde"aultZH G"eed aliasSZde"aultZH'roducer=video:de"aultGF"eedH GFeaterH G'ro'ert> nameSZOe>"rame=ma/distanceZH44GF'ro'ert>H G'ro'ert> nameSZs'eedZH3GF'ro'ert>H G'ro'ert> nameSZbitrateZH4-----GF'ro'ert>H GclocO=masterH"alseGFclocO=masterH GFcom'onentH

.0gina !- de %-

Streaming multimedia

Alejandro Romero Abada

+on"iguramos las caractersticas del com'onente? de ti'o Kt:eora=encoderL? >a Aue lo vamos a codi"icar el vdeo en <:eora. A 'artir de aAu a'arecen un 'ar de nuevas etiAuetas? KeaterL > K"eedL. *a etiAueta KeaterL consiste en indicar de dnde se va a tomar el "lujo de vdeo o audio? en este caso se tomar0 del com'onente anterior de vdeo? el K'roducer=videoL. +omo nombre del KeaterL 'onemos de"ault 'or ejem'lo. En el K"eedL 'onemos como alias de"ault tambiBn? > dentro de la etiAueta 'onemos el nombre Aue le dimos al com'onente Aue toma el vdeo en el origen? Aue es K'roducer=videoL. *o Aue viene des'uBs de los dos 'untos es 'ara di"erenciar si el com'onente tiene mas salidas. +omo solo tiene una en este ejem'lo? 'odemos Kde"aultL. En las 'ro'iedades como KOe>"rame=ma/distanceL 'onemos 44? Aue son la distancia m0/ima en "rames de los "rames clave? Aue son es'eci"icaciones tBcnicas de <:eora. A continuacin? establecemos al bitrate a 4----- bits 'or segundo. Esta 'ro'iedad se 'uede manejar de'endiendo del anc:o de banda.
Gcom'onent nameSZencoder=audioZ t>'eSZvorbis=encoderZ labelSZencoder=audioZ $orOerSZlocal:ostZ 'rojectSZ"lumotionZ versionSZ-.,-.-ZH Geater nameSZde"aultZH G"eed aliasSZde"aultZH'roducer=audio:de"aultGF"eedH GFeaterH G'ro'ert> nameSZbitrateZH%4---GF'ro'ert>H GclocO=masterH"alseGFclocO=masterH GFcom'onentH

+on"iguramos a:ora la codi"icacin del audio. El ti'o lo 'onemos como Kvorbis=encoderL? >a Aue en la 'rueba se utili#ar0 el codec )orbis 'ara el audio. +on"iguramos KeaterL > K"eedL. En este caso? 'onemos los nombres de"ault de nuevo? > 'onemos el nombre del com'onente 'roductor de audio? K'roducer=audioL > se'arados 'or dos 'untos? de"ault? >a Aue solo :abr0 una salida de audio. En las 'ro'iedades solo 'onemos Aue el bitrate ser0 a %4--bits 'or segundo. El resto de 'ro'iedades? como el sam'lerate? se dejar0n tal > como vienen desde el K'roducer=audioL.
Gcom'onent nameSZmu/er=audio=videoZ t>'eSZogg=mu/erZ labelSZmu/er=audio=videoZ $orOerSZlocal:ostZ 'rojectSZ"lumotionZ versionSZ-.,-.-ZH Geater nameSZde"aultZH G"eed aliasSZde"aultZHencoder=audio:de"aultGF"eedH G"eed aliasSZde"ault=bisZHencoder=video:de"aultGF"eedH GFeaterH GclocO=masterH"alseGFclocO=masterH GFcom'onentH

.0gina !, de %-

Streaming multimedia

Alejandro Romero Abada

*o siguiente ser0 con"igurar el com'onente Aue unir0 el "lujo de vdeo > el "lujo de audio > los enca'sular0 en un "ormato contenedor? como es el caso de 9gg. El ti'o de com'onente ser0 Kogg=mu/erL. A:ora 'ondremos dos entradas en KeaterL? >a Aue llegar0n dos "lujos. &n "eed lo llamamos de"ault 'or ejem'lo > de"inimos el nombre del com'onente anterior de audio? el codi"icador )orbis? Aue es Kencoder=audioL > se'arados 'or dos 'untos de"ault. El siguiente "eed lo 'onemos como de"ault=bis 'ara Aue no se sola'en? e indicamos el anterior com'onente de vdeo en el "lujo? Kencoder=videoL? > se'arado 'or dos 'untos de"ault.
Gcom'onent nameSZ:tt'=audio=videoZ t>'eSZ:tt'=streamerZ labelSZ:tt'=audio=videoZ $orOerSZlocal:ostZ 'rojectSZ"lumotionZ versionSZ-.,-.-ZH Geater nameSZde"aultZH G"eed aliasSZde"aultZHmu/er=audio=video:de"aultGF"eedH GFeaterH G'ro'ert> nameSZburst=on=connectZH5alseGF'ro'ert>H G'ro'ert> nameSZ'orter=usernameZHoD3I"</Y3)$IGF'ro'ert>H G'ro'ert> nameSZmount='ointZHFogg=audio=videoFGF'ro'ert>H G'ro'ert> nameSZ'ortZH((--GF'ro'ert>H G'ro'ert> nameSZt>'eZHslaveGF'ro'ert>H G'ro'ert> nameSZ'orter=socOet='at:ZH"lu=.r`jm$.socOetGF'ro'ert>H G'ro'ert> nameSZ'orter='ass$ordZHur+E'4$3Rs;+GF'ro'ert>H GclocO=masterH"alseGFclocO=masterH G'lugsH GF'lugsH GFcom'onentH

El @ltimo com'onente se encargar0 de servir el "lujo a la red. Es similar al com'onente ;<<. K:tt'= serverL? solo Aue este era 'ara mostrar una '0gina $eb con el re'roductor ;<4*!? > el Aue vamos a con"igurar ser0 el servidor de streaming 'ro'iamente dic:o Aue servir0 el "lujo. El ti'o de este com'onente ser0 K:tt'=streamerL? >a Aue el streaming se servir0 'or el 'rotocolo ;<<.. En el KeaterL 'onemos un nommbre? de"ault 'or ejem'lo? > en el K"eedL indicamos tambien el nombre de"ault? adem0s de de"inirlo como Kmu/er=audio=video:de"aultL? >a Aue tomar0 el "lujo del com'onente anterior? Aue enca'sul los "lujos de vdeo > audio en el "ormato contenedor. En las 'ro'iedades 'odemos activar el Kburst=on=connectL. Esto se trata de enviar al cliente una cantidad del "lujo mas r0'ido al comien#o de la re'roduccin. Esto sirve 'ara Aue el usuario 'ueda visuali#ar el contenido sin es'erar demasiado Aue se llene el bu""er al comien#o de la re'roduccin. 1es'uBs continuar0 a velocidad normal. Ya Aue se usar0 el com'onente K'orterL? indicamos los datos del 'orter? como el nombre de usuario? 'ass$ord > socOet. .ermitimos al com'onente K:tt'=streamerL Aue use el 'orter 'oniendo como ti'o KslaveL. El 'uerto ser0 el ((--. +on todo esto cerramos las etiAuetas del "ic:ero.

.0gina ! de %-

Streaming multimedia

Alejandro Romero Abada

&na ve# terminado de con"igurar el "ic:ero de con"iguracin? veremos el "ic:ero de $orOer. Estos "ic:eros sirven 'ara 'oner en marc:a los com'onentes? > no es necesario Aue estBn en el mismo eAui'o. Ya Aue las 'ruebas se :ar0n en una m0Auina local? todos los "ic:eros de con"iguracin se encontrar0n en la misma. *os "ic:eros de $orOer se 'ondr0n dentro de la instalacin de 5lumotion? en "lumotion=-.,-.-Fcon"F$orOersF. AAu 'ondremos los "ic:eros de $orOer? Aue des'uBs de instalar 5lumotion? a'arecer0 un "ic:ero de"ault./ml. .odemos usar este? el cual su contenido es el siguiente:
G$orOerH G^== You can override t:e name o" t:e $orOer? $:ic: $ill t>'icall> be :ostname:(/ml"ilename) G$orOer nameSZde"aultZH ==H GmanagerH G^== <:is s'eci"ies $:at manager to log in to. +om'are $it: command=line o'tions. G:ostHGF:ostH G'ortHGF'ortH Gtrans'ortHGFtrans'ortH ==H GFmanagerH Gaut:entication t>'eSZ'lainte/tZH G^== <:is s'eci"ies $:at aut:entication to use to log in. +om'are $it: command=line o'tions. ==H GusernameHuserGFusernameH G'ass$ordHtestGF'ass$ordH GFaut:enticationH G"eeder'ortsH(%!-=(%%8GF"eeder'ortsH GdebugHa:4GFdebugH GF$orOerH

.odemos a'reciar Aue en este "ic:ero a'arecen algunas o'ciones. 1entro de la etiAueta KmanagerL 'odemos con"igurarlo de "orma Aue? si el manager se encuentra en otro eAui'o distinto al Aue se encuentra el $orOer? 'ondremos aAu los datos del servidor del manager? como el nombre de :ost o su I.? el 'uerto donde va a escuc:ar > el 'rotocolo. 4as abajo 'odemos a'reciamos Aue 'odemos 'oner un nombre de usuario > un 'ass$ord. Esto sirve 'ara Aue al ejecutar el $orOer se autentiAue con el manager? 'or lo Aue este nombre > 'ass$ord debe estar tambiBn en el manager. ;a> di"erentes ti'os de autenticacin? en este caso en te/to 'lano ('lainte/t).

.0gina !3 de %-

Streaming multimedia .ara :acer andar el servicio? introducimos el siguiente comando:

Alejandro Romero Abada

flumotion-manager -v -; tcp /flumotion- .# . /conf/managers/default/planet.xml Este comando iniciar0 el manager? Aue se encuentra en la ruta es'eci"icada. *a o'cin =v es 'ara ver el log en 'antalla? > la o'cin =< 'ara Aue use <+.. A continuacin? ejecutaremos el $orOer 'ara Aue los com'onentes em'iecen a trabajar: flumotion-*or&er -v -; tcp /flumotion- .# . /conf/*or&ers/default.xml <ambiBn 'uede ejecutarse sin el "ic:ero con: flumotion-*or&er -v -; tcp -u usuario -p pass*ord +on esto :aremos andar el servicio de streaming? el cual 'odremos ver desde un navegador 'oniendo :tt':FF[I. sel servidor\:((--F['unto de montaje\. *o mismo si accedemos desde un re'roductor. <ambiBn "uncionar0 si incrustamos un re'roductor en una $eb 'oniendo esta misma &R*.

3tros componentes' ).(


Ejem'lo de "ic:ero del manager con un com'onente codi"icador ).(:
G_/ml versionSZ,.-Z encodingSZ&<5=(Z_H G'lanet nameSZadminZH Gatmos':ereH Gcom'onent nameSZ:tt'=server=audio=videoZ t>'eSZ:tt'=serverZ labelSZ:tt'=server=audio=videoZ $orOerSZlocal:ostZ 'rojectSZ"lumotionZ versionSZ-.,-.-ZH G'ro'ert> nameSZ'orter=usernameZH4;envvvmM/aRGF'ro'ert>H G'ro'ert> nameSZmount='ointZHF'ruebaF:tml!FGF'ro'ert>H G'ro'ert> nameSZ:ostnameZHdebian.localGF'ro'ert>H G'ro'ert> nameSZ'orter='ass$ordZHv+slbccMA&4OGF'ro'ert>H G'ro'ert> nameSZt>'eZHslaveGF'ro'ert>H G'ro'ert> nameSZ'orter=socOet='at:ZH"lu='9oSbR.socOetGF'ro'ert>H G'ro'ert> nameSZ'ortZH((--GF'ro'ert>H G'lugsH G'lug t>'eSZcom'onent=:tml!ZH

.0gina !4 de %-

Streaming multimedia
G'ro'ert> nameSZ$idt:ZH3! GF'ro'ert>H G'ro'ert> nameSZstream=urlZH:tt':FFdebian.local:((--F'ruebaFGF'ro'ert>H G'ro'ert> nameSZcodecsZHvorbis?v'(GF'ro'ert>H G'ro'ert> nameSZmime=t>'eZHvideoF$ebmGF'ro'ert>H G'ro'ert> nameSZ:eig:tZH ((GF'ro'ert>H GF'lugH GF'lugsH GFcom'onentH Gcom'onent nameSZ'orter=:tt'Z t>'eSZ'orterZ labelSZ'orter=:tt'Z $orOerSZlocal:ostZ 'rojectSZ"lumotionZ versionSZ-.,-.-ZH G'ro'ert> nameSZusernameZH4;envvvmM/aRGF'ro'ert>H G'ro'ert> nameSZsocOet='at:ZH"lu='9oSbR.socOetGF'ro'ert>H G'ro'ert> nameSZ'ass$ordZHv+slbccMA&4OGF'ro'ert>H G'ro'ert> nameSZ'ortZH((--GF'ro'ert>H GFcom'onentH GFatmos':ereH G"lo$ nameSZde"aultZH Gcom'onent nameSZ'roducer=audioZ t>'eSZsoundcard='roducerZ labelSZ'roducer=audioZ $orOerSZlocal:ostZ 'rojectSZ"lumotionZ versionSZ-.,-.-ZH G'ro'ert> nameSZdeviceZH:$:-GF'ro'ert>H G'ro'ert> nameSZc:annelsZH GF'ro'ert>H G'ro'ert> nameSZde't:ZH,%GF'ro'ert>H G'ro'ert> nameSZin'ut=tracOZH+a'turarGF'ro'ert>H G'ro'ert> nameSZsam'lerateZH4(---GF'ro'ert>H GclocO=masterHtrueGFclocO=masterH GFcom'onentH Gcom'onent nameSZ'roducer=videoZ t>'eSZ$ebcam='roducerZ labelSZ'roducer=videoZ $orOerSZlocal:ostZ 'rojectSZ"lumotionZ versionSZ-.,-.-ZH G'ro'ert> nameSZ"ormatZHY&Y GF'ro'ert>H G'ro'ert> nameSZ"ramerateZH F,GF'ro'ert>H G'ro'ert> nameSZ:eig:tZH ((GF'ro'ert>H G'ro'ert> nameSZ$idt:ZH3! GF'ro'ert>H G'ro'ert> nameSZmimeZHvideoF/=ra$=>uvGF'ro'ert>H G'ro'ert> nameSZelement="actor>ZHv4l srcGF'ro'ert>H G'ro'ert> nameSZdeviceZHFdevFvideo-GF'ro'ert>H GclocO=masterH"alseGFclocO=masterH GFcom'onentH Gcom'onent nameSZencoder=audioZ t>'eSZvorbis=encoderZ labelSZencoder=audioZ $orOerSZlocal:ostZ

Alejandro Romero Abada

.0gina !! de %-

Streaming multimedia
'rojectSZ"lumotionZ versionSZ-.,-.-ZH Geater nameSZde"aultZH G"eed aliasSZde"aultZH'roducer=audio:de"aultGF"eedH GFeaterH G'ro'ert> nameSZbitrateZH%4---GF'ro'ert>H GclocO=masterH"alseGFclocO=masterH GFcom'onentH Gcom'onent nameSZencoder=videoZ t>'eSZv'(=encoderZ labelSZencoder=videoZ $orOerSZlocal:ostZ 'rojectSZ"lumotionZ versionSZ-.,-.-ZH Geater nameSZde"aultZH G"eed aliasSZde"aultZH'roducer=video:de"aultGF"eedH GFeaterH G'ro'ert> nameSZOe>"rame=ma/distanceZH44GF'ro'ert>H G'ro'ert> nameSZbitrateZH4-----GF'ro'ert>H GclocO=masterH"alseGFclocO=masterH GFcom'onentH Gcom'onent nameSZmu/er=audio=videoZ t>'eSZ$ebm=mu/erZ labelSZmu/er=audio=videoZ $orOerSZlocal:ostZ 'rojectSZ"lumotionZ versionSZ-.,-.-ZH Geater nameSZde"aultZH G"eed aliasSZde"aultZHencoder=audio:de"aultGF"eedH G"eed aliasSZde"ault=bisZHencoder=video:de"aultGF"eedH GFeaterH GclocO=masterH"alseGFclocO=masterH GFcom'onentH Gcom'onent nameSZ:tt'=audio=videoZ t>'eSZ:tt'=streamerZ labelSZ:tt'=audio=videoZ $orOerSZlocal:ostZ 'rojectSZ"lumotionZ versionSZ-.,-.-ZH Geater nameSZde"aultZH G"eed aliasSZde"aultZHmu/er=audio=video:de"aultGF"eedH GFeaterH G'ro'ert> nameSZburst=on=connectZH5alseGF'ro'ert>H G'ro'ert> nameSZ'orter=usernameZH4;envvvmM/aRGF'ro'ert>H G'ro'ert> nameSZmount='ointZHF'ruebaFGF'ro'ert>H G'ro'ert> nameSZ'ortZH((--GF'ro'ert>H G'ro'ert> nameSZt>'eZHslaveGF'ro'ert>H G'ro'ert> nameSZ'orter=socOet='at:ZH"lu='9oSbR.socOetGF'ro'ert>H G'ro'ert> nameSZ'orter='ass$ordZHv+slbccMA&4OGF'ro'ert>H GclocO=masterH"alseGFclocO=masterH G'lugsH GF'lugsH GFcom'onentH GF"lo$H

Alejandro Romero Abada

.0gina !% de %-

Streaming multimedia
GF'lanetH

Alejandro Romero Abada

En este ejem'lo 'odemos observar algunos cambios res'ecto al anterior. AAu? se :a con"igurado 'ara Aue el vdeo a emitir estB codi"icado en el codec ).(? el audio en )orbis > el "ormato contenedor 7eb4. .odemos ver di"erencias en K :tt'=server=audio=videoL? donde se indica Aue el ti'o mime es $ebm? > se indica al re'roductor Aue los codecs son vorbis > v'(. 9tro com'onente con cambios es el Kencoder=videoL. AAu 'odemos ver Aue el ti'o es Kv'(= encoderL >a Aue vamos a codi"icar en ).(. Son 'ocas las di"erencias entre una con"iguracin > otra? solo cambian las o'ciones a lo Aue el vdeo se re"iere.

+one/in con un servidor Icecast


&n ejem'lo de com'onente del ti'o Ks:out =audio=videoL? encargado de enviar el "lujo a un servidor Icecast.
Gcom'onent nameSZs:out =audio=videoZ t>'eSZs:out =consumerZ labelSZs:out =audio=videoZ $orOerSZlocal:ostZ 'rojectSZ"lumotionZ versionSZ-.,-.-ZH Geater nameSZde"aultZH G"eed aliasSZde"aultZHmu/er=audio=video:de"aultGF"eedH GFeaterH G'ro'ert> nameSZs:ort=nameZHsourceGF'ro'ert>H G'ro'ert> nameSZdescri'tionZHGF'ro'ert>H G'ro'ert> nameSZurlZH:tt':FFlocal:ostFGF'ro'ert>H G'ro'ert> nameSZmount='ointZHF'rueba.oggGF'ro'ert>H G'ro'ert> nameSZi'ZH, 6.-.-.,GF'ro'ert>H G'ro'ert> nameSZ'ass$ordZH:acOmeGF'ro'ert>H G'ro'ert> nameSZ'ortZH(---GF'ro'ert>H GclocO=masterH"alseGFclocO=masterH GFcom'onentH

Entre las 'ro'iedades 'odemos ver Ks:ort=nameL? Aue es el el nombre de usuario de Icecast? con la contraseEa K:acOmeL en K'ass$ordL. En Ki'L 'onemos la I. del servidor Icecast? Aue en este caso est0 alojado en la m0Auina local con 5lumotion. En K'ortL 'onemos el 'uerto Aue tengamos con"igurado en Icecast? en este caso el (---. Y en KurlL 'onemos una &R* Aue se va a asociar al "lujo. Si lo con"iguramos con el administrador gr0"ico? debemos activar la casilla corres'ondiente en KconsumoL e introducir los datos del servidor Icecast? tales como el nombre o I. del servidor? 'uerto? 'unto de anclaje (mount 'oint)? usuario? contraseEa entre otras.

.0gina !6 de %-

Streaming multimedia

Alejandro Romero Abada

2uardar el vdeo en disco a la ve#


.odemos guardar lo Aue estamos emitiendo al mismo tiem'o Aue emitimos con el ti'o de com'onente KdisO=consumerL. .odemos ver un ejem'lo aAu:
Gcom'onent nameSZdisO=audio=videoZ t>'eSZdisO=consumerZ labelSZdisO=audio=videoZ $orOerSZlocal:ostZ 'rojectSZ"lumotionZ versionSZ-.,-.-ZH Geater nameSZde"aultZH G"eed aliasSZde"aultZHmu/er=audio=video:de"aultGF"eedH GFeaterH G'ro'ert> nameSZdirector>ZHFvarFstreamingGF'ro'ert>H G'ro'ert> nameSZrotate=t>'eZHnoneGF'ro'ert>H G'ro'ert> nameSZstart=recordingZH5alseGF'ro'ert>H GclocO=masterH"alseGFclocO=masterH G'lugsH GF'lugsH GFcom'onentH

En este com'onente? indicamos la ruta donde Aueremos guardar el vdeo? en este caso /var/streaming. El vdeo se guardar0 con la e/tensin Aue le :a>amos dado en el com'onente Kmu/erL. En la 'ro'iedad Krotate=t>'eL 'odemos 'oner Ksi#e? KtimeL o KnoneL. .or de"ecto es KnoneL. *a 'ro'iedad Kstart=recordingL consiste en comen#ar a grabar en el momento en Aue se activan los com'onentes. .odemos 'oner true o "alse. En el caso de "alse? comen#ar0 a grabar des'uBs de Aue los com'onentes :a>an arrancado. 9tra utilidad de 5lumotion es Aue 'odemos ver las 'ro'iedades de los com'onentes desde un terminal de comandos introduciendo el siguiente comando: "lumotion=ins'ect [ti'o de com'onente\ .or ejem'lo? 'ara ver las 'ro'iedades del K$ebcam='roducerL introducimos: flumotion-inspect *ebcam-producer

.0gina !( de %-

Streaming multimedia

Alejandro Romero Abada

El reproductor de vdeo de /0#L1


Este re'roductor se cre 'ara sustituir al veterano re'roductor "las:. En ;<4*! se 'uede incluir con la etiAueta GvideoH. 1urante el 'ro>ecto :emos com'robado algunos ejem'los del re'roductor? aunAue se 'ueden incluir m0s o'ciones: Ejem'lo anterior: Gvideo srcSL:tt':FFlocal:ost:(-(-FcustomeF"irstL controlsHGFvideoH

.odemos ver Aue se 'one como src (origen) una &R*. Se 'uede 'oner cualAuier "lujo de datos? desde un servidor Icecast? 5lumotion? )*+? etc. *a o'cin KcontrolsL nos 'ermite 'oner los controles del re'roductor como 'la>F'ause? volumen? etc. <ambiBn e/isten otras o'ciones: $idt:SLnIL: anc:o del vdeo. :eig:tSLnIL: Altura del vdeo. auto'la>: Re'roduce autom0ticamente al cargar la '0gina. 'reload: +arga el vdeo durante un corto tiem'o antes de comen#ar la re'roduccin.

.0gina !8 de %-

Streaming multimedia

Alejandro Romero Abada

3e&erencias
:tt':FFes.$iOi'edia.orgF$iOiFStreaming :tt':FFes.$iOi'edia.orgF$iOiF)d+3dA1deoJbajoJdemanda :tt':FFes.$iOi'edia.orgF$iOiF)*+JmediaJ'la>er :tt':FF$$$.gnu.orgFso"t$areFgnum'3dF :tt':FFjmengual.blogs'ot.comF --(F,,Fgnum'3d=en=linu/.:tml :tt':FF:tml!"acil.comFtutorialesFuso=basico=de=la=etiAueta=video=en=:tml! Icecast:

:tt':FF$$$.icecast.orgFdocsFicecast= .3. F :tt':FF$$$.icecast.orgF :tt':FFes.$iOi'edia.orgF$iOiFIcecast 554.E2:

:tt':FFes.$iOi'edia.orgF$iOiF55m'eg :tt':FF""m'eg.orgF )ideo4linu/:

:tt':FFes.$iOi'edia.orgF$iOiF)ideo4*inu/ A*SA:

:tt':FF$$$.alsa='roject.orgFmainFinde/.':'F4ainJ.age :tt':FFes.$iOi'edia.orgF$iOiFArAuitecturaJdeJSonidoJAvan#adaJ'araJ*inu/ 7eb4:

:tt':FF$$$.$ebm'roject.orgF 5lumotion:

:tt':FFes.$iOi'edia.orgF$iOiF5lumotion :tt':FF$$$."lumotion.netF :tt':FF$$$."lumotion.netFdocF"lumotionFmanualFenFtrunOF:tmlF :tt':FFblog.#arovic:.orgFinde/.':'F -,,F-6F-(F"lumotion=en=debian=bajo=demanda=con= autenticacionF .0gina %- de %-

You might also like