Присоединяйтесь к файлам mp4 в linux
Я хочу объединить два файла mp4, чтобы создать один. Видеопотоки кодируются в формате h264, а аудио - в формате aac. Я не могу перекодировать видео в другой формат по вычислительным причинам. Кроме того, я не могу использовать какие-либо графические программы, вся обработка должна выполняться с помощью утилит командной строки Linux. FFmpeg не может сделать это для файлов mpeg4, поэтому вместо этого я использовал MP4Box:
MP4Box -add video1.mp4 -cat video2.mp4 newvideo.mp4
К сожалению, звук полностью перепутан. Я думал, что проблема в том, что звук был в aac, поэтому я перекодировал его в mp3 и снова использовал MP4Box. В этом случае звук подходит для первой половины newvideo.mp4
(соответствует video1.mp4
), но тогда у них нет звука, и я также не могу перемещаться по видео.
Моей следующей мыслью было, что в аудио- и видеопотоках были некоторые небольшие расхождения в их длине, которые я должен исправить. Поэтому для каждого входного видео я разделил видео- и аудиопотоки, а затем объединил их с помощью опции - кратчайший в FFmpeg.
Таким образом, для первого видео Я побежал:
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
Аналогично для второго видео, а затем использовал MP4Box, как и ранее. К сожалению, это тоже не сработало. Единственным успехом, который у меня был, было то, что я присоединился к видеопотокам отдельно (т.Е. videostream1.mp4 и videostream2.mp4) и аудиопотокам (т.Е. audiostream1.m4a и audiostream2.m4a), а затем присоединился к видео и аудио в конечном файле. Однако синхронизация теряется для второй половины видео. Конкретно, существует задержка аудио и видео на 1 секунду. Какой-нибудь предложения действительно приветствуются.