stringtranslate.com

Transmisión en vivo HTTP

HTTP Live Streaming (también conocido como HLS ) es un protocolo de comunicaciones de transmisión de velocidad de bits adaptable basado en HTTP desarrollado por Apple Inc. y lanzado en 2009. El soporte para el protocolo está generalizado 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 vídeo ha determinado sistemáticamente 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 una pequeña parte de un flujo de transporte general potencialmente ilimitado. Se envía al cliente una lista de transmisiones disponibles, codificadas 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 segura de claves mediante HTTPS , que en conjunto 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 en el proceso de publicación como una solicitud de comentarios (RFC). En diciembre de 2015, los autores de ese documento solicitaron al RFC Independent Stream Editor (ISE) que publicara el documento como un RFC informativo (no estándar) fuera del proceso de consenso del IETF . [8] En agosto de 2017, se publicó 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 un software específico, como OBS , para ajustar el contenido a un formato adecuado ( códec ) para su transmisión en tiempo real a través de un red . La arquitectura del servicio comprende:

Servidor
Codificar y encapsular el flujo de vídeo de entrada en un formato adecuado para la entrega. Luego se prepara para su distribución segmentándolo en diferentes archivos. En el proceso de ingesta, 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] Esto está encapsulado por MPEG-2 Transport Stream o MPEG-4_Part_14 para transportarlo.
  • Segmentador: divide el flujo 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
Solicita y descarga todos los archivos y recursos, armándolos para que puedan presentarse al usuario como un vídeo de flujo continuo. El software cliente descarga primero el archivo de índice a través de una URL y luego los distintos archivos multimedia disponibles. El software de reproducción ensambla la secuencia para permitir una visualización continua al usuario.

Características

HTTP Live Streaming proporciona mecanismos para que los reproductores se adapten a condiciones de red poco confiables sin causar un bloqueo de reproducción visible para el usuario. Por ejemplo, en una red inalámbrica poco confiable, HLS permite al reproductor usar un video de menor calidad, reduciendo así el uso de ancho de banda. Los vídeos HLS pueden tener una alta disponibilidad proporcionando varios servidores para el mismo vídeo, lo que permite que el reproductor se intercambie 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 está codificado en varios niveles de calidad distintos . El servidor proporciona un índice, denominado lista de reproducción maestra , de estas codificaciones , denominadas secuencias variantes . Luego, el jugador puede elegir entre las variantes de secuencias durante la reproducción, cambiando de un lado a otro 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 de rango de bytes para archivos MP4 fragmentados , o fMP4, lo que permite reproducir contenido a través de HLS sin la 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 el acrónimo correspondiente:

El resto de esta sección describe ALHLS de Apple. Reduce el retraso de vaso a vaso 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 añadiendo archivos de segmentos multimedia parciales a la mezcla, de forma muy parecida al fMP4 de MPEG-CMAF. A diferencia de CMAF, ALHLS también admite archivos de transporte parciales MPEG-2 TS. 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 sustituye por la serie de segmentos parciales. Los segmentos posteriores 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 agregó nuevas herramientas: tsrecompressor produce y codifica un flujo continuo de audio y video de baja latencia. La herramienta mediastreamsegmenter ahora está disponible en una versión de baja latencia. Es un segmentador HLS que recibe una transmisión UDP/MPEG-TS de tsrecompressor y genera una lista de reproducción multimedia, incluidas las nuevas etiquetas anteriores.

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 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 multimedia utilizando la etiqueta EXT-X-DATERANGE. Cada splice_info_section() SCTE-35 está representada por una etiqueta EXT-X-DATERANGE con un atributo SCTE35-CMD. Un par de empalme de salida/entrada 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 de 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 segmento de medios. Estos segmentos de medios normalmente representan programas publicitarios que pueden ser reemplazados por anuncios locales o personalizados. El reemplazo de anuncios no requiere el reemplazo de los archivos multimedia, solo es necesario cambiar los URI en la lista de reproducción para señalar diferentes programas de anuncios. El reemplazo de anuncios se puede realizar en el servidor de origen o en el dispositivo de reproducción multimedia del cliente.

Implementaciones de servidor

Las implementaciones de servidor notables que admiten HTTP Live Streaming incluyen:

Uso

Jugadores y servidores compatibles

HTTP Live Streaming 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

Ver también

