Servidores de streaming en directo por Internet en Linux
Streaming de
audio y vídeo:
- streaming por Internet:
- servidor streaming en directo
- servidor streaming en
directo
- fuente de audio en
directo
- fuente de vídeo en
directo
- servidor streaming bajo demanda
- clientes de streaming
- streaming en red local:
- servidor UPnP Media Server (DLNA)
El streaming (fujo de datos) permite reproducir (escuchar o visualizar) contenidos multimedia procedentes de la red sin tener que esperar a que el archivo se haya descargado por completo, ya que la secuencia de audio/vídeo se reproduce mientras se descarga.
En el streaming en directo por Internet el contenido multimedia es reproducido a iniciativa del servidor y la señal se retransmite y se visualiza en tiempo real. Intervienen tres componentes, gráficamente:
Fuente multimedia -> Servidor streaming -> Cliente streaming
- Fuente multimedia: mezcla varias entradas (micrófono, webcam, archivos .mp3, CD,etc.), transforma la señal a un formato que entienda el servidor (.ogg o .mp3), empaqueta la señal y la convierte en un flujo de datos.
- Servidor streaming: recibe el flujo de datos (stream) y lo envía a la red.
- Cliente streaming: visualiza la secuencia de audio/vídeo mientras la descarga.
Hay varios servidores de streaming para Linux, pero el más utilizado es IceCast (icecast.org, paquete icecast2).
Equivalencias en Windows: ShoutCast, MS-Media Server.
- Puede manejar varios streams diferentes a la vez, cada uno con una URL.
- La fuente del stream y el servidor IceCast pueden estar en la distintas máquinas, cosa que puede venir bien si donde está la fuente no hay una conexión con suficiente subida para soportar muchos clientes.
- Si queremos poner un enlace en nuestra web a una fuente IceCast la URL
será (por ejemplo):
http://nuestro_dominio:8000/freej.ogg.m3u
- Arranca con el script de inicio /etc/init.d/icecast2 y se
configura editando
/etc/icecast2/icecast.xml. Veamos algunas de las directivas:
- número máximo de clientes:
<clients>200</clients>
¿Qué ancho de banda consume el stream transmitiendo a 32 Kbps con 200 clientes?
32 Kbps/cliente x 200 clientes = 6400 Kbps / 1024 M/K = 6.25 Mbps
- número de sources (mounts):
<sources>2</sources>
- contraseña que solicitará a la fuente:
<source-password>hackme</source-password>
- contraseña que solicitará si retransmitimos la señal
de otro servidor (relay):
<relay-password>hackme</relay-password>
- usuario y contraseña para administrar el servidor:
<admin-user>admin</admin-user> <admin-password>hackme</admin-password>
- puerto estándar de Icecast (ShoutCast usa el 8001):
<port>8000</port>
- IP o dominio:
<hostname>localhost</hostname>
- número máximo de clientes:
Veamos qué podemos hacer con IceCast:
- montar una radio en directo
Equivalencias en Windows: Traktor.
- IDJC (Internet DJ Console, onlymeok.nildram.co.uk, paquete idjc): fuente de audio para IceCast. Permite mezclar dos listas de reproducción, señal de micrófono, entradas JACK y llamadas Skype. Genera stream .ogg o .mp3, y puede grabar la emisión. Necesita el servidor de sonido JACK.
- MuSE (Multiple Streaming Engine, muse.dyne.org,
los mismos de DyneBolic,
paquete muse-streamer):
fuente de audio para IceCast. Puede mezclar listas de reproducción y
micrófono, y
grabar la salida (.ogg). Lo lanzaremos con el comando:
$ muse-streamer
- Mixxx (mixxx.sourceforge.net, paquete mixxx): aplicación DJ que permite mezclar dos listas de reproducción. Trabaja con JACK, ALSA y OSS y envía la salida a la tajeta de sonido, de manera que para montar una radio en directo con Mixxx lo que haremos será utilizar DarkIce (por ejemplo) para capturar el audio de la tarjeta de sonido y reenviarlo a IceCast.
- DJPlay (djplay.sourceforge.net, paquete djplay): aplicación para DJs programada en Qt, utiliza el servidor de sonido JACK.
- DarkIce (darkice.tyrell.hu, paquete darkice): fuente de audio para IceCast para la línea de comandos (captura el audio de la tarjeta de sonido). Tiene un frontal gráfico, DarkSnow (darksnow.radiolivre.org, paquete darksnow).
- IceS (icecast.org/ices.php, paquete ices2): fuente de audio para IceCast para la línea de comandos (captura el audio de la tarjeta de sonido). Tiene un pluging para Xmms2 (paquete xmms2-plugin-ices).
- LiveIce (star.arm.ac.uk/~spm/so ftware/liveice.html, paquete liveice): fuente de audio para IceCast para la línea de comandos (captura el audio de la tarjeta de sonido), dispone de un GUI en TK para configurarlo. Tiene un pluging para Xmms (paquete xmms-liveice).
- transmitir vídeo
Equivalencias en Windows: WinAmp, MS-Media Encoder.
- FreeJ
(freej.dyne.org,
los mismos de la distro
Dynebolic,
paquete freej):
fuente de vídeo Ogg para IceCast, pensado para webcam y
retransmisiones en vivo, ya
que el sonido procede del micrófono (si hacemos stream con un
.mpg no
transmite el audio).
Admite varias fuentes y trata cada una como una capa, pudiendo
aplicarles efectos (transparencias,
rotaciones, diferencias, etc.).
La señal retransmitida (incluido el audio) la guarda en el archivo
freej.ogg.
Lo lanzaremos con el comando:
$ freej /dev/video0 -p hackme
Algunas opciones son:
- -s: tamaño de la ventana ancho x alto (por defecto 400×300).
- -T: calidad de vídeo, de 0 a 63 (63 máxima calidad, por defecto 16).
- -V: calidad de audio, de -1 a 10 (10 máxima calidad, por defecto 1).
- -i: ubicación de IceCast (por defecto http://localhost:8000/freej.ogg).
- -p: source-password de IceCast.
Una vez iniciado FreeJ, pulsaremos <Ctrl+W> y se conectará a IceCast.
Podemos insertar el vídeo en nuestra página poniendo algo similar a:
<embed src="http://localhost:8000/freej.ogg" type="video/ogg" controller="true" autoplay="true" height="256" width="320"> </embed>
- dvgrab | ffmpeg2theora | oggfwd: fuente de vídeo
para IceCast (vía pipe).
- dvgrab (kinodv.org, paquete dvgrab): captura la señal de una videocámara vía FireWire (IEEE-1394).
- ffmpeg2theora (v2v.cc/~j/ffmpeg2theora/, paquete ffmpeg2theora): convierte cualquier archivo que el conversor de formatos de vídeo ffmpeg pueda leer en un stream de vídeo Ogg.
- oggfwd (v2v.cc/~j/ffmpeg2theora/oggf wd/, paquete oggfwd): redirige el stream de vídeo Ogg que le llega por la entrada estándar a Icecast.
Para hacer stream con un .mpg:
$ ffmpeg2theora file.mpg -o /dev/stdout | oggfwd localhost 8000 hackme /stream.ogg
Para hacer stream desde la entrada de vídeo analógica (V4L):
$ ffmpeg2theora --v4l /dev/video0 -o /dev/stdout | oggfwd localhost 8000 hackme /stream.ogg
Para hacer stream desde la entrada de vídeo digital (IEEE-1394):
$ dvgrab --format raw - | ffmpeg2theora -f dv -o /dev/stdout | oggfwd localhost 8000 hackme /stream.ogg
Existe un GUI para estos comandos, Theorur (theorur.tvlivre.org, paquete theorur).
- FreeJ
(freej.dyne.org,
los mismos de la distro
Dynebolic,
paquete freej):
fuente de vídeo Ogg para IceCast, pensado para webcam y
retransmisiones en vivo, ya
que el sonido procede del micrófono (si hacemos stream con un
.mpg no
transmite el audio).
Admite varias fuentes y trata cada una como una capa, pudiendo
aplicarles efectos (transparencias,
rotaciones, diferencias, etc.).
La señal retransmitida (incluido el audio) la guarda en el archivo
freej.ogg.
Lo lanzaremos con el comando:
- montar una radio P2P
- PeerCast
(peercast.org, paquete
peercast): red P2P de
streaming de audio y vídeo
(P2PTV). Consume poco
ancho de banda porque los clientes a su vez sirven de nodos de
repetición para otros clientes.
Veremos el listado de canales disponibles en las Yellow Pages (yp.peercast.org). Para escuchar un canal pulsaremos Play y lo podremos reproducir con VLC, Totem, Xmms, etc. (PeerCast proporciona handlers para los browsers Firefox, Konqueror, Epiphany, etc.), quedando añadido a nuestro nodo (lo veremos en Relays).
El daemon peercast escucha en http://localhost:7144 y arranca con el script de inicio /etc/init.d/peercast-servent
Podemos emitir en la red PeerCast de varias maneras, pero la más sencilla es haciendo relay de nuestro servidor IceCast local. Entramos en la página http://localhost:7144 y en la opción Broadcast ponemos la URL, el tipo de stream (.mp3, .ogg...), bitrate, nombre, etc. y pulsamos Create Relay. PeerCast comenzará el relay de nuestra señal en la red PeerCast y nuestro canal aparecerá en las Yellow Pages en unos minutos.
- PeerCast
(peercast.org, paquete
peercast): red P2P de
streaming de audio y vídeo
(P2PTV). Consume poco
ancho de banda porque los clientes a su vez sirven de nodos de
repetición para otros clientes.
2 Abril 2008 a las 14:18
Un reportaje muy completo. Voy a intentar ponerlo en marcha. Mi enhorabuena.
2 Abril 2008 a las 22:58
Super completo, no se puede pedir más. Gracias por toda la info.
23 Abril 2008 a las 17:41
Te felicito, abundante información. Todo muy claro, con ejemplos, etc.
Excelente!!
Muchas gracias
14 Mayo 2008 a las 23:08
Muy bueno el articulo!!!
Una pregunta, no tenes idea de como puedo transmitir videos bajo demanda con icecast, porque tengo un servidor propio y necesito hacer eso!!!
O sea que ademas de realizar transmiciones en vivo, ya sean de una camara fireWire o una web-cam, ademas tener videos ya grabados y poder subirlos a icecast!!
Muchas Gracias por el articulo
19 Mayo 2008 a las 18:54
[...] Interesante y completo articulo sobre el arte del Streaming de audio/video en Linux...
Por yatoiaki hace pocos segundos [...]
23 Julio 2008 a las 13:09
Hola!!!!!!!!!!!!, Mil gracias gracias por poner información valiosa e importante como esta en este sitio Web =) es de mucha ayuda para los que andamos metidos en este rollo!
21 Octubre 2008 a las 13:53
Tengo un problema, quiero utilizar VLC en windows para transmitir video a mi servidor IceCast2 que esta en Linux. Utilizando el VLC parece algo muy sencillo pero en la practica no funciona, no se si le estaré errando en algo ya que de la misma máquina con winamp puedo emitir audio y no hay problema. Sera que hay que agregarle alguna configuración distinta que la de audio al xml del server icecast?
31 Octubre 2008 a las 0:01
Alguien pregunto como codificar video con su webcam y enviar las imagenes a un servidor icecast2 ???
Con visonair.tv, aki ta el link para bajar el instalador, es opensource, mu weno, simple de configurar, los frames, calidades, solo transmite en OGG.
http://dir.visonair.tv/streamer.php
4 Noviembre 2008 a las 18:56
no encuentro la manera de compilar el internet dj console para emitir a traves de un servidor externo en mp3
alguien puede ayudarme?
14 Noviembre 2008 a las 16:37
Muy interesante, pero no muy real
Para emitir con IDJC por medio de un servidor propio en ogg, puede ser
Pero para emitir con Ubuntu con un servidor externo de pago en mp3 la cosa cambia.
El emitir con un pequeño ancho de banda no te permite llegar a muchos usuarios
Por lo tanto si quieres tener oyentes, haz de tener un servidor externo, mas cuando lo quieres hacer en vivo
El caso es que no consigo los datos de compilacion para que el IDJC muestre la pestaña de formato mp3
Todas las compilaciones restantes ya las hemos hecho
Si alguien lo sabe, lo agradeceríamos infinitamente. Es que esto de momento nos obliga a usar Ventanitas, y eso nos hace doler el hígado.
Gracias
Un cordial saludo