Articulo de referencia

Transmisión en vivo HTTP

.m3u8 "},"mime":{"wt":"application/vnd.apple.mpegurl or audio/mpegurl {{cite IETF |title= HTTP Live Streaming |rfc=8216 |sectionname=Playlists |section=4 |page=9 |last=Pantos |f...

HTTP Live Streaming (también conocido como HLS ) es un protocolo de comunicación de transmisión de tasa de bits adaptativa basado en HTTP desarrollado por Apple Inc. y lanzado en 2009. El soporte para el protocolo está ampliamente extendido en reproductores multimedia, navegadores web, dispositivos móviles y servidores de transmisión de medios. A partir de 2022, una encuesta anual de la industria del video ha demostrado consistentemente que es el formato de transmisión más popular. [ 2 ]

HLS se asemeja a MPEG-DASH en que funciona dividiendo el flujo general en una secuencia de pequeñas descargas de archivos basadas en HTTP, cada una descargando un pequeño fragmento de un flujo de transporte general potencialmente ilimitado. Se envía al cliente una lista de flujos disponibles, codificados a diferentes tasas de bits, mediante una lista de reproducción M3U extendida. [ 3 ]

Basado en transacciones HTTP estándar, HTTP Live Streaming puede atravesar cualquier firewall o servidor proxy que permita el paso del tráfico HTTP estándar, a diferencia de los protocolos basados ​​en UDP como RTP . Esto también permite que el contenido se ofrezca desde servidores HTTP convencionales y se entregue a través de redes de entrega de contenido basadas en HTTP ampliamente disponibles . [ 4 ] [ 5 ] [ 6 ] El estándar también incluye un mecanismo de cifrado estándar [ 7 ] y distribución segura de claves mediante HTTPS , que en conjunto proporcionan un sistema DRM simple . Las versiones posteriores del protocolo también permiten el avance y retroceso rápido en modo truco y la integración de subtítulos.

Apple documentó HTTP Live Streaming como un borrador de Internet (envío individual), la primera etapa del proceso para publicarlo como una solicitud de comentarios (RFC). En diciembre de 2015, los autores de dicho documento solicitaron al Editor Independiente de Flujos de RFC (ISE) que lo publicara como una RFC informativa (no estándar) fuera del proceso de consenso de la IETF . [ 8 ] En agosto de 2017, se publicó la RFC 8216 para describir la versión 7 del protocolo. [ 9 ] 

Arquitectura

La transmisión en directo HTTP utiliza un servidor web convencional que implementa soporte para transmisión en directo HTTP (HLS) para distribuir contenido audiovisual y requiere software específico, como OBS , para adaptar el contenido a un formato ( códec ) adecuado para su transmisión en tiempo real a través de una red . La arquitectura del servicio comprende:

Servidor
Codifica y encapsula el flujo de vídeo de entrada en un formato adecuado para su entrega. A continuación, lo prepara para su distribución segmentándolo en distintos archivos. Durante el proceso de recepción, el vídeo se codifica y segmenta para generar fragmentos de vídeo y un archivo de índice.
  • Codificador: codifica archivos de vídeo en formato H.264 y audio en AAC , MP3 , AC-3 o EAC-3 . [ 10 ] Esto se encapsula mediante MPEG-2 Transport Stream (MPEG-TS) o MPEG-4 Part 14 (MP4) para transportarlo.
  • Segmentador: divide el flujo en fragmentos de igual longitud. También crea un archivo de índice que contiene referencias a los archivos fragmentados, guardado como .m3u8 .
Distribuidor
Formado por un servidor web estándar, acepta solicitudes de clientes y entrega todos los recursos (archivo de lista de reproducción .m3u8 y archivos de segmento .ts) necesarios para la transmisión .
Cliente
Solicita y descarga todos los archivos y recursos, organizándolos para presentarlos al usuario como un vídeo de flujo continuo. El software cliente descarga primero el archivo de índice mediante una URL y, a continuación, los distintos archivos multimedia disponibles. El software de reproducción ensambla la secuencia para permitir la visualización continua al usuario.

Características

La transmisión en directo HTTP proporciona mecanismos para que los reproductores se adapten a condiciones de red inestables sin que se produzcan interrupciones visibles en la reproducción. Por ejemplo, en una red inalámbrica inestable, HLS permite al reproductor usar un vídeo de menor calidad, reduciendo así el consumo de ancho de banda. Los vídeos HLS pueden tener alta disponibilidad al proporcionar varios servidores para el mismo vídeo, lo que permite al reproductor cambiar de servidor sin problemas si uno de ellos falla.

Adaptabilidad

Para que el reproductor pueda adaptarse al ancho de banda de la red, el vídeo original se codifica en varios niveles de calidad distintos . El servidor proporciona un índice, denominado lista de reproducción maestra , de estas codificaciones , llamadas flujos variantes . El reproductor puede entonces elegir entre los flujos variantes durante la reproducción, alternando entre ellos sin interrupciones según cambien las condiciones de la red.

Utilizando MP4 fragmentado

En la WWDC 2016, Apple anunció [ 11 ] la inclusión del direccionamiento por rango de bytes para archivos MP4 fragmentados , o fMP4, lo que permite reproducir contenido a través de HLS sin necesidad de multiplexarlo en MPEG-2 Transport Stream . La industria consideró esto como un paso hacia la compatibilidad entre HLS y MPEG-DASH . [ 12 ] [ 13 ]

HLS de baja latencia

Existen dos extensiones HLS no relacionadas entre sí, con el nombre Low Latency y su acrónimo correspondiente:

  • Apple Low Latency HLS (ALHLS), que fue anunciado por Apple en la WWDC2019 [ 14 ].
  • LHLS comunitario (LHLS) que precedió a la publicación de Apple y supuestamente es más simple [ 15 ]

El resto de esta sección describe ALHLS de Apple. Reduce el retardo de extremo a extremo al transmitir a través de HLS al disminuir el tiempo para iniciar las reproducciones de transmisiones en vivo y mantener ese tiempo durante un evento de transmisión en vivo. Funciona agregando archivos de segmentos de medios parciales a la mezcla, de manera similar a fMP4 de MPEG-CMAF. A diferencia de CMAF, ALHLS también admite archivos de transporte MPEG-2 TS parciales. Un segmento de medios parcial es un segmento estándar (por ejemplo, 6 segundos) dividido en segmentos iguales de menos de un segundo (por ejemplo, 200 milisegundos). El primer segmento estándar se reemplaza por la serie de segmentos parciales. Los segmentos subsiguientes son del tamaño estándar. [ 16 ] Se requiere HTTP/2 para enviar los segmentos junto con la lista de reproducción, lo que reduce la sobrecarga de establecer conexiones HTTP/TCP repetidas.

Otras características incluyen:

  • Actualizaciones delta de listas de reproducción: solo se envían los cambios entre listas de reproducción, que normalmente caben en una única MTU, lo que hace más eficiente la carga de las listas de reproducción que, con ventanas de DVR grandes, pueden ser bastante grandes.
  • Bloqueo de la recarga de listas de reproducción: al solicitar listas de reproducción de contenido multimedia en directo, espere hasta que el primer segmento también esté listo y devuelva ambos al mismo tiempo (ahorrando solicitudes HTTP/TCP adicionales).
  • Informes de representación: agregue metadatos a otras representaciones multimedia para que el cambio entre ABR sea más rápido.
  • Se han añadido nuevas etiquetas:  EXT-X-SERVER-CONTROL /  EXT-X-PART / EXT-X-SKIP /  EXT-X-RENDITION-REPORT
  • Se agregaron las funciones de devolución de llamada URL QUERY_STRING ?_HLS

Apple también ha añadido nuevas herramientas: tsrecompressor produce y codifica un flujo continuo de audio y vídeo de baja latencia. La herramienta mediastreamsegmenter ahora está disponible en una versión de baja latencia. Se trata de un segmentador HLS que recibe un flujo UDP/MPEG-TS de tsrecompressor y genera una lista de reproducción multimedia, incluyendo las nuevas etiquetas mencionadas anteriormente.

La compatibilidad con HLS de baja latencia está disponible en tvOS 13 beta, y en iOS y iPadOS 14. [ 17 ] El 30 de abril de 2020, Apple añadió las especificaciones de baja latencia a la segunda edición de la especificación principal de HLS. [ 18 ]

Inserción dinámica de anuncios

La inserción dinámica de anuncios es compatible con HLS mediante información de empalme basada en la especificación SCTE-35 . El mensaje de empalme SCTE-35 se inserta en el archivo de lista de reproducción multimedia mediante la etiqueta EXT-X-DATERANGE. Cada sección de información de empalme SCTE-35 (splice_info_section()) está representada por una etiqueta EXT-X-DATERANGE con un atributo SCTE35-CMD. Un par de empalme de entrada/salida SCTE-35, señalizado por los comandos splice_insert(), está representado por una o más etiquetas EXT-X-DATERANGE con el mismo atributo ID. El comando de empalme de salida SCTE-35 debe tener el atributo SCTE35-OUT y el comando de empalme de entrada debe tener el atributo SCTE35-IN.

Entre las dos etiquetas EXT-X-DATERANGE que contienen los atributos SCTE35-OUT y SCTE35-IN, respectivamente, puede haber una secuencia de URI de segmentos multimedia. Estos segmentos multimedia normalmente representan programas publicitarios que pueden sustituirse por anuncios locales o personalizados. La sustitución de anuncios no requiere reemplazar los archivos multimedia; solo es necesario modificar las URI de la lista de reproducción para que apunten a programas publicitarios diferentes. La sustitución de anuncios puede realizarse en el servidor de origen o en el dispositivo de reproducción multimedia del cliente.

Implementaciones de servidor

Entre las implementaciones de servidor más destacadas que admiten la transmisión en directo mediante HTTP se incluyen:

  • Adobe Media Server es compatible con HLS para dispositivos iOS (HLS) y con la transmisión en directo HTTP protegida (PHLS).
  • Akamai ofrece soporte para HLS en transmisiones en directo y bajo demanda.
  • AT&T ofrece soporte para HLS en todos los formatos, tanto en directo como bajo demanda.
  • Ant Media Server admite HLS y HLS de baja latencia [ 19 ] para transmisiones en vivo y bajo demanda.
  • Las cámaras IP de Axis Communication admiten HLS a través de la aplicación CamStreamer ACAP.
  • Instart admite HLS para transmisiones bajo demanda.
  • Amazon CloudFront admite HLS para transmisiones bajo demanda.
  • Bitmovin admite HLS para la transmisión en directo y bajo demanda.
  • CDNetworks es compatible con HLS para transmisiones en directo y bajo demanda.
  • Cisco Systems : admite la entrega integral de extremo a extremo para servicios de Live/TSTV/VOD/HLS y DVR en la nube.
  • Cloudflare admite HLS para transmisiones en directo y bajo demanda.
  • EdgeCast Networks admite la transmisión entre dispositivos mediante HLS.
  • Fastly admite HLS para transmisiones en vivo y bajo demanda. [ 20 ]
  • El servidor universal Helix de RealNetworks es compatible con iPhone OS 3.0 y versiones posteriores para la transmisión en directo y bajo demanda (HTTP Live o On-Demand) de contenido H.264 y AAC a iPhone, iPad e iPod.
  • Los servicios multimedia IIS de Microsoft admiten la transmisión fluida en directo y bajo demanda, así como la transmisión en directo mediante HTTP.
  • El nivel 3 admite transmisiones en directo y bajo demanda de HLS.
  • Limelight Networks admite HLS para algunas cuentas. [ 21 ]
  • Nginx con el módulo nginx-rtmp-module admite HLS en modo en vivo. La versión comercial Nginx Plus, que incluye el módulo ngx_http_hls_module , también admite HLS/HDS VOD. [ 22 ]
  • Nimble Streamer admite HLS en modo en directo y bajo demanda, y también es compatible con la especificación HLS de baja latencia de Apple.
  • Node.js con el paquete hls-server admite la codificación hls en modo en vivo y la conversión de archivos locales. [ 23 ]
  • OvenMediaEngine es un proyecto de código abierto que admite HLS de baja latencia (LL-HLS) y HLS para transmisión en directo.
  • PeerTube admite HLS
  • Storm Streaming Server admite HLS como modo de respaldo para su reproductor Media Source Extensions [ 24 ].
  • La red de distribución de contenido (CDN) de Tata Communications admite HLS para transmisiones en directo y bajo demanda.
  • TVersity es compatible con HLS y permite la transcodificación en tiempo real para la reproducción de cualquier contenido de vídeo en dispositivos iOS.
  • Ustream admite la transmisión en directo mediante HLS. Si el códec de audio y vídeo original no cumple con los requisitos de HLS, la transmisión recibida se vuelve a transcodificar.
  • VLC Media Player admite HLS para la reproducción de contenido en directo y bajo demanda desde la versión 2.0.
  • El motor de transmisión Wowza de Wowza Media Systems es compatible con HLS y HLS cifrado para transmisión en vivo (con DVR), transmisión bajo demanda y la especificación HLS de baja latencia de Apple.

Uso

  • Google añadió soporte para HTTP Live Streaming en Android 3.0 (Honeycomb). [ 25 ]
  • HP añadió soporte para HTTP Live Streaming en webOS 3.0.5. [ 26 ]
  • Microsoft agregó soporte para HTTP Live Streaming en el motor de renderizado EdgeHTML en Windows 10 en 2015. [ 27 ]
  • Microsoft agregó soporte para HTTP Live Streaming en IIS Media Services 4.0. [ 28 ]
  • Yospace añadió compatibilidad con la transmisión en directo HTTP en Yospace HLS Player y en el SDK para Flash versión 1.0.
  • Sling Media agregó soporte para transmisión en vivo HTTP a sus Slingboxes y a sus aplicaciones SlingPlayer. [ 29 ]
  • En 2014/15, la BBC introdujo transmisiones HLS-AAC para sus servicios de radio por internet en directo y audio bajo demanda, y admite esas transmisiones con sus clientes iPlayer Radio . [ 30 ]
  • Twitch utiliza HTTP Live Streaming (HLS) para transmitir y escalar la transmisión en vivo a muchos espectadores simultáneos, y también admite múltiples variantes (por ejemplo, 1080p, 720p, etc.). [ 31 ]

Jugadores y servidores compatibles

La transmisión en directo HTTP es compatible de forma nativa con los siguientes sistemas operativos:

Windows 10 solía tener soporte nativo para HTTP Live Streaming en EdgeHTML , un motor de navegador propietario que se usaba en Microsoft Edge (ahora conocido como Edge Legacy) antes de la transición al motor de navegador Blink basado en Chromium . Edge Legacy se incluyó en Windows 10 hasta la versión 2004. Fue reemplazado por Edge Chromium en la versión 20H2. Junto con Windows 11 , Microsoft lanzó un reproductor multimedia actualizado que admite HLS de forma nativa.

Clientela

Servidores

Codificadores en vivo

codificadores VOD

Véase también

Referencias

  1. Pantos, R.; May, W. (2017). "Playlists" . HTTP Live Streaming . IETF . pág. 9, sec. 4. doi : 10.17487/RFC8216 . ISSN 2070-1721 . RFC 8216. Consultado el 15 de enero de 2020 .    
  2. Lederer, Stefan. "Informe de desarrolladores de vídeo de 2022" (PDF) . Bitmovin . Consultado el 25 de octubre de 2023 .
  3. Jordan, Larry (10 de junio de 2013). "Los fundamentos de la transmisión en vivo HTTP" . Blog de Larry . Larry Jordan & Associates . Consultado el 18 de junio de 2013 .
  4. "MPEG-DASH vs. Apple HLS vs. Smooth Streaming vs. Adobe HDS" . Bitmovin . 29 de marzo de 2015.
  5. Chen, Songqing; Shen, Bo; Tan, Wai-tian; Wee, Susie; Zhang, Xiaodong (09-07-2006). "Un caso para la transmisión por Internet a través de servidores web". 2006 IEEE International Conference on Multimedia and Expo . pp. 2145–2148 . doi : 10.1109/ICME.2006.262660 . eISSN 1945-788X . ISBN   9781424403677. ISSN 1945-7871 . S2CID 9202042 .  
  6. Songqing Chen; Bo Shen; Wee, S.; Xiaodong Zhang (23-07-2007). "SProxy: una infraestructura de almacenamiento en caché para soportar la transmisión por Internet". IEEE Transactions on Multimedia . 9 (5): 1062– 1072. Bibcode : 2007ITMm....9.1062C . CiteSeerX 10.1.1.74.4838 . doi : 10.1109/TMM.2007.898943 . ISSN 1520-9210 . S2CID 870854 .   
  7. Pantos, R. (30 de septiembre de 2011). "HTTP Live Streaming" . Grupo de trabajo de ingeniería de Internet . Recuperado el 18 de junio de 2013 .
  8. "Historial para draft-pantos-http-live-streaming" . Recuperado el 17 de abril de 2017. Transmisión cambiada de None a ISE .
  9. Pantos, Roger; May, William (agosto de 2017). HTTP Live Streaming . IETF . doi : 10.17487/RFC8216 . RFC 8216. Recuperado el 5 de septiembre de 2017 .
  10. Roger, Pantos; William, May. "HTTP Live Streaming" . tools.ietf.org . Consultado el 23 de enero de 2017 .
  11. Novedades en la transmisión en directo HTTP . Apple Developer .
  12. Siglin, Tim (16 de junio de 2016). "HLS ahora admite MP4 fragmentado, lo que lo hace compatible con DASH" . StreamingMedia.com .
  13. Grandl, Reinhard (15 de junio de 2016). "WWDC16: HLS admite MP4 fragmentado y se vuelve compatible con MPEG-DASH!" . Bitmovin.com .
  14. HLS de baja latencia . Desarrollador de Apple .
  15. "La comunidad nos dio la transmisión en vivo de baja latencia. Luego Apple nos la quitó" . 14 de junio de 2019. Consultado el 17 de junio de 2019 .
  16. "Documentación para desarrolladores de Apple" . developer.apple.com . Consultado el 10 de agosto de 2022 .
  17. Speelmans, Pieter-Jan (2020-12-09). "Baja latencia en todas partes: cómo implementar LL-HLS en todas las plataformas" . Theo . Recuperado el 2021-03-11 .
  18. Pantos, Roger (30 de abril de 2020). "HTTP Live Streaming 2nd Edition" . IETF . Consultado el 30 de abril de 2020 .
  19. Guney, Yunus Emre (29 de agosto de 2024). "Eleva tu transmisión: la magia de LL-HLS con Ant Media Server - Ant Media Server" . antmedia.io . Consultado el 6 de diciembre de 2024 .
  20. "Video CDN | Transmisión de video | Entrega de transmisión | Fastly" . www.fastly.com . Consultado el 1 de octubre de 2020 .
  21. "Guía de codificación" . Soporte de vídeo de Limelight Orchestrate . Limelight Networks. Archivado del original el 1 de agosto de 2013. Consultado el 14 de noviembre de 2013 .
  22. "Módulo ngx_http_hls_module" . nginx.org .
  23. "hls-server" . npm. 12 de febrero de 2018.
  24. "Storm Streaming" . Storm Streaming . Consultado el 30/07/2021 . Dispositivos de salida: HLS, MPEG-DASH, WebSocket, RTMP
  25. "Aspectos destacados de la plataforma Android 3.0" . Desarrolladores de Android . Archivado del original el 28 de enero de 2011.
  26. "Actualizaciones de webOS 3.0.5" . Archivado del original el 22/01/2012.
  27. "Transmisión de vídeo adaptativa simplificada: Anuncio de compatibilidad con HLS y DASH en Windows 10" . Blog del equipo de Internet Explorer . 29 de enero de 2015.
  28. 1 2 Siglin, Tim (1 de noviembre de 2010). "Primer vistazo: Microsoft IIS Media Services 4" . StreamingMedia.com . Recuperado el 30 de julio de 2011 .
  29. Chan, David (26 de noviembre de 2010). "Reseña de la aplicación para iPad: SlingPlayer" . Blogcritics . Archivado del original el 15 de abril de 2014. Recuperado el 14 de abril de 2014 .
  30. Scott, Andrew (27 de febrero de 2015). "Audio Factory: una visión general" . Blog de Internet . BBC. Los únicos recursos bajo demanda serán AAC HLS. ... Seguimos hablando con los fabricantes y muchos confían en que podrán proporcionar a sus usuarios acceso a las 57 transmisiones HLS AAC a 320 kb/s en unas pocas semanas o meses. 
  31. Shen, Yueshi (2017). "Transmutación/transcodificación de vídeo en directo: FFmpeg vs TwitchTranscoder, Parte 1" .
  32. "Formatos multimedia compatibles" . Desarrolladores de Android .
  33. "HTTP Live Streaming (HLS) | ¿Puedo usar...? Tablas de soporte para HTML5, CSS3, etc." . caniuse.com .
  34. "Firefox para Android 50.0, vea todas las nuevas funciones, actualizaciones y correcciones" . Mozilla .
  35. Giles, Ralph; Smole, Martin (28 de noviembre de 2017). "Reproducción de vídeo AV1 con DASH en Firefox" . Mozilla Hacks: el blog para desarrolladores web .
  36. "Firefox para Android Beta 59.0beta, vea todas las nuevas funciones, actualizaciones y correcciones" . Mozilla .
  37. Slivka, Eric (15 de noviembre de 2010). "Se encuentran indicios del servicio 'iTunes Live Stream' en iTunes 10.1" . MacRumors .
  38. "#2943 (Soporte para transmisión en vivo HTTP como cliente)" . Rastreador de errores de VLC . 9 de julio de 2009.
  39. "Reproducción de vídeo en streaming HLS con el reproductor VLC - Foros de VideoLAN" . forum.videolan.org .
  40. "Windows 8 - Transmisión en vivo HTTP" . www.3ivx.com .
  41. " 3ivx - Programa de socios desarrolladores de Xbox Live - Proveedor de componentes" . www.3ivx.com
  42. NV, THEO Technologies. "Reproductor de vídeo HTML5 – THEOplayer" . www.theoplayer.com .
  43. Reproductor, Radiant Media. "Historial de versiones - Radiant Media Player" . www.radiantmediaplayer.com .
  44. "dailymotion – Medium" . Medium .
  45. "Página de demostración de hls.js" . Archivado del original el 20 de noviembre de 2015.
  46. "Orange-OpenSource/hasplayer.js" . GitHub .
  47. "Chispa" . Chispa .
  48. "google/shaka-player" . GitHub .
  49. "Demostración de Shaka Player" . shaka-player-demo.appspot.com .
  50. "Fluid Player - Reproductor de vídeo HTML5 " . www.fluidplayer.com
  51. "Documentación de Fluid Player" . docs.fluidplayer.com .
  52. "fluid-player/fluid-player" . GitHub .
  53. "QMPlay2 - Qt Media Player 2" . 22 de octubre de 2023 vía GitHub.
  54. "marakew/AvProxy" . GitHub .
  55. Ozer, Jan (2015). "Reseña: Bitcodin, un servicio de codificación de vídeo en la nube de Bitmovin" . www.StreamingMediaGlobal.com .
  56. "Entrega de vídeo HLS - Brightcove Learning" . support.brightcove.com .
  57. Guney, Yunus Emre (29 de agosto de 2024). "Eleva tu transmisión: la magia de LL-HLS con Ant Media Server - Ant Media Server" . antmedia.io . Consultado el 6 de diciembre de 2024 .
  58. "MediaGoom. Transmisión web esencial" .