Este año le estaba haciendo poco ó ningún caso a las cajas nido de la terraza y a sus webcams, entre otras cosas porque en años anteriores la crianza de los gorriones que las habitan suele ser un rotunda fracaso.
Pero no un fracaso extraordinario, sino un fracaso común y corriente.Y es que los gorriones normalmente ponen 5-6 huevos, nacen todos y van muriendo hasta quedar 1 ó 2 el día que toca salir del nido. De esos 1 ó 2, excepcionalmente, uno sobrevive al primer año. Si prestáis un poco de atención en estas fechas veréis que raramente a un hembra la siguen más de 1 ó 2 volantones, 3 con mucha suerte.

Eso, más o menos es lo normal (al menos es lo que yo llevo observando), lo anormal es que llegue el día en que van a echar a volar y haya en el nidal cinco polluelos (como ocurre actualmente en uno de los nidales de casa) y en un más que sorprendentemente buen estado de salud.

Así es que para celebrar el inminente acontecimiento he conectado la cámara al streaming de Youtube como os indico a continuación y de paso estreno la herramienta de Eventos en directo que apenas he tenido tiempo de probar.


Eventos en vivo

Desde hace un año (aprox. en España) Youtube ofrece la posibilidad de crear lo que ellos llaman Eventos en directo, es decir conectar y ver ( o insertar en tu página ) grabaciones que se están produciendo en ese instante, en tiempo real (o casi). Muy usado para eventos deportivos y conciertos pero también para la retransmisión de webcam y creación de vídeotutoriales (conectas la webcam y le explicas a alguien el método para hacer tal ó cual).

Existen ya varios servicios de este estilo que se han popularizado mucho en internet ( Ustream.tv o Justin.tv ) muy usados actualmente para la emisión en directo de manifestaciones o escraches e imposibilitando de esta manera el secuestro policial del material grabado ya que este se difunde públicamente en el mismo momento que se genera, vaya lo que viene siendo un canales de información en vivo y en directo de cualquiera acontecimiento público.

He probado los tres sitios comentados para la emisión de eventos en directo y creo que me voy a quedar con el de Youtube por varios motivos: Es el más popular, conocido y que llega a más gente. Dispone de soporte para gran número de navegadores y plataformas. Permite un control más personalizado de la publicidad que el canal inserta (normalmente) al inicio de la retransmisión.


Creación de eventos

Los tres sitios que he probado hasta ahora (Justin.tv, Ustream.tv y Youtube) son gratuitos. Todos insertan publicidad (normalmente al principio). Los dos primeros ofrecen la posibilidad de retirar la publicidad mediante pago del servicio. En Youtube en cambio podéis desactivar la inserción de publicidad en vuestros vídeos de forma gratuita (aunque creo que la cuenta tiene que reunir algunas condiciones previas para poder hacerlo).
Todos generan archivos de vídeo de lo emitido desde el canal que van quedando almacenados en el servidor. Todos disponen de aplicaciones/métodos para embeber los eventos en tu página web. Todos disponen de métodos de recepción del flujo de vídeo desde un terminal Linux y todos disponen de su propia aplicación web (normalmente desarrollada en Flash Macromedia) que nos permite hacer lo mismo consumiendo muchos más recursos de nuestro ordenador y obligándonos a mantener abierta la ventana del navegador mientras dure la retransmisión.

Para crear un evento en vivo en Youtube, dirígete a la página de Eventos en vivo y logéate si no lo estás. La cuenta de Youtube desde la cual quieras retransmitir debe estar confirmada (normalmente mediante SMS a tu móvil) antes de poder crear el evento, si la ya tienes confirmada llegarás a una página como esta:

Creación de eventos en vivoCreación de eventos en vivo

Pulsa crear evento para entrar en la página de configuración. Marca la casilla de abajo “Acepto los términos…” y (IMPORTANTE) la casilla de abajo a la derecha ” TIPO > Personalizar (más opciones de codificación) “.
Observa la hora de inicio del evento. Youtube permite el inicio de eventos en fracciones de 30 min. (9:00, 9:30, 10:00, … ). El inicio de tu evento debería ser posterior al momento en que empieces a enviar datos, es decir: cuando el evento empiece tu ya deberías llevar 3-4 minutos enviando flujo de vídeo. De esta manera se genera una caché que evita que la retransmisión sufra demasiados “parones”.
Pulsa Crear Evento.

