ffmpeg 的 fps 选项是什么意思?

ffmpeg 的 fps 选项是什么意思?

我正在尝试从视频中截取一些快照。所以我在他们的官方页面上找到了以下代码:

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

你可以找到文档在 FFmpeg 主页上。

fps筛选有多个选项,其中一个是fps。因此,要声明该选项,您必须调用:

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

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

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


请注意,还有另一个过滤器调用framerate,与 类似fps,但不完全相同。它不会通过复制或丢弃帧来实现目标帧速率,而是会插入帧,即合并相邻帧以创建新图像。


如果你剖析该命令,你会发现这image2是的选项值-f。这指定了输出格式。一般来说,你可以ffmpeg像这样使用它:

ffmpeg-f输入格式-我输入文件-F输出格式 输出文件

在您的示例中,我们告诉ffmpeg使用复用器image2%02d,它允许您通过指定输出名称的模式(如)从视频中输出单个图像文件。

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

解复用器image2还有一个framerate选项,允许您指定假定的输入文件帧速率。例如,如果您有一个每秒包含一张图片的幻灯片,则将其用作-framerate 1输入选项。请参阅这里举一些例子。

相关内容