Как правильно разделить и объединить видео с ffmpeg с учетом точки входа / выхода

541
watkipet

Я учусь разделять и объединять видео ffmpeg. В настоящее время я тренируюсь на MP4 размером 799 КБ one_through_ten-timestamped.mp4, где каждый кадр имеет сгоревший «номер кадра» (до 40-го кадра сгоревший номер опережает только каждый второй кадр).

Команда, которую я использую:

ffmpeg -f concat -i one_through_ten_edit_list.txt -c copy one_through_ten_edited.mp4 

Где one_through_ten_edit_list.txtнаходится:

file one_through_ten-timestamped.mp4 inpoint 00:00:01.500 outpoint 00:00:05.000 file one_through_ten-timestamped.mp4 inpoint 00:00:09.500 outpoint 00:00:13.000 

Когда я выполняю эту команду в ffmpegвыходном видео, возникает несколько проблем:

  1. Выход начинается с начала исходного видео, а не через 1,5 с.
  2. Звук после объединения второго входного видео задерживается (при воспроизведении в QuickTime Player. Все нормально ffplay).

Когда я выполняю те же правки в MPEG Streamclip, результирующее видео воспроизводится, как и ожидалось. Вот некоторые табличный выход из ffprobeна one_through_ten-timestamped.mp4который показывает, где FFmpeg видео и MPEG Streamclip отличаются в своих точках конкатенации:

start of first segment end of first segment mpeg streamclip start 1st start of second segments end of second segment

Обратите внимание, что ffmpegи MPEG, и Streamclip обрабатывают второй сегмент примерно одинаково, однако ffmpeg, похоже, не учитывают inpointв первом входном видео. Обратите внимание, что в моем MP4 есть один пакет на кадр.

ffmpegвел себя так с версии 2.8 (возможно, до) до 3.3.3. Я пропускаю опцию командной строки или списка редактирования? Конечно, другие успешно используют ffmpegдля разделения и объединения видео (без повторного сжатия).

1
Из [документации concat demuxer] (https://ffmpeg.org/ffmpeg-formats.html#concat): "inpoint - эта директива лучше всего работает с внутрикадровыми кодеками, потому что для некадровых кодеков вы обычно получаете дополнительные пакеты до фактической точки начала и декодированный контент, скорее всего, будет содержать кадры до точки начала. " LordNeckbeard 6 лет назад 0

0 ответов на вопрос