Chcę połączyć dwa pliki MP4, aby utworzyć jeden. Strumienie wideo są kodowane w h264, a dźwięk w aac. Nie mogę ponownie zakodować filmów do innego formatu ze względów obliczeniowych. Ponadto nie mogę używać żadnych programów GUI, wszystkie operacje muszą być wykonywane za pomocą narzędzi wiersza poleceń systemu Linux. FFmpeg nie może tego zrobić dla plików MPEG4, więc zamiast tego użyłem MP4Box:
MP4Box -add video1.mp4 -cat video2.mp4 newvideo.mp4
Niestety wszystko się pomieszało. Pomyślałem, że problem polega na tym, że dźwięk był w aac, więc transkodowałem go w formacie mp3 i ponownie użyłem MP4Box. W tym przypadku dźwięk jest w porządku przez pierwszą połowę newvideo.mp4
(odpowiadający video1.mp4
), ale wtedy nie ma dźwięku i nie mogę również nawigować w filmie.
Moja kolejna myśl była taka, że w strumieniach audio i wideo występowały niewielkie rozbieżności w długości, które powinienem naprawić. Tak więc dla każdego wejściowego wideo podzieliłem strumienie wideo i audio, a następnie połączyłem je z opcją -shortest w FFmpeg.
Tak więc dla pierwszego filmu uruchomiłem:
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
Podobnie w przypadku drugiego wideo, a następnie wykorzystano MP4Box jak poprzednio. Niestety to też nie działało. Jedyny sukces, jaki odniosłem, to dołączenie strumieni wideo osobno (tj. Videostream1.mp4 i videostream2.mp4) oraz strumieni audio (tj. Audiostream1.m4a i audiostream2.m4a), a następnie dołączyłem do wideo i audio w końcowym pliku. Jednak synchronizacja zostanie utracona w drugiej połowie filmu. Konkretnie, istnieje 1 sekundowe opóźnienie audio i wideo. Wszelkie sugestie są bardzo mile widziane.