Что означает опция ffmpeg fps?

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
Juneyoung Oh
источник

Ответы:

8

Вы можете найти документацию на домашней странице 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 входной формат -i входной файл -f выходной формат  выходного файла

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

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

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

slhck
источник
Большое спасибо: D Я даже не знаю, есть ли опция фильтра!
Juneyoung Oh
-vfи -filter:vозначает то же самое, но более очевидно, что это фильтр с тем -filter, конечно. Я поговорил с кем-то из списка рассылки FFmpeg, и они также сказали, что -rне следует использовать для установки частоты кадров для вывода. -filter:v fpsявляется предпочтительным.
slhck
@slhck Как тривиальная и в основном не связанная сторонняя заметка, ffplayпохоже, не нравится -filter:vпо сравнению с -vf(но я давно пытался из-за путешествий).
Llogan