Я учусь разделять и объединять видео с помощью ffmpeg
. В настоящее время я тренируюсь на 799 КБ MP4, 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,5 с.
- Звук после объединения второго входного видео задерживается (при воспроизведении в QuickTime Player. Это нормально на
ffplay
).
Когда я выполняю те же правки в MPEG Streamclip, результирующее видео воспроизводится, как и ожидалось. Вот некоторые табличные выходные данные ffprobe
для one_through_ten-timestamped.mp4
которые показывают, где видео ffmpeg и MPEG Streamclip различаются по своим точкам конкатенации:
Обратите внимание, что ffmpeg
и MPEG Streamclip обрабатывают второй сегмент примерно одинаково, однако ffmpeg
, похоже, не inpoint
в первом входном видео. Обратите внимание, что в моем MP4 есть один пакет на кадр.
ffmpeg
вел себя так с версии 2.8 (возможно, до) до версии 3.3.3. Я пропускаю опцию командной строки или списка редактирования? Конечно, другие успешно используют ffmpeg
для разделения и объединения видео (без повторного сжатия).