Introducción

'Stream' significa 'chorro' o 'flujo', y alude a la descarga de un fichero que no tiene principio ni final: el caso más claro es una transmisión en directo. Una emisión en diferido no deja de ser un fichero muy grande y que se puede transmitir por HTTP, FTP, o cualquier otro medio habitual de descarga. Un stream debe ser transmitido de forma que cualquiera pueda conectar con él en cualquier momento, y no sólo al principio de la transmisión.
En el siguiente documento se especifican los requerimientos técnicos de un sistema de este tipo, y se propone una solución basada en software libre.
El funcionamiento del streaming se basa en tres componentes: un codificador, un servidor y un cliente.
El codificador trata el vídeo y audio que se deseen transmitir, los comprime y los transmite al servidor.
El servidor es quien carga con la tarea de multiplicar este hilo por transmitirlo a cada uno de los clientes.
Los clientes, por ejemplo QuickTime o Windows Media Player, reciben este hilo, lo descomprimen, y lo representan en pantalla.
Arquitectura de software
En Crealogica.com hemos desarrollado con éxito sistemas de streaming basados en una combinación de software libre tanto en Codificador como en Servidor. Después de muchas pruebas y meses de tests hemos llegado a la solución perfecta para llegar a emitir con una calidad "DVD" con una simple ADSL.
El cliente web puede ser un reproductor de medios empotrado, como Windows Media Player, o bien un applet Java que se encarga de visualizar los contenidos. Este applet estará en una página web, alojada en la misma máquina-servidor que el streaming.
El servidor está configurado para emitir los hilos que le envíen codificadores autorizados, y rechazar los de codificadores desconocidos. Un servidor mal configurado sería vulnerable a la retransmisión de contenidos no autorizados, que consumirían recursos y, en el peor caso, podrían poner en aprietos legales a quien lo opere.
El modelo propuesto en este documento se basa completamente en Software Libre, y -a diferencia de la mayoría de sistemas de vídeo actuales- no necesita el pago en concepto de royalties ni la adquisición de licencias de software para realizar todas sus funciones (es decir, la retransmisión y la recepción de una señal de vídeo a través de Internet).
Arquitectura de hardware
En una transmisión on-line, la señal puede ser:
1.Un hilo de *raw vídeo, es decir un hilo de vídeo sin comprimir y que ha de ser codificado.
2.Un hilo de vídeo tratado, pero que debe codificarse en otro formato por ser emitido.
-
3.Un hilo de vídeo preparado por emitir, es decir que no necesita tratamiento.
Dado el ínfimo caudal de salida que ofrecen las subdesarrolladas operadoras de banda ancha en España, la única opción posible es la tercera, ya que si la señal no está comprimida al máximo, no se puede mandar la señal al servidor de streaming simplemente porque “no cabe” por la conexión a internet.
Por tanto, el sistema emisor de la señal debe ser lo suficientemente potente como para codificar la señal en tiempo real. En principio cualquier equipo más o menos moderno debería ser capaz de realizar ésta función sin problemas.
En cuanto al servidor, no es necesaria una gran máquina, pero sí una conexión de banda muy ancha.
Las necesidades de anchura de banda se calculan multiplicando el bitrate (bits por segundo) del vídeo que se está emitiendo por el número de conexiones clientes simultáneas.
[Ancho de banda] = [nº máximo clientes conectados] * [calidad del vídeo en bits por segundo]
Aplicando la fórmula anterior, un sistema de streaming con una conexión de 100Mbps, es capaz de emitir una señal de relativamente buena calidad (500kbps) a 200 personas simultáneas, además de poder recibir sin problemas diversos hilos de vídeo y audio e incluso codificarlos y transcodificarlos... Aunque, como ya hemos comentado, ésta última opción no tiene demasiado sentido, dado el ínfimo caudal de salida que permiten las conexiones ADSL y 3G españolas la única posibilidad real es emitir desde el origen un hilo de vídeo comprimido al máximo.
Como soluciones “estándar” disponemos de varias opciones:
|