ffmpeg 的 fps 选项是什么意思?

Jun*_* Oh 4 video ffmpeg

我正在尝试从视频中捕捉一些快照。所以我在他们的官方页面找到了这段代码:

ffmpeg -i myvideo.avi -f image2 -vf fps=fps=1/60 img%03d.jpg
Run Code Online (Sandbox Code Playgroud)

但是,我找不到任何关于选项的文档,他们也从不解释。

所以如果你知道一些关于 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
Run Code Online (Sandbox Code Playgroud)

slh*_*hck 9

您可以在 FFmpeg 主页上找到文档

fps过滤器有多种选择,其中之一是fps。因此,要声明该选项,您必须调用:

-vf fps=fps=1/60
     ?   ?   ?
     |   |   |
     |   |   |__ value
     |   |______ option
     |__________ filter
Run Code Online (Sandbox Code Playgroud)

-vf fps="fps=1/60"当然,你也可以写。

因此,当您使用1/60这意味着每秒 1/60 帧,或每 60 秒 1 帧。在任何情况下,这 和 之间的区别在于-r 1/60在任何-r选项之前应用过滤器。您提供的两个命令理论上都应该有效,但是这个命令-r为我创建了太多的输出帧(但我不是第一个注意到的)。坚持使用fps过滤器。


请注意,还有一个名为 的过滤器framerate,它与 类似fps,但又不一样。它不会通过复制或丢弃帧来实现目标帧率,而是对帧进行插值,即合并相邻帧以创建新图像。


如果您剖析该命令,您会发现这image2-f. 这指定了输出格式。通常,您可以ffmpeg像这样使用它:

ffmpeg -f输入格式-i输入文件-f输出格式 输出文件

在你的榜样,告诉我们ffmpeg要使用image2复用器,它允许你输出单个图像文件与视频,通过指定像模式%02d的输出名称。

这里-f image2是多余的,因为当您使用图像输出格式时应该自动选择多路复用器。

image2分路器也有一个framerate选项,允许您指定假定输入文件的帧速率。例如,如果您有一个每秒包含一张图片的幻灯片,请将其-framerate 1用作输入选项。有关一些示例,请参见此处