stringtranslate.com

Transmisión en vivo HTTP

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

HLS se parece a MPEG-DASH en que funciona dividiendo el flujo general en una secuencia de pequeñas descargas de archivos basadas en HTTP, cada una de las cuales descarga un fragmento corto de un flujo de transporte general potencialmente ilimitado. Se envía al cliente una lista de flujos disponibles, codificados a diferentes velocidades 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 ofrecer contenido desde servidores HTTP convencionales y entregarlo 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 de clave segura mediante HTTPS , que juntos proporcionan un sistema DRM simple . Las versiones posteriores del protocolo también permiten el avance y rebobinado rápido en modo truco y la integración de subtítulos.

Apple ha documentado HTTP Live Streaming como un borrador de Internet (envío individual), la primera etapa del proceso de publicación como una solicitud de comentarios (RFC). A partir de diciembre de 2015, los autores de ese documento solicitaron al RFC Independent Stream Editor (ISE) que publicara el documento 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

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

Servidor
Codificar y encapsular el flujo de vídeo de entrada en un formato adecuado para su distribución. Luego, se prepara para su distribución segmentándolo en diferentes archivos. En el proceso de entrada, 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 EC-3 . [10] Este es encapsulado por MPEG-2 Transport Stream o MPEG-4_Part_14 para transportarlo.
  • Segmentador: divide el stream en fragmentos de igual longitud. También crea un archivo de índice que contiene referencias de los archivos fragmentados, guardados como .m3u8 .
Distribuidor
Formado por un servidor web estándar, acepta solicitudes de los clientes y entrega todos los recursos (archivo de lista de reproducción .m3u8 y archivos de segmento .ts) necesarios para la transmisión .
Cliente
Solicitar y descargar todos los archivos y recursos, reuniéndolos para que puedan ser presentados al usuario como un video de flujo continuo. El software cliente descarga primero el archivo de índice a través de una URL y luego los diversos archivos multimedia disponibles. El software de reproducción ensambla la secuencia para permitir la visualización continua al usuario.

Características

HTTP Live Streaming ofrece mecanismos para que los reproductores se adapten a condiciones de red poco fiables sin provocar interrupciones de reproducción visibles para el usuario. Por ejemplo, en una red inalámbrica poco fiable, HLS permite al reproductor utilizar un vídeo de menor calidad, lo que reduce el uso del ancho de banda. Los vídeos HLS pueden estar altamente disponibles proporcionando varios servidores para el mismo vídeo, lo que permite al reproductor cambiar sin problemas si uno de los servidores falla.

Adaptabilidad

Para permitir que un reproductor se adapte al ancho de banda de la red, el vídeo original se codifica en varios niveles de calidad distintos . El servidor ofrece un índice, llamado lista de reproducción maestra , de estas codificaciones , llamadas transmisiones variantes . El reproductor puede elegir entre las transmisiones variantes durante la reproducción y cambiar de una a otra sin problemas a medida que cambian las condiciones de la red.

Usando MP4 fragmentado

En la WWDC 2016, Apple anunció [11] la inclusión de 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 con un nombre de baja latencia y un acrónimo correspondiente:

El resto de esta sección describe el ALHLS de Apple. Reduce el retraso de cristal a cristal cuando se transmite a través de HLS al reducir el tiempo para iniciar las reproducciones de transmisión 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 muy similar al fMP4 de MPEG-CMAF. A diferencia de CMAF, ALHLS también admite archivos de transporte TS MPEG-2 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:

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 está ahora disponible en una versión de baja latencia. Es un segmentador HLS que recibe un flujo UDP/MPEG-TS de tsrecompressor y genera una lista de reproducción multimedia, incluidas las nuevas etiquetas mencionadas anteriormente.

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

Inserción dinámica de anuncios

La inserción dinámica de anuncios se admite en 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 de medios mediante la etiqueta EXT-X-DATERANGE. Cada splice_info_section() de SCTE-35 está representada por una etiqueta EXT-X-DATERANGE con un atributo SCTE35-CMD. Un par de entrada/salida de empalme SCTE-35 señalado por los comandos splice_insert() está representado por una o más etiquetas EXT-X-DATERANGE que llevan el mismo atributo ID. El comando de salida de empalme SCTE-35 debe tener el atributo SCTE35-OUT y el comando de entrada de empalme 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 de medios. Estos segmentos de medios normalmente representan programas de anuncios que pueden reemplazarse por el anuncio local o personalizado. El reemplazo del anuncio no requiere el reemplazo de los archivos de medios, solo se deben cambiar los URI en la lista de reproducción para que apunten a diferentes programas de anuncios. El reemplazo del anuncio se puede realizar en el servidor de origen o en el dispositivo de reproducción de medios del cliente.

Implementaciones de servidores

Las implementaciones de servidor notables que admiten transmisión en vivo HTTP incluyen:

Uso

Jugadores y servidores compatibles

