¿Cuál es la mejor manera de transmitir video en vivo en un sitio web? He estado leyendo mucho sobre RTMP y HTTP-pseudo streaming. ¿Cuál es mejor y por qué?

Este tema es muy cercano y querido para mí, ya que soy parte del equipo de Microsoft que está utilizando ampliamente HTTP como la nueva forma de transmisión. Considere esto como una revelación de mi parte. Dicho esto, las opiniones expresadas en esta respuesta son mías.

Los protocolos de transmisión tradicionales como RTSP / RTMP ofrecen excelentes opciones para la transmisión, ya que permiten el control sobre lo que se envía a un cliente y también ofrecen la opción de controlar la transmisión al cliente en función de lo rápido que consumen. Hay una conexión 1-1 entre el cliente y el servidor y el cliente solicita el video del servidor. El servidor a su vez envía este video a un ritmo que el cliente puede consumir. Además, el cliente podría enviar más comandos al servidor para controlar algunos aspectos de lo que espera (por ejemplo, comandos como reproducir / pausar / cambiar el idioma de audio). Todo suena genial. Sin embargo, un gran desafío con este enfoque es que cuando se conecta en línea es muy difícil de escalar. Como cada conexión es 1-1, está sujeto a cuántos clientes puede admitir un servidor. La opción aquí es agregar más servidores. Además, cuando utiliza una red de entrega de contenido (CDN) para acelerar, deben configurar una red dedicada para la transmisión.

La otra opción discutida en el hilo era la descarga progresiva. En este caso, aloja un video en el servidor web y el cliente lo descarga como cualquier otro contenido a través de HTTP (por ejemplo, una página html). Esto es genial ya que la transacción puede ser apátrida. Esto significa que podría servir al cliente a través de un caché, etc. Puedo profundizar más si me ayuda, solo envíeme una nota. El problema con este enfoque es a menudo el ancho de banda desperdiciado y la falta de control. El cliente a menudo termina descargando más de lo que necesitaría. Imagine un video de YouTube en el que solo mira un primer minuto durante 5 minutos. video y date cuenta de que no es para ti. Si la red es buena, puede terminar descargando todo el video. ¡Que desperdicio!

Mientras discutimos el futuro de la transmisión, realmente necesitamos tener un enfoque híbrido aquí. Una buena solución sería:

  1. Uno que escala. Esto significa que la conexión debe ser sin estado (sin conexión 1-1 entre el servidor y el cliente).
  2. El tráfico debe ser sobre HTTP. La razón es que la mayoría de las redes soportan HTTP. Por ejemplo, los CDN ya tienen una red HTTP enorme y no deberían necesitar pararse en una red independiente.
  3. Uno que minimiza el desperdicio de ancho de banda de la red. El cliente debe descargar solo lo que necesita.

Además de lo anterior, la transmisión HTTP permite mejorar la experiencia del usuario al admitir la transmisión adaptativa mucho mejor que la transmisión tradicional. La transmisión adaptativa permite ajustar la calidad de la reproducción de video en el cliente de acuerdo con las capacidades de la red / máquina. En cada uno de estos casos, el cliente elige la mejor calidad de acuerdo con la red y otras condiciones de recursos. Ejemplos de estas tecnologías son:

  1. Microsoft IIS Smooth Streaming
  2. Apple HTTP Live Streaming (esto también se discute en la respuesta de Jeff)
  3. Adobe HTTP Dynamic Streaming

Para resumir, como ya estamos viendo, la transmisión adaptativa HTTP se está convirtiendo en la norma con servicios como Netflix, ESPN y NBC Olympics. Es probable que vea que el uso de la transmisión tradicional como RTSP / RTMP disminuya rápidamente.

También di una charla sobre Microsoft IIS Smooth Streaming en PDC 09. Si bien esta charla trata sobre Smooth Streaming, en general tendrá una buena idea de lo que significa la transmisión adaptativa: http://www.microsoftpdc.com/2009….

HTTP Pseudo Streaming es un método para usar la descarga progresiva, no la transmisión en vivo, para imitar la entrega de transmisión de video a pedido RTMP con un servidor http [1]. No debe confundirse con Apple HTTP Live Streaming, una nueva tecnología que utiliza la etiqueta de video HTML 5. A diferencia de Pseudo Streaming, HTTP Dynamic Streaming (que es lo que creo que querías decir) es técnicamente capaz de transmitir en vivo.

En este momento, Apple HTTP Live Streaming a través de la etiqueta HTML5 Video es una tecnología prometedora, pero bastante inmadura, ya que no se han especificado estándares para la transmisión en vivo. Como resultado, sin estándares, los proveedores de navegadores han instituido sus propias soluciones incompatibles. Las principales ventajas de esta transmisión son:

  • No es necesario un complemento en el extremo del cliente para ver el video
  • En la actualidad, es menos fanático de la CPU en las computadoras Mac, ya que puede aprovechar la aceleración de hardware para videos codificados en h.264
  • Compatibilidad con iOS (iPhone, iPad, iPod).
  • No requiere un servidor especial y, por lo tanto, en teoría, tiene costos de ancho de banda más baratos, ya que puede usar un servidor Apache normal, solo asegúrese de que pueda manejar el tráfico.
  • Es menos probable que sea bloqueado por un firewall.

Las desventajas son:

  • Solo los navegadores Safari (menos del 5% de cuota de mercado) actualmente admiten la transmisión en vivo HTTP Live
  • Suponiendo que otros navegadores inicien sesión, cada proveedor de navegadores ha elegido códecs y formatos incompatibles por separado.
  • No hay reproducción a pantalla completa

Ventajas de la transmisión en vivo RTMP (Flash):

  • Compatible con el 99% de los usuarios en casi todos los navegadores (iOS y algunos sistemas operativos móviles son la notable excepción).
  • También es capaz de Dynamic Streaming (o Adaptive como lo llama Adobe).
  • Compatibilidad con Android 2.2 + Flash Plugin
  • Pantalla completa
  • Baja latencia
  • Inicio más rápido
  • Buffering Dinámico
  • Permite el cifrado de flujo

Para hacer las cosas más confusas, tanto Flash como Silverlight (aproximadamente 60% de penetración) ahora ofrecen transmisión adaptativa HTTP en vivo a través de sus complementos. Por supuesto, ambos son incompatibles con la transmisión en vivo HTTP de Apple.

Para nuestra empresa, la calidad de transmisión y la compatibilidad son los factores más importantes al elegir un método de entrega. Como resultado, elegimos Flash / RTMP para nuestro video en vivo.

[1] http://www.longtailvideo.com/sup

Además de Ustream, Twitch tiene una excelente plataforma de transmisión en vivo. Su reproductor puede integrarse en cualquier sitio y tiene soporte para HTML5, aplicaciones móviles y transmisión a Google Chrome.

Respuestas cortas:

  • RTMP es más “seguro” si desea proteger el video fuente. Es más difícil descargar un video entregado por RTMP.
  • RTMP requiere un software especial o un CDN que lo admita. (Cloudfront lo admite si desea un CDN barato y simple).
  • La pseudo-transmisión HTTP permite un video de mayor calidad en el mismo video, ya que puede codificar a una tasa de bits más variable.
  • La pseudo-transmisión HTTP es menos probable que sea bloqueada por un firewall, ya que se entrega a través del puerto 80.