Использование FFMPEG для объединения двух файлов MTS - PullRequest
9 голосов
/ 24 августа 2010

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

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

cat video1.mts video2.mts > whole_video.mts

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

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

Ответы [ 3 ]

15 голосов
/ 05 августа 2015

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

3 голосов
/ 29 января 2012

Использование кошачьих работ.Просто видео проигрыватели будут обмануты относительно длины видео при чтении результирующего целого_видео.mts.Обычно там будет скачок метки времени, когда файл был ранее вырезан.Но это нормально.Вы можете закодировать его, и тогда вы получите правильный файл с временной меткой.

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

1 голос
/ 24 августа 2010

Все нормально, я разобрался.Используя последние версии 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

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

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

И вуаля!Запрос файла «final.mp4» с использованием FFMPEG показывает правильную продолжительность, и видео воспроизводится нормально.

Надеюсь, это поможет всем, кто столкнулся с такой же проблемой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...