¿Qué es un archivo M2TS?
Un archivo M2TS contiene un flujo de transporte BDAV MPEG-2, la variante del flujo de transporte MPEG-2 utilizada por Blu-ray Disc y AVCHD, en la que un encabezado de 4 bytes precede a cada paquete de transporte de 188 bytes. Puede multiplexar video, audio, gráficos de subtítulos y otros flujos elementales en un solo archivo.
Cómo funcionan los archivos M2TS
El formato de solo lectura de Blu-ray Disc almacena el audio y el video de cada clip como un flujo de transporte BDAV MPEG-2 en un archivo .m2ts. El flujo es una secuencia de paquetes de origen de 192 bytes, cada uno formado por un TP_extra_header de 4 bytes seguido de un paquete de transporte MPEG-2 estándar de 188 bytes, agrupados en unidades alineadas de 6144 bytes que contienen 32 paquetes. Dentro de los paquetes de transporte se aplican las reglas habituales de Sistemas MPEG-2: la tabla de asociación de programas apunta a una tabla de mapa de programa, que identifica los flujos elementales del programa mediante identificadores de paquete. En un disco, el archivo .m2ts es solo la mitad de un clip. Un archivo .clpi con el mismo número almacena las marcas de tiempo de los puntos de acceso al flujo, y los archivos de listas de reproducción .mpls describen qué reproducir mediante una lista de elementos de reproducción, cada uno con un punto de entrada y otro de salida en el eje temporal de un clip. Las videocámaras AVCHD graban en el mismo contenedor, y la descripción del formato de la Biblioteca del Congreso enumera mts como una segunda extensión para él.
Datos clave
- Cada paquete de origen tiene 192 bytes: un
TP_extra_headerde 4 bytes seguido de un paquete de transporte MPEG-2 estándar de 188 bytes. Un analizador que recorra el archivo en paquetes de 188 bytes perderá la alineación, porque el byte de sincronización del transporte se encuentra en el desplazamiento 4 de cada paquete de origen. El demultiplexor MPEG-TS de FFmpeg gestiona esto detectando el tamaño del paquete y omitiendo los primeros 4 bytes de cada paquete de 192 bytes. - Un archivo
.m2tsaislado contiene el flujo de un clip, no un título. En un disco Blu-ray, las listas de reproducción.mplsdeBDMV/PLAYLISTseleccionan intervalos de los clips y su orden, y los archivos de información de clips.clpideBDMV/CLIPINFcontienen las marcas de tiempo de los puntos de acceso que un reproductor utiliza para encontrar dónde empezar a leer. Los títulos se sitúan un nivel más arriba: la tabla de índice del disco vincula cada título con un objeto de película o un objeto BD-J, y los objetos de película, almacenados enBDMV/MovieObject.bdmv, inician la reproducción de las listas de reproducción. Por lo tanto, abrir los archivos deBDMV/STREAMuno por uno proporciona los flujos de cada clip sin el orden de reproducción ni los puntos de entrada y salida que definen las listas de reproducción. - Los subtítulos de Blu-ray pueden estar en dos lugares. Los flujos de gráficos de presentación basados en mapas de bits se multiplexan en el flujo de transporte BDAV junto con el video y el audio. Los subtítulos de texto constituyen un clip separado, fuera de la multiplexación, que una lista de reproducción adjunta mediante una subruta, por lo que no están en el
.m2tsdel clip principal. El archivo de flujo de ese clip de subtítulos se encuentra enBDMV/STREAMjunto con los clips de audio y video, y las fuentes de los subtítulos son archivos.otfseparados en el directorioAUXDATA. - Cambiar el contenedor de un M2TS mediante copia de flujos deja intactos el video y el audio codificados, porque no se realiza decodificación ni un nuevo encoding; FFmpeg señala que la copia de flujos aun así puede fallar cuando el contenedor de destino necesita información que el origen no proporciona. Los clips de Blu-ray pueden contener video MPEG-2, H.264/AVC o VC-1, así que comprueba cada flujo frente a lo que acepta el contenedor de destino. Los subtítulos muestran el límite: en el código fuente de FFmpeg 8.0, el multiplexor MP4 no tiene una etiqueta de códec para ninguno de los dos códecs de subtítulos de Blu-ray y rechaza esos flujos. Los clips de discos comerciales son un caso aparte: la Biblioteca del Congreso señala que M2TS en sí no admite cifrado, pero que los discos Blu-ray suelen estar protegidos con AACS.
Cuándo son importantes los archivos M2TS
Los pipelines multimedia encuentran archivos M2TS al incorporar grabaciones de videocámaras AVCHD o los archivos de clips del directorio BDMV/STREAM de una estructura de Blu-ray Disc. La decisión importante es si tratar un archivo como un flujo independiente o como un clip de un disco: un único .m2ts puede demultiplexarse por sí solo, pero el orden de reproducción y las tablas de puntos de acceso se definen en los archivos complementarios de listas de reproducción e información de clips, y los títulos del disco, en su tabla de índice.
Trabajar con archivos M2TS
El multiplexor MPEG-TS de FFmpeg tiene un modo m2ts que escribe el prefijo de 4 bytes antes de cada paquete de transporte y utiliza identificadores de paquete fijos. En el código fuente de FFmpeg 8.0, el ajuste automático activa el modo cuando el nombre de salida termina en .m2ts, y el multiplexor rechaza más de un programa en ese modo. El valor que FFmpeg escribe en el prefijo es una marca de tiempo de 30 bits tomada del reloj de programa del flujo.
Escribir un archivo de paquetes de 192 bytes no es lo mismo que realizar la autoría de un disco. Una estructura BDMV de Blu-ray también necesita archivos de índice, objetos de película, listas de reproducción e información de clips, y los reproductores navegan mediante ellos en lugar de hacerlo mediante los archivos de flujo. Para leer una lista de reproducción en lugar de un solo clip, FFmpeg ofrece un protocolo de entrada bluray que lee una lista de reproducción de una estructura de disco montada.
Fuentes
- Biblioteca del Congreso: descripción del formato de flujo de transporte MPEG-2 para discos Blu-ray (BDAV) y AVCHD (M2TS)
- Blu-ray Disc Association: libro blanco, formato de solo lectura de Blu-ray Disc, 2.B Especificaciones del formato de aplicación audiovisual para BD-ROM, versión 2.5 (2011, copia archivada), secciones 2.1 a 2.3, 3.1 a 3.6 y 4.1.3
- ITU-T H.222.0 (08/2018) | ISO/IEC 13818-1: Sistemas MPEG-2 (paquetes de flujo de transporte, tablas de asociación de programas y de mapa de programa)
- Documentación de formatos de FFmpeg: demultiplexor mpegts y multiplexor mpegts (opciones del modo m2ts)
- Código fuente de FFmpeg 8.0: libavformat/mpegts.c (detección del tamaño de paquete, gestión de paquetes de origen de 192 bytes y tipos de flujos de subtítulos de Blu-ray)
- Código fuente de FFmpeg 8.0: libavformat/movenc.c (etiquetas de códec del multiplexor MP4)
- Documentación de protocolos de FFmpeg: bluray (lectura de una lista de reproducción de Blu-ray)
- Documentación de la herramienta FFmpeg: copia de flujos