Configuración de eventoConfiguración de evento

Entrareis en la página de configuración avanzada del evento donde debéis especificar la calidad de la “ingestión” (creo que “inyección” habría resultado menos digestivo). Para una retransmisión casera standar os aconsejo usar la Ingestión básica > 300kbs – 700Kbps (240px).
Si queréis o necesitáis eventos con muy buena calidad podéis aumentarla gradualmente hasta los HD1080, claro, siempre y cuando vuestra conexión de subida lo permita.

En el desplegable Selecciona tu codificador selecciona Otros codificadores para que la página os muestre las URLs de ingestión. No compartas esta URL.
Copia el contenido de URL del servidor principal y añádele detrás Nombre de la emisión para componer una URL aprox. como
rtmp://a.rtmp.youtube.com/live2/cuaderno-de-cam-XXXX-xxxx-XXXX-xx
Esa es la dirección donde tienes que inyectar el flujo de vídeo con ffmpeg

Configuración de la indigestiónConfiguración de la indigestión

Después de guardar los cambios puedes cambiar arriba a “Sala de control en directo” desde donde la página te informa de si se está recibiendo o no el flujo de vídeo en condiciones ó los errores que hubiera (útil para depuración).

Recepción de datosRecepción de datos

Configuración de FFMPEG

Una vez tenemos el espacio de emisión reservado en Youtube procedemos a rellenarlo con el video de nuestra webcam. Para ello con ffmpeg y usando la URL ofrecida por Youtube ( rtmp://xxxxx ) procedemos a codificar la imagen original al formato FLV, vídeo codec libx264 y audio codec MP3. La orden que estoy usando para emitir la señal del nidal de gorriones es:ffmpeg -loglevel fatal -f alsa -i default -ac 2 -f video4linux2 -i /dev/video7 -vcodec libx264 -f flv -r 15 -q 3 -b:v 320k -s 320x240 -acodec libmp3lame -ar 44100 -ab 128k -threads 0 -bufsize 64k -force_key_frames 0:00:01 "rtmp://a.rtmp.youtube.com/live2/cuaderno-de-cam-xxxx_xxxx_xxxx_xxxx"

En las primeras pruebas deberías quitar la opción -loglevel fatal para depurar y buscar posibles errores. Youtube es bastante pelmazo con la calidad del audio y aunque el sonido del nidal no es ninguna maravilla emite errores si le reduzco la calidad por debajo de 128k, 64k o similar.
Todos estos sistemas de streaming de vídeo también suelen dar muchos problemas si tratáis de emitir un vídeo SIN audio. Si por cualquier motivo no queréis insertar sonido os aconsejaría no anularlo sino emitir una pista vacía, por ejemplo cambiando -i default de ALSA por -i /dev/zero, de lo contrario vais a tener problemas casi seguro.

Una vez empecéis a enviar el flujo de vídeo la página de control de la emisión en Youtube os debería mostrar un mensaje del estado de emisión OPTIMO ó en su defecto información relevante sobre el origen del fallo. Si todo va como debería, desde dicha página podéis dar al PLAY para empezar la retransmisión (siempre y cuando la hora de inicio se haya cumplido) y para compartir la URL del evento.

Emisión activaEmisión activa

Respetando los parámetros de configuración deberíais poder hacer la emisión con cualquier otro programa que permita retransmitir vídeo a un servidor RTMP, he preferido FFMPEG porque es mucho más liviano y lo conozco algo mejor pero igualmente VLC podría seros más cómodo.

NotaEn el tiempo en que escribía el apunte parte de los polluelos del nidal han echado a volar. Ahora solo quedan 2. Pero como se puede rebobinar y ver las grabaciones de hace 4 horas podéis que no miento y había 5 polluelos. ;)