Ich möchte zwei mp4-Dateien zusammenfügen, um eine einzige zu erstellen. Die Videostreams sind in h264 und die Audiodaten in aac codiert. Ich kann die Videos aus rechentechnischen Gründen nicht in ein anderes Format umcodieren. Ich kann auch keine GUI-Programme verwenden. Die gesamte Verarbeitung muss mit Linux-Befehlszeilenprogrammen durchgeführt werden. FFmpeg kann dies nicht für mpeg4-Dateien tun, daher habe ich stattdessen MP4Box verwendet:
MP4Box -add video1.mp4 -cat video2.mp4 newvideo.mp4
Leider ist der Ton völlig durcheinander. Ich dachte, dass das Problem war, dass das Audio in AAC war, also habe ich es in MP3 transkodiert und wieder MP4Box verwendet. In diesem Fall ist das Audio für die erste Hälfte von newvideo.mp4
(entsprechend video1.mp4
) in Ordnung , aber dann ist es kein Audio und ich kann auch nicht im Video navigieren.
Mein nächster Gedanke war, dass die Audio- und Videostreams einige kleine Abweichungen in ihrer Länge aufwiesen, die ich beheben sollte. Also habe ich für jedes Eingangsvideo die Video- und Audiostreams aufgeteilt und sie dann mit der Option -shortest in FFmpeg verbunden.
So lief ich für das erste Video:
avconv -y -i video1.mp4 -c copy -map 0:0 videostream1.mp4
avconv -y -i video1.mp4 -c copy -map 0:1 audiostream1.m4a
avconv -y -i videostream1.mp4 -i audiostream1.m4a -c copy -shortest video1_aligned.mp4
Ähnliches gilt für das zweite Video und dann verwendete MP4Box wie bisher. Leider hat das auch nicht geklappt. Der einzige Erfolg, den ich hatte, war, als ich die Videostreams separat (dh videostream1.mp4 und videostream2.mp4) und die Audiostreams (dh audiostream1.m4a und audiostream2.m4a) zusammengefügt und dann das Video und Audio in einer endgültigen Datei zusammengefügt habe. Die Synchronisation geht jedoch für die zweite Hälfte des Videos verloren. Konkret gibt es eine Verzögerung von 1 Sekunde für Audio und Video. Anregungen sind sehr willkommen.