ffmpeg segment_frames ожидаемые результаты

ffmpeg segment_frames ожидаемые результаты

Я пытаюсь разделить более крупное видео в соответствии с набором диапазонов кадров, которые я передаю в ffmpeg. Несколько вопросов относительно опции -f segment -segment_frames и того, что ожидает/производит. Вот что я запускаю:

ffmpeg -i full_movie.mov -f segment -segment_frames 123 -reset_timestamps 1 -c:a copy -map 0 "/Users/sjan/Desktop/%03d_test.mov"

ffmpeg -i full_movie.mov -f segment -segment_frames 124, 163 -reset_timestamps 1 -c:a copy -map 0 "/Users/sjan/Desktop/%03d_test.mov"

Будет ли первая команда ffmpeg изменяться от 0 до 123 или от 1 до 123?

Начинается ли ffmpeg с опцией -segment_frames с 0 при чтении фильма QT, учитывая, что этот фильм при открытии в QT начинается с 0? Стоит ли мне ожидать, что я передам ему свои диапазоны кадров, чтобы учесть это, вычитая 1, если он начинается с 0? Я вижу непоследовательные результаты в правильных диапазонах, и это, вероятно, из-за этого.

решение1

Да, segment_frames начинается с 0. Как правило, почти все счетчики индексов в ffmpeg начинаются с 0.

Итак, -segment_times 124,163говорит ffmpeg создать сегмент для каждого кадра 0-123, 124-162 и 163-END. Однако, если эти начальные кадры не являются ключевыми, ffmpeg начнет сегмент с первого ключевого кадра, найденного после этих кадров.

Добавьте -break_non_keyframes 1для принудительной сегментации на указанных кадрах. Однако начальные кадры могут не декодироваться правильно, пока не будет найден ключевой кадр, если сегмент воспроизводится автономно. Поскольку вы кодируете видео, вы можете принудительно применить ключевые кадры в точках сегмента, добавив-force_key_frames expr:eq(n\,124)+eq(n\,163)

Связанный контент