Referencias

  1. ^ Pantos, R.; Mayo, W. (2017). "Listas de reproducción". Transmisión en vivo HTTP. IETF . pag. 9. seg. 4.doi : 10.17487 /RFC8216 . ISSN  2070-1721. RFC 8216 . Consultado el 15 de enero de 2020 .
  2. ^ Lederer, Stefan. "Informe sobre desarrolladores de vídeos 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 vivo HTTP". Blog de Larry . Larry Jordan y asociados . 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; Pequeña, Susie; Zhang, Xiaodong (9 de julio de 2006). "Un caso para la transmisión por Internet a través de servidores web". 2006 Conferencia Internacional IEEE sobre Multimedia y Expo . 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; Pequeño, S.; Xiaodong Zhang (23 de julio de 2007). "SProxy: una infraestructura de almacenamiento en caché para admitir la transmisión por Internet". Transacciones IEEE en 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). "Transmisión en vivo HTTP". 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ó a ISE desde Ninguno
  9. ^ Pantos, Roger; Mayo, William (agosto de 2017). Transmisión en vivo HTTP. doi : 10.17487/RFC8216 . RFC 8216 . Consultado el 5 de septiembre de 2017 .
  10. ^ Roger, Pantos; Guillermo, mayo. "Transmisión en vivo HTTP". herramientas.ietf.org . Consultado el 23 de enero de 2017 .
  11. ^ Novedades de la 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 es compatible con MPEG-DASH". Bitmovin.com .
  14. ^ HLS de baja latencia. Desarrollador de Apple .
  15. ^ "La comunidad nos brindó transmisión en vivo de baja latencia. Luego Apple nos la quitó". 2019-06-14 . Consultado el 17 de junio de 2019 .
  16. ^ "Documentación para desarrolladores de Apple". desarrollador.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 todas las plataformas". Teo . Consultado el 11 de marzo de 2021 .
  18. ^ Pantos, Roger (30 de abril de 2020). "Transmisión en vivo HTTP, segunda edición". IETF . Consultado el 30 de abril de 2020 .
  19. ^ "Video CDN | Transmisión de video | Entrega de transmisión | Rápidamente". www.fastly.com . Consultado el 1 de octubre de 2020 .
  20. ^ "Guía de codificación". Soporte de vídeo de Limelight Orchestrate . Redes destacadas. Archivado desde el original el 1 de agosto de 2013 . Consultado el 14 de noviembre de 2013 .
  21. ^ "Módulo ngx_http_hls_module". nginx.org .
  22. ^ "servidor hls". npm. 12 de febrero de 2018.
  23. ^ "Transmisión de tormentas". Transmisión de tormentas . Consultado el 30 de julio de 2021 . Dispositivos de salida: HLS, MPEG-DASH, WebSocket, RTMP
  24. ^ "Servidor de medios irreal". 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 software y hardware en vivo que envían transmisiones a través de WebRTC, RTMP, RTSP, MPEG2-TS, HLS,
  25. ^ "Aspectos destacados 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 video 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). "Primer vistazo: Microsoft IIS Media Services 4". StreamingMedia.com . Consultado el 30 de julio de 2011 .
  29. ^ Chan, David (26 de noviembre de 2010). "Revisión de la aplicación iPad: SlingPlayer". Críticos de blogs . 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 activos bajo demanda serán AAC HLS. ... Todavía estamos 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 vivo: FFmpeg vs TwitchTranscoder, parte 1".
  32. ^ "Formatos multimedia admitidos". 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 funciones nuevas, 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, vea todas las funciones nuevas, actualizaciones y correcciones". Mozilla .
  37. ^ Slivka, Eric (15 de noviembre de 2010). "Se encuentran sugerencias del servicio 'iTunes Live Stream' en iTunes 10.1". MacRumors .
  38. ^ "#2943 (Compatibilidad con HTTP Live Streaming como cliente)". Rastreador de errores de VLC . 9 de julio de 2009.
  39. ^ "Reproducción de vídeo en streaming HLS con reproductor VLC: los foros de VideoLAN". foro.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, Tecnologías THEO. "Reproductor de vídeo HTML5: THEOplayer". www.theoplayer.com .
  43. ^ Reproductor, Radiant Media. "Historial de versiones: Radiant Media Player". www.radiantmediaplayer.com .
  44. ^ "dailymotion - Medio". 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 - chispear .
  48. ^ "google/shaka-player". GitHub .
  49. ^ "Demostración del jugador Shaka". shaka-player-demo.appspot.com .
  50. ^ "Fluid Player: reproductor de vídeo HTML5". www.fluidplayer.com .
  51. ^ "Documentación del reproductor fluido". docs.fluidplayer.com .
  52. ^ "reproductor de fluidos / reproductor de fluidos". GitHub .
  53. ^ "QMPlay2 - Reproductor multimedia Qt 2". 22 de octubre de 2023 – vía GitHub.
  54. ^ "marakew/AvProxy". GitHub .
  55. ^ Ozer, enero (2015). "Revisión: Bitcodin, un servicio de codificación de vídeo en la nube de Bitmovin". www.StreamingMediaGlobal.com .
  56. ^ "Entrega de vídeo HLS: aprendizaje de Brightcove". soporte.brightcove.com .
  57. ^ "MediaGoom. Transmisión web esencial".