2011-12-15 16 views
9

Estoy escribiendo una herramienta para inspeccionar archivos MP4 (también conocido como formato de archivo de base ISO, ISO 14496 parte 12).MP4/ISO 14496-12: ¿Cómo se encuentran las unidades de acceso de audio y video?

Puedo interpretar la mayoría de los cuadros enumerados en ISO 14496-12 generados por OSS. Todavía tengo que descubrir cómo extraer unidades de acceso de video individuales y unidades de acceso de audio.

Estoy razonablemente seguro de que el video H.264 en el cuadro 'mdat' no tiene el prefijo ISO 14496-10 Anexo B "0x000001" en las unidades NAL.

He experimentado con la interpretación de SampleToChunkBox ('stsc'), SampleSizeBox ('stsz') y ChunkOffsetBox ('stco') para localizar muestras de medios dentro de 'mdat', pero parece que no encuentro nada que puedo interpretar como una unidad nal() (ISO 14496-10 sección 7.3.1) o un slice_header() (sección 7.3.3).

También me llama la atención dónde viven el SPS (7.3.2.1) y el PPS (7.3.2.2). Tengo la sospecha de que estos viven en algún lugar dentro de la caja 'trak', pero no he descubierto dónde.

Los punteros a aplicaciones o bibliotecas son de utilidad limitada. Estoy escribiendo una aplicación, y el código fuente externo es más difícil de entender (gravado por su propio marco) en comparación con una explicación matemática.

+0

utilice el isoviewer que se proporciona aquí: https://code.google.com/p/mp4parser/ –

Respuesta

5

Después de pasar un par de horas repasando otras preguntas sobre stackoverflow, finalmente tropecé con breves respuestas que me llevaron a una respuesta más completa.

Parsing H264 in mdat MP4

La encapsulación de H.264 dentro de los archivos de medios ISO está cubierto por la norma ISO 14496 parte 15. El SPS y PPS están escondidos en el cuadro 'AVCC' documentado en la sección 5.3.4.1.2 y 5.2.4.1.1. Este recuadro también le dice a cuánto duran los campos de longitud al interpretar las muestras.

Las muestras están documentadas en la sección 5.2.3 y consisten en una serie de unidades NAL precedidas por una longitud. Un ejemplo MP4 de ffmpeg tiene un corte por muestra, pero la primera muestra incluye un SEI que contiene texto que documenta la versión del códec H.264 y los parámetros de codificación .

Cuestiones relacionadas