MP4 Atom Parsing: ¿dónde configurar el tiempo ...?

He escrito un analizador MP4 que puede leer los átomos en un MP4 muy bien, y volver a unirlos. El resultado es un archivo MP4 técnicamente válido que Quicktime puede abrir y tal, pero no puede reproducir ningún audio como creo. La información de tiempo / muestreo está desactivada. Probablemente debería mencionar que solo me interesa el audio.

Lo que estoy haciendo es tratar de tomar los átomos / moov de un MP4 existente, y luego tomar solo un subconjunto del átomo mdat en el archivo para crear un MP4 nuevo, más pequeño. Al hacerlo he alterado elduration en elmvhd átomo, así como la duración en elmdia encabezamiento. No existentkhd átomos en este archivo que tienen ediciones, así que creo que no necesito alterar las duraciones allí, ¿qué me falta?

Al crear el nuevo MP4 estoy seccionando adecuadamente elmdat bloque con una caja ancha, y manteniendo el encabezado / tamaño 'mdat' en sus lugares correctos - Me aseguro de actualizar el tamaño con el nuevo contenido.

Ahora es totalmente posible que me falte el 110%. Hay algo crucial en el formato, pero si es posible, me encantaría obtener la pieza final. ¿Alguien tiene alguna entrada / ideas?

El código se puede encontrar en el siguiente enlace:

https://gist.github.com/ryanmcgrath/958c602cff133bd7fa0b

Respuestas a la pregunta(1)

Su respuesta a la pregunta