3

Я пытаюсь сделать несколько снимков из видео. Поэтому я нашел этот код на их официальной странице:

ffmpeg -i myvideo.avi -f image2 -vf fps=fps=1/60 img%03d.jpg

но я не могу найти документацию о вариантах, и они никогда не объясняют это.

Так что, если вы знаете какую-либо ссылку или документацию о параметрах ffmpeg, пожалуйста, поделитесь.

Главный вопрос этого поста - что означает image2 -vf fps=fps=1/60 . Я не могу понять, почему они просто пишут как fps=1/60 . А image2 - это какой-то вариант или как?

Какая разница со следующим?

ffmpeg -i filename.avi -ss 00:00:01 -r 1/60 image%03d.png

1 ответ1

7

Вы можете найти документацию на домашней странице FFmpeg.

Фильтр fps имеет несколько параметров, один из которых fps . Итак, чтобы объявить эту опцию, вы должны позвонить:

-vf fps=fps=1/60
     ↑   ↑   ↑
     |   |   |
     |   |   |__ value
     |   |______ option
     |__________ filter

Вы также можете написать -vf fps="fps=1/60" , конечно.

Таким образом, когда вы используете 1/60 это означает, что 1/60 кадров в секунду или 1 кадр в 60 секунд. В любом случае разница между этим и -r 1/60 заключается в том, что фильтр применяется перед любой опцией -r . Обе команды, которые вы дали, должны работать теоретически, однако -r создает слишком много выходных кадров для меня (но я не первый, кто заметил). Придерживайтесь фильтра fps .


Обратите внимание, что есть еще один фильтр, называемый framerate, который похож на fps , но не тот же. Вместо того чтобы дублировать или отбрасывать кадры для достижения целевой частоты кадров, он будет интерполировать кадры, то есть объединять соседние кадры для создания новых изображений.


Если вы проанализируете команду, вы обнаружите, что image2 - это значение параметра -f . Это определяет формат вывода. В общем, вы можете использовать его в ffmpeg следующим образом:

ffmpeg -f input-format -i input-file -f output-format output-file

В вашем примере мы сказали ffmpeg использовать мультиплексор image2, который позволяет выводить одиночные файлы изображений из видео, указав шаблон, такой как %02d для имени вывода.

Параметр -f image2 здесь избыточен, так как мультиплексор должен выбираться автоматически при использовании формата вывода изображения.

В демультиплексоре image2 также есть опция framerate которая позволяет указать предполагаемую частоту кадров входного файла. Например, если у вас есть слайд-шоу, которое состоит из одного изображения каждую секунду, используйте -framerate 1 в качестве параметра ввода. Смотрите здесь для некоторых примеров.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .