¿Qué es M3U8?

M3U8 es la forma UTF-8 del formato de listas de reproducción multimedia M3U y se utiliza ampliamente para los manifiestos de HTTP Live Streaming. Sus entradas de texto pueden describir variantes, segmentos, claves y metadatos de intervalos de fechas.

Lista de reproducción multivariante: flujos de variantes y variantes multimedia
Segmentos multimedia y claves obtenidos mediante URI
Un cliente HLS sigue las URI desde la lista de reproducción multivariante hasta la lista de reproducción multimedia de cada variante multimedia seleccionada para la reproducción, como video y audio separados, y luego hasta los segmentos multimedia de esas variantes multimedia.

Cómo funciona M3U8

Un documento M3U8 es un archivo de texto UTF-8 organizado por líneas. Cada línea es una URI, está vacía o comienza con #; las líneas que comienzan con #EXT son etiquetas y las demás líneas con # son comentarios. En HLS, una lista de reproducción multivariante anuncia flujos de variantes y variantes multimedia alternativas, mientras que una lista de reproducción multimedia enumera los segmentos multimedia de una variante multimedia. Los clientes cambian entre variantes según las condiciones de la red y vuelven a cargar periódicamente una lista de reproducción multimedia, a menos que esta declare que no cambiará, como se describe a continuación. Los empaquetadores escriben estas listas de reproducción después de realizar el encoding y segmentar el contenido multimedia.

Datos clave

  1. #EXTM3U debe ser la primera línea de toda lista de reproducción HLS. Algunas etiquetas, como #EXT-X-VERSION y #EXT-X-TARGETDURATION, se aplican a toda la lista de reproducción, mientras que las etiquetas de segmentos multimedia se vinculan a lo que les sigue: #EXTINF es obligatoria para cada segmento multimedia y se aplica únicamente a la URI del siguiente segmento, y algunas otras etiquetas se aplican a todos los segmentos posteriores hasta que aparece otra instancia de la misma etiqueta. Por lo tanto, mover, eliminar o insertar líneas de etiquetas y URI puede cambiar el significado incluso cuando el resultado sigue siendo texto válido.
  2. Una lista de reproducción es de uno de dos tipos, nunca de ambos. Una lista de reproducción multivariante, denominada lista de reproducción maestra en RFC 8216, describe flujos de variantes y apunta a otras listas de reproducción; una lista de reproducción multimedia enumera los segmentos de una variante multimedia en orden de reproducción. RFC 8216 exige que los clientes rechacen el análisis de una lista de reproducción que mezcle etiquetas de segmentos multimedia con etiquetas de listas de reproducción maestras.
  3. Las URI relativas se resuelven respecto a la URI de la lista de reproducción que las contiene, por lo que mover una lista de reproducción puede cambiar su destino; conserva los archivos referenciados en la misma disposición relativa o actualiza las URI. Según la resolución estándar de URI, una referencia relativa con su propia ruta no hereda la cadena de consulta de la URI base. Por lo tanto, un token o una firma en la consulta de la URL de la lista de reproducción no se transfiere a las solicitudes de segmentos, claves o listas de reproducción secundarias, y un esquema de URL firmadas tiene que firmar cada URI referenciada o autorizar esas solicitudes de otra manera.
  4. Asigna un nombre a la lista de reproducción o sírvela de forma que los clientes la acepten. El RFC 8216 exige que una lista de reproducción HLS pueda identificarse mediante una ruta URI que termine en .m3u8 o .m3u, o mediante el Content-Type HTTP application/vnd.apple.mpegurl o audio/mpegurl, e indica que los clientes deberían rechazar las listas de reproducción que no se identifiquen de ninguna de estas formas. El texto debe ser UTF-8 sin marca de orden de bytes; los clientes deberían rechazar el análisis de una lista de reproducción que la contenga.

Cuándo es relevante M3U8

M3U8 es relevante siempre que generes, alojes o recibas contenido HLS. Quien lo genera debe establecer correctamente el orden de las etiquetas, las duraciones y las URI para que la lista de reproducción sea válida, y quien lo aloja debe mantener accesible cada URI que contiene desde cualquier ubicación desde la que se sirva la lista de reproducción. Trata una lista de reproducción de una fuente no confiable como una lista de instrucciones de obtención: el RFC 8216 señala que los clientes harán solicitudes de red a los destinos indicados por sus URI, y el demultiplexor HLS de FFmpeg restringe de forma predeterminada las extensiones de archivo a las que puede hacer referencia una lista de reproducción.

Trabajar con M3U8

El RFC 8216 exige que los clientes vuelvan a cargar periódicamente una lista de reproducción multimedia, a menos que declare #EXT-X-PLAYLIST-TYPE:VOD, o #EXT-X-PLAYLIST-TYPE:EVENT junto con #EXT-X-ENDLIST. Mientras una lista de reproducción multimedia carezca de #EXT-X-ENDLIST, el servidor debe publicar una nueva versión con al menos un segmento nuevo entre 0,5 y 1,5 duraciones objetivo después de la versión anterior. Añade #EXT-X-ENDLIST una vez que se incluya el segmento final y usa #EXT-X-PLAYLIST-TYPE:VOD para declarar que la lista de reproducción no puede cambiar. Una lista de reproducción que crece cambia en una URL fija, mientras que sus segmentos no cambian; esta es la propiedad que debes tener en cuenta al planificar la caché.

Cómo ayuda Transloadit con M3U8

El Robot /video/adaptive de Transloadit genera archivos de listas de reproducción M3U8 junto con los segmentos multimedia cuando su technique es hls, y una lista de reproducción HLS junto al manifiesto MPEG-DASH cuando es cmaf.

La documentación del Robot indica que sus archivos de resultados incluyen una propiedad de metadatos relative_path y que la ruta de almacenamiento debería construirse a partir de ella para que los archivos de listas de reproducción sigan funcionando, lo que aplica en la práctica la regla de las URI relativas descrita arriba. También enumera los encabezados de respuesta CORS que deben configurarse para los reproductores de navegador que obtienen las listas de reproducción y los segmentos desde otro origen.

Explora los formatos de archivo y las capacidades de compresión de Transloadit

Fuentes

Convierte tus conocimientos sobre multimedia en un pipeline funcional

Conecta las subidas, el procesamiento, la IA, el almacenamiento y la entrega mediante una sola API declarativa, mientras nos encargamos por ti del stack de encoding, el escalado y los cambios constantes de formatos.

Prueba Transloadit gratis