MP4 Atom Parsing - wo konfiguriere ich die Zeit?

Ich habe einen MP4-Parser geschrieben, der die Atome in einem MP4 gut lesen und wieder zusammenfügen kann - das Ergebnis ist eine technisch gültige MP4-Datei, die Quicktime öffnen kann, aber keine Audiodateien abspielen kann, wie ich es glaube Timing- / Sampling-Informationen sind deaktiviert. Ich sollte wohl erwähnen, dass ich mich nur für Audio interessiere.

Ich versuche, die moov-Atome / etc von einem vorhandenen MP4 zu nehmen und dann nur eine Teilmenge des mdat-Atoms in der Datei zu verwenden, um ein neues, kleineres MP4 zu erstellen. Dabei habe ich das geändertduration in demmvhd Atom, sowie die Dauer in dermdia Header. Es gibt keinetkhd Atome in dieser Datei, die bearbeitet wurden, sodass ich glaube, dass ich die Dauer dort nicht ändern muss - was fehle ich?

Bei der Erstellung des neuen MP4 schneide ich denmdat Mit einem breiten Kästchen blockieren und die 'mdat'-Überschrift / Größe an der richtigen Stelle belassen - Ich achte darauf, die Größe mit dem neuen Inhalt zu aktualisieren.

Jetzt ist es zu 110% möglich, dass mir etwas Entscheidendes am Format fehlt, aber wenn dies möglich ist, würde ich gerne das letzte Stück bekommen. Hat jemand Anregungen / Ideen?

Code finden Sie unter folgendem Link:

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

Antworten auf die Frage(1)

Ihre Antwort auf die Frage