La transmisión en vivo 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 Media Player 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). "Listas de reproducción". Transmisión en directo HTTP. 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 para desarrolladores de vídeo de 2022" (PDF) . Bitmovin . Consultado el 25 de octubre de 2023 .
  3. ^ Jordan, Larry (10 de junio de 2013). "Los conceptos básicos de la transmisión en directo a través de HTTP". El blog de Larry . Larry Jordan & Associates . Consultado el 18 de junio de 2013 .
  4. ^ "MPEG-DASH frente a Apple HLS frente a Smooth Streaming frente a Adobe HDS". Bitmovin . 29 de marzo de 2015.
  5. ^ Chen, Songqing; Shen, Bo; Tan, Wai-tian; Wee, Susie; Zhang, Xiaodong (9 de julio de 2006). "Un caso para la transmisión por Internet a través de servidores web". Conferencia internacional IEEE sobre multimedia y exposiciones de 2006. págs. 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 de julio de 2007). "SProxy: una infraestructura de almacenamiento en caché para soportar la transmisión por Internet". IEEE Transactions on Multimedia . 9 (5): 1062–1072. 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 . Consultado el 18 de junio de 2013 .
  8. ^ "Historial de draft-pantos-http-live-streaming" . Consultado el 17 de abril de 2017 . La transmisión cambió de Ninguna a ISE
  9. ^ Pantos, Roger; May, William (agosto de 2017). Transmisión en directo HTTP. doi : 10.17487/RFC8216 . RFC 8216. Consultado el 5 de septiembre de 2017 .
  10. ^ Roger, Pantos; William, May. "Transmisión en directo HTTP". tools.ietf.org . Consultado el 23 de enero de 2017 .
  11. ^ Novedades en transmisión en vivo HTTP. Desarrollador de Apple .
  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 transmisión en vivo con baja latencia. Luego Apple nos la quitó". 2019-06-14 . Consultado el 2019-06-17 .
  16. ^ "Documentación para desarrolladores de Apple". developer.apple.com . Consultado el 10 de agosto de 2022 .
  17. ^ Speelmans, Pieter-Jan (9 de diciembre de 2020). "Baja latencia en todas partes: cómo implementar LL-HLS en distintas plataformas". Theo . Consultado el 11 de marzo de 2021 .
  18. ^ Pantos, Roger (30 de abril de 2020). «Transmisión en directo HTTP, segunda edición». IETF . Consultado el 30 de abril de 2020 .
  19. ^ "Video CDN | Transmisión de video | Entrega de transmisión | Fastly". www.fastly.com . Consultado el 1 de octubre de 2020 .
  20. ^ "Guía de codificación". Compatibilidad con video de Limelight Orchestrate . Limelight Networks. Archivado desde el original el 2013-08-01 . Consultado el 14 de noviembre de 2013 .
  21. ^ "Módulo ngx_http_hls_module". nginx.org .
  22. ^ "hls-server". npm. 12 de febrero de 2018.
  23. ^ "Storm Streaming". Storm Streaming . Consultado el 30 de julio de 2021. Dispositivos de salida: HLS, MPEG-DASH, WebSocket, RTMP
  24. ^ "Unreal Media Server". umediaserver.net . Consultado el 30 de julio de 2021 . Unreal Media Server admite la ingesta de transmisiones en vivo desde una amplia gama de codificadores de hardware y software en vivo que envían transmisiones a través de WebRTC, RTMP, RTSP, MPEG2-TS, HLS,
  25. ^ "Características destacadas de la plataforma Android 3.0". Desarrolladores de Android . Archivado desde el original el 28 de enero de 2011.
  26. ^ "Actualizaciones de webOS 3.0.5". Archivado desde el original el 22 de enero de 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. ^ ab Siglin, Tim (1 de noviembre de 2010). "First Look: Microsoft IIS Media Services 4". StreamingMedia.com . Consultado 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 desde el original el 15 de abril de 2014. Consultado el 14 de abril de 2014 .
  30. ^ Scott, Andrew (27 de febrero de 2015). "Audio Factory: una descripción general". Blog de Internet . BBC. Los únicos recursos a pedido serán AAC HLS. ... Todavía estamos hablando con los fabricantes y muchos confían en que podrán brindar a sus usuarios acceso a todos nuestros 57 flujos HLS AAC a 320 kb/s en unas pocas semanas o meses.
  31. ^ Shen, Yueshi (2017). "Transcodificación y transmuxación de video en vivo: FFmpeg vs TwitchTranscoder, parte 1".
  32. ^ "Formatos multimedia admitidos". Desarrolladores de Android .
  33. ^ "Transmisión en vivo HTTP (HLS) | ¿Puedo usar... Tablas de soporte para HTML5, CSS3, etc." caniuse.com .
  34. ^ "Firefox para Android 50.0, ver todas las nuevas funciones, actualizaciones y correcciones". Mozilla .
  35. ^ Giles, Ralph; Smole, Martin (28 de noviembre de 2017). "Reproducción DASH de vídeo AV1 en Firefox". Mozilla Hacks: el blog para desarrolladores web .
  36. ^ "Firefox para Android Beta 59.0beta, ver todas las nuevas funciones, actualizaciones y correcciones". Mozilla .
  37. ^ Slivka, Eric (15 de noviembre de 2010). "Se encontraron 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". Medio .
  45. ^ "Página de demostración de hls.js". Archivado desde el 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. ^ "reproductor-fluido/reproductor-fluido". 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 video en la nube de Bitmovin". www.StreamingMediaGlobal.com .
  56. ^ "Entrega de videos HLS - Brightcove Learning". support.brightcove.com .
  57. ^ "MediaGoom. Transmisión web esencial".