Vídeo streaming bajo GNU/Linux (Desde 0).

Publicada originalmente para TuxInfo 20

Introducción
Vamos a comenzar a meternos en el más que interesante mundo del streaming de video en GNU/Linux.
Pero antes que nada, y sobre todo para los recién iniciados en el tema ¿Qué es streaming?

Citando a la Wikipedia:

Streaming es un término que se refiere a ver u oír un archivo directamente en una página web sin necesidad de descargarlo antes al ordenador. Se podría describir como “hacer clic y obtener”. En términos más complejos podría decirse que describe una estrategia sobre demanda para la distribución de contenido multimedia a través del internet.

En otras palabras, el usuario se conecta a una página de internet/intranet y desde su PC accede al contenido ofrecido por el servidor, el cual lo envía al mismo tiempo que se reproduce. Con un trozo del inicio del video recibido, el usuario puede comenzar a verlo, mientras que se va descargando el resto del mismo.
El video puede, o bien ser parte de una transmisión en vivo (Como las que Ariel nos tiene acostumbrados en Infosertec TV ;-) ) o estar en un servidor de video a demanda; como el conocidísimo Youtube.

Lo más interesante del streaming de video es que no es necesario descargar el mismo para verlo y es accesible desde cualquier lugar con conexión a la red.

Aplicaciones
Educación a distancia, presentaciones, videos promocionales, ver televisión en línea, museos y bibliotecas, y muchas más. De ahí la importancia de no solo hacerlo con software libre, sino también con codecs de video libres.

Software necesario
Hay varios tipos de soft para video stream, entre ellos podemos nombrar a DSS, Icecast2, GNUmp3d, VideoLan, Mplayer, etc.

Hardware
Una PC con GNU/Linux (¿Obvio no?) y al menos una webcam usb, las cuales las mayoría son compatibles con las distribuciones GNU/Linux más modernas. En mi caso uso Ubuntu 9.04 con una Webcam Genius Slim 1322AF, la cual funciona al conectarla, sin necesitar configuración alguna.

Comenzado

Si bien nunca había estado en el tema del stream de video, más que cuando transmito en vivo desde mi teléfono Nokia N95 via Qik, mediante el cual no hay mucho que configurar o pensar, no tenía mucha idea al respecto de montar un servicio para servir video a pedido en una red, para lo cual me dirigí a la red para investigar que había dando vueltas por ahí.
Fue así que me encontré con Estrellate y Arde.es, del cual me propuse seguir y reroducir los pasos en mi PC Ubuntu.

El servidor
Antes que nada, y esto no está en el tutorial, aclaro que dijimos que íbamos a servir video y la mayoría de los servidores que se usan para esto, como por ejemplo Icecast (el que vamos a usar) usan el puerto 8000 del servidor web que instalemos, por lo tanto; vamos a instalar un servidor web.
Como no podía ser de otra manera, vamos a instalar LAMP

El cual, que esté instalado, de paso nos va a servir para futuros tutoriales. sobre este y otros temas, por lo cual, pasemos a instalarlo de la siguiente manera:

Nos dirigimos a Sistema -> Adminstración -> Gestor de paquetes Synaptic, y una vez ahí vamos a editar y luego a marcar paquetes por tarea. Del cuadro emergente seleccionamos LAMP, aplicamos y listo.
La instalación luego nos pedirá que ingresemos la contraseña de administrador de Mysql Server y todo finalizado.

Les recuerdo que estoy haciendo esto desde Ubuntu 9.04 y que el Servidor web nos será útil además para muchos otros fines.

Luego el paquete de Codecs Libres, para esto usaremos los codecs ogg Vorbis-tools. Sistema -> Adminstración -> Gestor de paquetes Synaptic ahi buscamos dicho paquete.

Una vez montado el servidor web pasamos a instalar icecast2, el procedimiento es el mismo Sistema -> Administración -> Gestor de paquetes Synaptic y una vez ahí en el buscador ponemos icecast2, lo seleccionamos para instalar y aplicamos.

Para configurarlo desde la consola tipeamos

sudo gedit etc/icecast2/icecast.xml

Donde pasamos a editar alguna de las opciones más comunes del server.

  • 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>

En segundo lugar, debemos modificar /etc/default/icecast2 para habilitar el servicio poniendo la variable ENABLE a true. Por defecto viene inhabilitado, para que leamos este archivo y cambiemos la password del administrador. Así, la sección final quedaría así:

# Edit /etc/icecast2/icecast.xml and change at least the passwords.
# Change this to true when done to enable the init.d script
ENABLE=true

Finalmente, debemos activar el servicio con:

$ sudo /etc/init.d/icecast2 start

Si todo sale bien, al ir a http://www.miservidor.com:8000 deberíamos ver la página de icecast.
Detener el servicio.

$ sudo /etc/init.d/icecast2 stop
Verificar su funcionamiento.
Verificar la ejecución del proceso.

$ ps -fea | grep icecast

icecast2  7674  6254  0 23:21 pts/0    00:00:00 /usr/bin/icecast2 -c /etc/icecast2/icecast.xml

Hasta aquí fue la instalación de servidor Icecast2.

Con este instalado luego podremos hacer muchas cosas interesantes como, poner una radio online, transmitir video en vivo y por p2p y otras más. Espero les haya sido útil y apendido yanto como yo al momento de escribirla y probar toda la info encontrada en la red.

Referencias:

http://www.estrellateyarde.es/discover/servidor-streaming-en-directo-por-internet-en-linux

http://www.estrellateyarde.es/discover/servidor-upnp-media-server-dlna-en-linux

http://blog.jorgeivanmeza.com/2009/06/instalacion-de-icecast2-en-linux-ubuntu-904/

Sistema de video streaming basado en aplicaciones de código abierto(pdf)

http://gluc.unicauca.edu.co/wiki/index.php/Proyecto_eStreaming

http://www.slec.net/HacerStreamDeVideoConSoftwareyCodecsLibres

Related Posts Plugin for WordPress, Blogger...

Acerca de Gustavo Papasergio

Analista TI, Músico, Blogger y Viajero. Muy curioso y siempre dispuesto a aprender. La ausencia de prueba no es prueba de ausencia. http://tecnotravel.com.ar Hay dos formas de ver la vida. Creer que los milagros no existen o creer que todo lo que existe es un milagro. Albert Einstein
Esta entrada fue publicada en Sistemas Operativos, Tecnología, Uncategorized y etiquetada , , , , , , , . Guarda el enlace permanente.
  • Reyfelix

    Hola buenas, me parece una excelente guía, pero estoy teniendo problemas al seguirla, de primeras al instalar el LAMP a través del SINAPTIC no me da ninguna opción de configuración como la que comentas.

  • http://tecnotravel.com.ar Gustavo Papasergio

    Hola ¿Estas usando Ubuntu? Porqque hago exactamente lo que dice ahí y esta donde debe estar!
    Espere tu respuesta, a ver si le encontramos solución!

  • http://hagamosciencia.tk Anafro

    Hola oyes si podras poner un tuto de como enviar y recibir video con icecast2 porfabor, un saludo.

  • http://tecnotravel.com.ar Gustavo Papasergio

    Gracias! esperemos poder realizarlo lo antes posible!

  • http://www.facebook.com/profile.php?id=100002999912134 Tgo Diego Armando Hdez

    El streaming de video es muy bien pagado en teleconferencias médicas!! y está excelente como herramienta de comunicación. Muy buen post!