Joindre des fichiers mp4 sous linux
Je veux joindre deux fichiers mp4 pour en créer un seul. Les flux vidéo sont encodés en h264 et l'audio en aac. Je ne peux pas réencoder les vidéos dans un autre format pour des raisons de calcul. De plus, je ne peux utiliser aucun programme graphique, tous les traitements doivent être effectués avec des utilitaires de ligne de commande Linux. FFmpeg ne peut pas le faire pour les fichiers mpeg4, j'ai donc utilisé MP4Box:
MP4Box -add video1.mp4 -cat video2.mp4 newvideo.mp4
Malheureusement, l'audio est tout mélangé. Je pensais que le problème était que l'audio était en aac donc je l'ai transcodé en mp3 et utilisé à nouveau MP4Box. Dans ce cas, l'audio est correct pour la première moitié de newvideo.mp4
(correspondant à video1.mp4
) mais il n'y a pas d'audio et je ne peux pas non plus naviguer dans la vidéo.
Ma pensée suivante était que les flux audio et vidéo présentaient de petites différences de longueur que je devrais corriger. Donc, pour chaque vidéo d'entrée, j'ai divisé les flux vidéo et audio, puis les ai joints avec l'option - la plus courte dans FFmpeg.
Ainsi pour la première vidéo J'ai couru:
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
De même pour la deuxième vidéo, puis utilisé MP4Box comme précédemment. Malheureusement, cela n'a pas fonctionné non plus. Le seul succès que j'ai eu a été lorsque j'ai rejoint les flux vidéo séparément (c'est-à-dire videostream1.mp4 et videostream2.mp4) et les flux audio (c'est-à-dire audiostream1.m4a et audiostream2.m4a), puis a joint la vidéo et l'audio dans un fichier final. Cependant, la synchronisation est perdue pour la seconde moitié de la vidéo. Concrètement, il y a un délai de 1 sec de l'audio et de la vidéo. Tout les suggestions sont vraiment les bienvenues.