Streaming en vivo a través de una cámara IP

Que es el Streaming?

La tecnología de streaming se utiliza para aligerar la descarga y ejecución de audio y vídeo en la web, ya que permite escuchar y visualizar los archivos mientras se están descargando.

Si no utilizamos streaming, para mostrar un contenido multimedia en la Red, tenemos que descargar primero el archivo entero en nuestro ordenador y más tarde ejecutarlo, para finalmente ver y oir lo que el archivo contenía. Sin embargo, el streaming permite que esta tarea se realice de una manera más rápida y que podamos ver y escuchar su contenido durante la descarga.

El streaming funciona de la siguiente manera. Primero nuestro ordenador (el cliente) conecta con el servidor y éste le empieza a mandar el fichero. El cliente comienza a recibir el fichero y construye un buffer donde empieza a guardar la información. Cuando se ha llenado el buffer con una pequeña parte del archivo, el cliente lo empieza a mostrar y a la vez continúa con la descarga. El sistema está sincronizado para que el archivo se pueda ver mientras que el archivo se descarga, de modo que cuando el archivo acaba de descargarse el fichero también ha acabado de visualizarse. Si en algún momento la conexión sufre descensos de velocidad se utiliza la información que hay en el buffer, de modo que se puede aguantar un poco ese descenso. Si la comunicación se corta demasiado tiempo, el buffer se vacía y la ejecución el archivo se cortaría también hasta que se restaurase la señal.

En la navegación por Internet es necesario descargar previamente el archivo (página HTML, imagen JPG, audio MP3, etc.) desde el servidor remoto al cliente local para luego visualizarlo en la pantalla de este último.
La tecnología de streaming se utiliza para optimizar la descarga y reproducción de archivos de audio y video que suelen tener un cierto peso.

El streaming funciona de la siguiente forma:
• Conexión con el servidor. El reproductor cliente conecta con el servidor remoto y éste comienza a enviarle el archivo.
• Buffer. El cliente comienza a recibir el fichero y construye un buffer o almacén donde empieza a guardarlo.
• Inicio de la reproducción. Cuando el buffer se ha llenado con una pequeña fracción inicial del archivo original, el reproductor cliente comienza a mostrarlo mientras continúa en segundo plano con el resto de la descarga.
• Caídas de la velocidad de conexión. Si la conexión experimenta ligeros descensos de velocidad durante la reproducción, el cliente podría seguir mostrando el contenido consumiendo la información almacenada en el buffer. Si llega a consumir todo el buffer se detendría hasta que se volviera a llenar.

El streaming puede ser de dos tipos dependiendo de la tecnología instalada en el servidor:
• Descarga progresiva. Se produce en servidores web que disponen de Internet Information Server (IIS), Apache, Tomcat, etc. El archivo de vídeo o audio solicitado por el cliente es liberado por el servidor como cualquier otro archivo utilizando el protocolo HTTP. Sin embargo, si el archivo ha sido especialmente empaquetado para streaming, al ser leído por el reproductor cliente, se iniciará en streaming en cuanto se llene el buffer.
• Transmisión por secuencias. Se produce en servidores multimedia que disponen de un software especial para gestionar más óptimamente el streaming de audio y vídeo: Windows Media Server, Flash Communication Server, etc. La utilización de un servidor multimedia ofrece múltiples ventajas frente al servidor web.

Las más destacadas son:
o Mayor rapidez en la visualización de este tipo de contenidos.
o La comunicación entre servidor/cliente se puede realizar por protocolos alternativos al HTTP. Tiene el inconveniente del bloqueo impuesto por Firewalls pero tiene la ventaja de una mayor rapidez.
o Mejor gestión del procesador y ancho de banda de la máquina del servidor ante peticiones simultáneas de varios clientes del mismo archivo de audio o vídeo.
o Control predefinido sobre la descarga que pueden realizar los clientes: autentificada, filtrada por IP, sin almacenarla en la caché del cliente, etc.
o Mayor garantía de una reproducción ininterrumpida gracias al establecimiento de una conexión de control inteligente entre servidor y cliente.
o Posibilidad de distribución de transmisiones de audio y vídeo en directo.

¿Qué se necesita para hacer Streaming?

Básicamente, necesitará 4 componentes:
1. Una fuente de vídeo.
2. “Live Encoder”.
3. Un servidor de Medios o CDN ( HTTP / RTMP / RTMPT / RTMPE protocolos ).
4. Reproductor Multimedia Web

1. Fuente de vídeo

Desde una Webcam conectada por USB, hasta un equipo tipo VTR/VCR o cámara profesional utilizando una capturadora de vídeo, de acuerdo a sus necesidades…

