Использование FFMPEG для объединения двух файлов MTS вместе

У меня есть два видеофайла MTS, каждый длиной 2 минуты. Мне нужно иметь возможность объединить файлы вместе и конвертировать формат в MPEG4. У меня есть подходящая командная строка для преобразования MTS в MP4, но я не знаю, как объединить файлы вместе.

некоторые статьи в интернете предлагают использовать команду CAT, например:

cat video1.mts video2.mts > whole_video.mts

однако это не работает и согласно FFMPEG, " whole_video.МТС" составляет всего 2 минуты, а не 4 протокол.

кто-нибудь знает, как объединить файлы вместе? Является ли FFMPEG лучшей программой для этого? Спасибо заранее.

3 ответов


следующее отлично работало для меня (т. е. приводило к бесшовным соединениям):

ffmpeg -i "concat:00019.MTS|00020.MTS|00021.MTS|00022.MTS" output.mp4

использование cat работает. Его просто, что видеоплееры будут обмануты о длине видео при чтении результирующего whole_video.МТС. Обычно будет внезапный скачок метки времени, где файл был ранее вырезан. Но это нормально. Вы можете закодировать его, а затем вы получите правильный файл с отметкой времени.

кодирование с ffmpeg, а затем присоединение к MP4Box-плохая идея. Вы получите уродливые изображения с отсутствующими блоками в положении пересечения, если второй файл не запустится с ключевым кадром (что происходит, когда он был вырезан видеокамерой из-за ограничения файла 2GB). Присоединяйтесь, а затем кодируйте, а не наоборот.


все в порядке, я разобрался. Используя последние версии SVN FFMPEG, x264 и MP4Box (GPAC), вот что я сделал...

используйте FFMPEG для преобразования файлов MTS в MP4 как обычно:

ffmpeg -i video1.mts -vcodec libx264 -deinterlace -crf 25 -vpre hq -f mp4 -s hd480 -ab 128k -threads 0 -y 1.mp4
ffmpeg -i video2.mts -vcodec libx264 -deinterlace -crf 25 -vpre hq -f mp4 -s hd480 -ab 128k -threads 0 -y 2.mp4

используйте MP4Box для объединения файлов MP4 вместе:

MP4Box -cat 1.mp4 -cat 2.mp4 output.mp4

это объединяет файлы вместе в " вывод.mp4", однако, когда я использую " ffmpeg-I output.mp4 " он говорит, что продолжительность больше, чем должно быть. Чтобы исправить это, мне пришлось использовать FFMPEG опять:

ffmpeg -i output.mp4 -vcodec copy -y final.mp4

и вуаля! Вопрос к "финалу".mp4 " файл с помощью FFMPEG показывает правильную продолжительность, и видео воспроизводится нормально.

надеюсь, что это поможет кому-то еще, испытывающему ту же проблему.