Audio und Video mit MP4Box / ffmpeg synchronisieren, um Dateien zu verketten

7904
Jesse L

Ich habe zwei H.264-codierte MPEG-4-Dateien, die ich verketten muss. Ich habe MP4Box für diese Aufgabe verwendet, indem ich zunächst sicherstellte, dass die Dateien identisch codiert sind (sogar die Ausgabe von h264_parse auf ihren Videospuren verglichen) und dann mit diesem Befehl verkettet wurden:

MP4Box -cat file1.mp4 -cat file2.mp4 output_file.mp4 

Dies funktioniert und die Ausgabedatei ist abspielbar, aber bei der Wiedergabe in Quicktime oder VLC wird das Audio des zweiten Videos zu früh gestartet, wodurch der gesamte zweite Teil der verketteten Datei nicht mehr synchron ist.

Ich habe versucht, die Ausgabe durch ffmpeg reencoding mit -vcodec copyund -acodec copyaber das Sync - Problem weiterhin besteht.

Ich habe auch versucht, zuerst in das MPEG-2-Format zu cat file1.mpg file2.mpg > output.mpgkonvertieren, das Ergebnis einfach mit ffmpeg zu verketten . Das war noch schlimmer.

Ich weiß, dass ich Befehle an MP4Box übergeben kann, um die Startzeit der Audiospur anzupassen, aber ich versuche, dies programmgesteuert für jedes Eingangsvideo (in der gleichen Kodierung natürlich) zu tun. Ich suche nach möglichen Lösungen, die kein menschliches Eingreifen / manuelle Einstellungen erfordern. Oder zumindest ein Verständnis dafür, was passiert, damit der zweite Teil des verketteten Videos nicht mehr synchron ist.

4

3 Antworten auf die Frage

7
Ajith S Nair

Ich hatte das gleiche Problem. Für eine korrekte Synchronisation müssen Sie den Befehl MP4Box wie folgt schreiben:

MP4Box -add file1.mp4 -cat file2.mp4 -new output_file.mp4 

anstelle der Verwendung -catVerwendung -addvor dem ersten Video. Die verbleibenden Optionen sind korrekt und Sie können -newden Ausgabeparameter vorgeben.

Vielen Dank! Ich bekam ein Standbild, an dem file1 endete und file2 begann, aber der Ton lief weiter. Nach dem Wechsel von "-cat… -cat" zu "-add ... -cat" bekomme ich sowohl Audio als auch Video, obwohl file2 nicht synchron ist. Henrik N vor 12 Jahren 0
1
Breakthrough

Versuchen Sie es mit dem Matroskra-Videocontainer (MKV).

Zunächst benötigen Sie mkvtoolnix . Laden Sie es herunter und installieren Sie es. Anschließend müssen Sie die mkvmerge-GUI starten (es sei denn, Sie mögen Befehlszeilentools, was für mich in Ordnung ist - auch wenn Sie sich den Abschnitt zum Verknüpfen von Dateien in der mkvmerge-Dokumentation ansehen möchten ).

Fügen Sie Ihre erste Datei hinzu, indem Sie auf "Hinzufügen" klicken. Klicken Sie dann auf "Anfügen" und öffnen Sie Ihre zweite Datei. Stellen Sie die Ausgabedatei ein, klicken Sie unten auf "Start Muxing" und los geht's!

Wenn der Container für Ihre Anforderungen ungeeignet ist, können Sie ihn erneut codieren oder versuchen, ihn in ein anderes Format zu konvertieren ... Obwohl MKV ein sehr schöner Container ist!

Ich hatte Probleme mit MP4Box beim Anhängen von MP4-Dateien. Der Ton wurde durcheinander gebracht. Ich habe mkvmerge.exe aus diesem Paket ausprobiert und es hat super funktioniert! cdavidyoung vor 12 Jahren 0
»Versuchen Sie es mit dem Makostra-Videocontainer.« - Heißt das nicht * Matroska *, vereinfachtes Schreiben für * Matryoshka *? Lumi vor 11 Jahren 0
@Lumi guter Fang, danke - nachbearbeitet. Breakthrough vor 11 Jahren 0
0
cdavidyoung

Verwenden Sie aus dem Paket mkvtoolnix mkvmerge:

mkvmerge -o "output file" "input file" +"appended file"