¿Qué es el formato M4S?
M4S es una extensión común para los segmentos multimedia MP4 fragmentados que utilizan MPEG-DASH y el HLS moderno. Un segmento suele depender de un segmento de inicialización para la configuración de las pistas y del decodificador.
Cómo funciona el formato M4S
Los segmentos multimedia M4S son recursos MP4 fragmentados de corta duración que se generan después de dividir la salida de un codificador para el streaming adaptativo. Sus metadatos de fragmentos de película describen los tiempos y las ubicaciones de las muestras, mientras que las cajas de datos multimedia asociadas contienen las muestras codificadas. Las definiciones de las pistas y la configuración del decodificador suelen residir en un recurso de inicialización al que hace referencia el manifiesto y que algunos empaquetadores también nombran con .m4s. Un reproductor combina esa configuración con los fragmentos sucesivos a medida que almacena datos en el búfer y cambia de variante.
Datos clave
- Un segmento multimedia consta de uno o más fragmentos de película: una caja
moofque describe las muestras, seguida de la caja o las cajasmdatque contienen sus bytes codificados, opcionalmente precedidas por una caja de tipo de segmentostyp. No contiene ninguna cajamoov, por lo que las descripciones de las pistas y las muestras que necesita un decodificador no están en el archivo. - El segmento de inicialización proporciona lo que les falta a los segmentos multimedia: una caja
ftypseguida de una cajamoovcon descripciones de pistas y muestras, pero sin muestras. En HLS, cada segmento multimedia MP4 fragmentado debe tener una etiquetaEXT-X-MAPaplicable, cuya URI identifica el recurso que contiene esos datos de inicialización; una etiqueta se aplica a todos los segmentos siguientes hasta la próximaEXT-X-MAP. En Media Source Extensions, un segmento multimedia sin una caja de tipo de segmento debe ajustarse a las marcas declaradas en el segmento de inicialización. - La extensión no indica cuál de los dos tipos corresponde a un archivo.
.m4sestá registrada en IANA como la extensión de archivo del tipo de mediovideo/iso.segment, pero los nombres de archivo dependen del empaquetador: cuando el multiplexor DASH de FFmpeg escribe segmentos MP4 como archivos separados, sus nombres predeterminados asignan la extensión.m4stanto a los segmentos de inicialización como a los multimedia (para los flujos VP8, VP9, Vorbis u Opus, utiliza de forma predeterminada segmentos WebM con nombres.webm), mientras que su multiplexor HLS asigna al archivo de inicialización MP4 fragmentado el nombreinit.mp4de forma predeterminada. Identifica la función de un archivo a partir del manifiesto o de sus cajas de nivel superior. - Un nombre
.m4sno demuestra la conformidad con CMAF. CMAF es un perfil más restringido de MP4 fragmentado, y FFmpeg trata la salida compatible con CMAF y la salida compatible con DASH como modos distintos del multiplexor. Los requisitos reales de cada protocolo de destino son específicos: HLS, por ejemplo, exige una cajatfdten cada fragmento de pista y direccionamiento relativo al fragmento de película, y señala que un segmento CMAF cumple esos requisitos.
Cuándo es relevante el formato M4S
M4S es relevante cuando empaquetas, alojas, mueves o depuras flujos segmentados. Un segmento multimedia no es un archivo de video independiente: un analizador necesita los datos de inicialización correspondientes antes de poder leer el segmento, y un reproductor encuentra ambos mediante el manifiesto o la lista de reproducción. Cuando muevas, limpies o almacenes en caché un flujo, mantén válidas las referencias del manifiesto y disponibles todos los segmentos de inicialización y multimedia que este indique. Un segmento multimedia .m4s aislado no es una entrada adecuada para un conversor genérico.
Cómo ayuda Transloadit con el formato M4S
La documentación del Robot /video/adaptive de Transloadit describe el valor cmaf para su parámetro technique, que produce manifiestos MPEG-DASH y HLS que hacen referencia a los mismos segmentos MP4 fragmentados.
La documentación del Robot habla de segmentos y segmentos de inicialización, pero no indica sus extensiones de archivo, así que no desarrolles herramientas que presupongan un nombre .m4s. Sí indica que cada archivo de resultados incluye una propiedad de metadatos relative_path para almacenar los archivos donde los manifiestos esperan encontrarlos.
Explora los formatos de archivo y las capacidades de compresión de Transloadit
Fuentes
- Registro de tipo de medio de IANA: video/iso.segment (extensión de archivo m4s; segmentos ISO/IEC 14496-12)
- W3C: Formato de flujo de bytes ISO BMFF (segmentos de inicialización y segmentos multimedia)
- RFC 8216: HTTP Live Streaming, sección 3.1 (Formatos de segmentos multimedia compatibles), sección 3.3 (MPEG-4 fragmentado) y sección 4.3.2.5 (EXT-X-MAP)
- Documentación de formatos de FFmpeg: multiplexor dash (init_seg_name, media_seg_name), multiplexor hls (hls_segment_type, hls_fmp4_init_filename) y movflags (cmaf, dash)
- Código fuente de FFmpeg 8.0: libavformat/dashenc.c (selección de la extensión de los archivos de segmentos)
- Apple: Acerca del formato común de aplicaciones multimedia con HTTP Live Streaming (HLS)