viernes, 20 de septiembre de 2013

S.A.S. Sistema Automatico de Secuencias



Descripción

Es un sistema para emisión de video en tiempo real controlado por web. Se instala en GNU/Linux y requiere una serie de aplicaciones claves pero básicamente los paquetes ffmpeg e imagemagick.
Actualmente S.A.S. está siendo utilizado por 3 canales de Cable de Young. El sistema emite programas en vivo, graba automáticamente y reitera sin necesidad de operador. Puede ser manejado desde la web y es muy facil de operar.

Un poco de historia

En Abril de 2009 quedamos encargados del Canal Local de Young. Luego de una rápida evaluación decidimos comenzar a implementar varios cambios tecnológicos. Justo es decir que el presupuesto era cero.
Lo primero fué reemplazar los sistemas operativos utilizados por Ubuntu Desktop. Para la edición de los videos utilizabamos Kino y Kdenlive. Para la parte gráfica GIMP y Xaralx, y para la edición de audio Audacity.
El producto final se emitía con un script que enviaba el video en formato RAWDV a un DVDRW que oficiaba de conversor DA.
Justo es decir que estudiamos mucho el maravilloso formato RAWDV para poder utilizarlo al máximo.
El corazón del script hacía algo muy simple:

cat archivo.dv > /dev/raw1394

Con el descubrimiento de que un simple CAT podía enviar video a un equipo externo las ideas comenzaron a fluir.

Manos a la obra

Esa línea tan simple hacía la maravillosa tarea de enviar un video al puerto firewire para que el DVDRW externo lo tome y transforme en video compuesto. De ahi se iba al modulador.

El siguiente paso fué agregar una captura firewire para completar la trama digital. Como las cámaras y consolas estaban basadas en video compuesto, compramos una Canopus ADVC110. La captura la hacía con dvgrab y podia alternar el envío de señal en vivo con archivos del mismo formato.

Se hacía casi indispensable contar con una consola por software que switcheara posibles fuentes de video. Ahi fué cuando descubrimos el paquete dvswitch.
A partir de ahí el sistema quedaba formado con una serie de programas que iban interconectando las entradas y las salidas para poder enviar videos al aire.
Lo que hace básicamente S.A.S. es generar y controlar secuencias de videos. Pudiendose programar eventos a dispararse a diferentes horas. Controlado desde un entorno WEB para dar la flexibilidad de ser manejado desde cualquier punto a donde llegue la red.



Primeras versiones (1 y 2):










Version 4:



 



Con la digitalización de la señal de Cable, hubo que adaptar la salida al formato TS. Mas adelante entraremos en estos detalles.
El sistema ha ido evolucionando hasta convertirse en un gran manejador que genera un stream directo al multiplexor que emite al cable.


Reconocimientos

El proyecto fué presentado en la Feria de Clubes de Ciencias a nivel Departamental, obteniendo Mención Especial. Lo que nos permitió presentarlo a nivel Nacional obteniendo también Mención Especial. Descargar Libro Resumen de Menciones Especiales.



Salida al aire con la versión 2



Nota para Cable Noticias


Y los sobreimpresos?

A esta altura teníamos una señal limpia pero faltaba el agregado de sobreimpresos. Es muy dificil explicarle a colegas acostumbrados a utilizar tecnología análoga el por que es importante solucionar estos detalles en el ámbito digital. Probamos con varios productos (VLC, Gstreamer, Melt) pero no encontraba un software que fuera tan flexible, potente y liviano como ffmpeg y a la vez nos permitiera interconectarse a lo que ya teniamos armado. Es aquí donde nuevamente triunfa el software libre. Gracias a que ffmpeg es licencia GPL, alguien generó una compilación con soporte de filter complex. A partir de ahí fué posible la inclusión de moscas y zócalos.


El proyecto actualmente

Hace pocos dias pudimos estabilizar la emisión en H264 superando la molestia de la incompatibilidad de ffmpeg con las box receptoras. La versión 5 de SAS emite una secuencia única, de ésta manera soluciono el problema de los cambios del reloj. Uno de los temas pendientes es lograr generar un stream  con PCR real ya que el ffmpeg no logra rellenar con paquetes vacios la diferencia de cuadros.
En esta versión estamos manejando el stream a nivel de cuadro a cuadro logrando cosas como camara lenta en tiempo real. En otras entradas iré publicando lo medular de los scripts que estamos utilizando y como hemos ido mejorando y optimizando el sistema.




4 comentarios: