Está en la página 1de 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......................................................................................................................................3-
Inter"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
FetcFicecastFicecast./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'egt:eora > ogg"$d:
#aptitude install ffmpeg2teora
#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:
ffmpeg2teora prueba.a"i -o /de"/stdout # oggf!d localost $%%% ac&me /prueba.ogg
.0gina ( de %-
Streaming multimedia Alejandro Romero Abada
+on esto? ""m'egt: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 grfico)
<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 ()ideo 4 *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 Alejandro Romero Abada
Ejem'lo:
Enviar audio? du'licarlo :acia Icecast > al disco:
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 Alejandro Romero Abada
*os objetivos son:
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 Alejandro Romero Abada
Ya tenemos los servicios instalados. A:ora 'rocederemos a con"igurarlos:
Activamos icecast en KFetcFde"aultFicecastL 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
KFetcFicecastFicecast./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 Alejandro Romero Abada
*o com'ilamos:
ma&e -'%
&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/ 'ara ca'turar la imagen de la $ebcam? Aue es el
dis'ositivo FdevFvideo,.
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 Alejandro Romero Abada
clientes se conectar0n al stream.
55m'eg ========H 5eed ========H Stream ========H+liente
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'egt: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 #6x#%) -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 Alejandro Romero Abada
AEadimos en este "ic:ero estas dos lneas:
audio/*ebm *eba
video/*ebm *ebm
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 26x%) -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=-,,-86.#i'L.
.0gina 6 de %-
Streaming multimedia Alejandro Romero Abada
Realicemos un ejem'lo:
&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 26x%) -i /dev/video -f alsa -i plugh*:+ -f *ebm
http://localhost:33/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:33/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 Alejandro Romero Abada
'>t:on.%=t$isted
'>t:on=Oi$i
'>t:on.%=cairo
libvorbis=dev
libt:eora=dev
libogg=dev
+on"iguramos:
./configure
+om'ilamos:
ma&e -'%
Y 'or @ltimo lo instalamos:
ma&e install
Interfaz grfico
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 Alejandro Romero Abada
Seleccionamos la tercera o'cin > comen#ar0 la con"iguracin.
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 Alejandro Romero Abada
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:annelsZHGF'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&YGF'ro'ert>H
G'ro'ert> nameSZ"ramerateZHF,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>ZHv4lsrcGF'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
.0gina 4% de %-
Streaming multimedia Alejandro Romero Abada
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
Nota' debian.local puede cambiarse por localost 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:annelsZHGF'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&YGF'ro'ert>H
G'ro'ert> nameSZ"ramerateZHF,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>ZHv4lsrcGF'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 Kv4lsrcL (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 Alejandro Romero Abada
.ara :acer andar el servicio? introducimos el siguiente comando:
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 Alejandro Romero Abada
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:annelsZHGF'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&YGF'ro'ert>H
G'ro'ert> nameSZ"ramerateZHF,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>ZHv4lsrcGF'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
.0gina !! de %-
Streaming multimedia Alejandro Romero Abada
'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
.0gina !% de %-
Streaming multimedia Alejandro Romero Abada

GF'lanetH
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 %-

También podría gustarte