2. “Live Encoder”

Un “live encoder” es un hardware o software capaz de comprimir la fuente de vídeo, en tiempo real, y enviarla a un servidor de medios, en un formato específico, usando un protocolo determinado.

Ejemplos de software “live encoder”::
• Adobe Flash Media Live Encoder: Básico pero GRATUITO. Excelente calidad de compresión.
• Wirecast: Este software no es gratuito pero es una solución muy completa que permite mezclar entre varias fuentes de vídeo, superponer gráficos y textos, y mucho más. Tiene una versión básica gratuita.
• Open Broadcaster Software: Programa gratuito que permite capturar lo que pase en tu computadora y envía la señal al servidor de medios. Puede acceder a tu webcam y micrófono.

3. Servidor de Medios

El servidor de medios es un software que se instala en un servidor dedicado y está optimizado/especializado en “servir” contenidos multimedia a los usuarios finales, a través Reproductor Multimedia Web. El servidor de medios recibe el vídeo comprimido suministrado por el “live encoder” y lo transmite a los usuarios.

¿Y el CDN? un CDN (Content Delivery Network = Red de Distribución de Contenidos) es una especie de servidor de medios GIGANTESCO, con mucha más capacidad que un sólo servidor dedicado (no es económico…) y ofrece la posibilidad de “servir” a un número virtualmente ilimitado de usuarios simultáneamente.

Los servidores de medios más utilizados son:

• Adobe Flash Media Server: Es el más utilizado pero las versiones anteriores a la 4.5 sólo son compatibles con streaming Flash (protocolo RTMP). Para realizar streaming simultáneo Flash / iPhone, por HTTP, se requiere la versión 4.5 de este servidor de medios. Hay una edición gratuita para prueba/desarrolladores.
• Wowza Media Server: Este servidor de medios ha sido adoptado por muchos CDNs debido a su flexibilidad y precio. Es capaz de hacer streaming simultáneo para Flash e iOS. Hay una edición gratuita para prueba/desarrolladores.
• Red5: Red5 Media Server es un servidor de medios gratuito compatible con Flash.

4. Reproductor Multimedia Web

Se necesita un reproductor multimedia que sepa recibir la seña del servidor de medios y reproducirla. http://www.jwplayer.com/ es quien cuenta con las mejores prestaciones para reproducir video y al mismo tiempo se puede embeber dentro de un sitio web.

Otro reproductor que estaremos viendo, similar al anterior es Flow Player (https://flowplayer.org/).

Protocolos

Hay varios protocolos de red que hacen la transmisión de vídeo posible. Estos protocolos son el Protocolo de datagramas de usuario (UDP), real-time Streaming Protocol también llamado RTMP, (RTSP) y la conocida transmisión Control Protocolo (TCP), el etc. de multidifusión IP. Su trabajo es enviar el flujo de medios de comunicación como una serie de pequeños paquetes. Este método es muy simple y eficiente. Es posible que hayan paquetes perdidos, pero el usuario puede utilizar algunas técnicas de corrección de error para recuperar los datos, puede interpolar los datos faltantes o puede sufrir un abandono.

HTTP Streaming es un mecanismo para enviar datos desde un servidor Web a un explorador Web en respuesta a un evento. HTTP Streaming se logra a través de varios mecanismos comunes.
En uno de esos mecanismos el servidor web no termina la respuesta al cliente después de los datos se ha servido. Esto difiere del típico ciclo de HTTP en el que se cierra la respuesta inmediatamente después de la transmisión de datos.

Real Time Messaging Protocol (RTMP) es un protocolo propietario desarrollado por Adobe Systems (anteriormente desarrollado por Macromedia) que se utiliza principalmente con Macromedia Flash Media Server para streaming de audio y vídeo a través de Internet al cliente de Adobe Flash Player.

El Real Time Streaming Protocol (RTSP), desarrollado por la IETF y publicado en 1998 como RFC 2326, es un protocolo para el uso en sistemas de streaming de medios que permite a un cliente para controlar remotamente un servidor de streaming de medios de comunicación, la emisión de comandos VCR-como por ejemplo ” obra “y” pausa “, y permitir el acceso basado en el tiempo a los archivos en un servidor.

Las cámaras IP tienen la característica de transmitir el video en uno o varios protocolos de los mencionados. Y es una característica muy importante a tener en cuenta. Quien recibe la señal del protocolo es el servidor de streming, quien también debe contar con el protocolo que utilice la cámara. El protocolo seria similar a un idioma y lo que necesitamos es que la cámara y el servidor hablen el mismo idioma.