Eine "richtige" Methode, AAC-Audio aus einer MP4-Datei zu extrahieren?

912
einpoklum

Ich verwende Linux (Kubuntu 16.04) und habe einige .MP4-Dateien mit Audiospuren, die ich extrahieren möchte, als .AAC / .M4A-Dateien und -Tag speichern.

Jetzt habe ich die Extraktion mit gemacht

MP4Box -raw $track_index my_file.mp4 

wo der Titelindex 0, 1, 2 sein kann usw. Das funktioniert, da ich das Ergebnis in verschiedenen Mediaplayern abspielen kann ... aber - stimmt das wirklich?

Jemand, der sich meine Akten ansah, sagte mir:

Das Feld "ftyp" fehlt im Kopf der Datei, wodurch es als MPEG-4-Container identifiziert wird. Es gibt auch keine "mdat" -Felder, die einzelne Datenblöcke in einem MPEG-4-Container anzeigen würden.

Dies macht es für bestimmte Apps schwierig, mit den extrahierten Dateien zu arbeiten. Insbesondere das Taggen von Apps ..., die keine Tags dafür schreiben.

Was kann ich tun, um korrekt strukturierte, markierbare M4A / AAC-Dateien zu erhalten? (Ich suche natürlich nach einer Befehlszeilenlösung.)

0

1 Antwort auf die Frage

1
Mockman

Verwenden Sie nicht "roh". Verwenden Sie 'single'. Ändern Sie dann die Erweiterung in .m4a.

Aus der MP4Box-Dokumentation:

-single TrackID : extracts track in a new MP4 with a single track. 

Ich nahm eine zufällige MP4 und extrahierte das Audio mit diesen beiden Optionen. Dann habe ich sie mit Media Info überprüft. Die Ausgabe der Raw-Option hatte ein Dateiformat von ADTS, während die Ausgabe der einzelnen Option MPEG-4 war.

Es scheint, dass -raw eine Transportstream-Datei erzeugt, die keine Metadaten wie Tags unterstützt. Wenn ich die App Tagger verwende, wird die -raw-Ausgabedatei nicht einmal angezeigt, während ich die -single-Ausgabe öffnen und Tags dafür bearbeiten kann.

https://gpac.wp.mines-telecom.fr/mp4box/mp4box-documentation/

+1, aber würden Sie zufällig wissen, wie ich die Transport-Stream-Datei in einen "normalen" Audio-Stream-MP4 umwandeln könnte? einpoklum vor 7 Jahren 0
Ich glaube nicht, dass Transportströme so funktionieren. -Single erstellt jedoch automatisch den gewünschten Dateityp. Es ist keine Neucodierung. Nach allem, was ich erfahre, würde das, was Sie vorschlagen, einen einstufigen Prozess in einen mehrstufigen Prozess umwandeln. Ich würde die Erweiterung so ändern, dass für andere Software klar ist, dass es sich speziell um eine Audiodatei handelt. Mockman vor 7 Jahren 0
Ich meinte, vorausgesetzt, Sie haben die Transport-Stream-Datei extrahiert und haben nicht mehr das Original MP4 ... einpoklum vor 7 Jahren 0
Ahh… lass mich ein bisschen darüber nachdenken. Als ich mir mp4box ansah, dachte ich, ich hätte eine Option zum Erstellen einer neuen Containerdatei gesehen. Es wäre also wahrscheinlich etwas in der Richtung des Erstellens eines neuen Containers mit diesem Audiostrom. Mockman vor 7 Jahren 0
Versuchen Sie dies, Sie können wahrscheinlich entweder 'm4a' oder 'mp4' als Ausgabedatei-Erweiterung verwenden ... `mp4box -add _inputfile_ _outputfile_` Mockman vor 7 Jahren 0