ffmpeg 和 iFrame 的输出以及 JPEG 的质量

ffmpeg 和 iFrame 的输出以及 JPEG 的质量

我正在寻找一个问题的解决方案,在旅行中我偶然发现了一些与我正在做的事情相关的东西,这引发了第二个问题。

我把这两个问题都放在了一起。如果不能,我会按照要求将其拆分成两个单独的问题。

我正在寻找使用 RTSP strteam 中的 ffmpeg 从我的 IP 摄像机输出图像的方法。

我找到了,就是这个(我在 DOS 提示符下测试过)

ffmpeg -i rtsp://192.168.0.8/video_1 -f image2 -s 360x240 -vf fps=fps=10/60 img%3d.jpg

我正在寻找一种控制图像质量的方法。我记得当我将几张 jpeg 编码为视频文件时,我会使用这个:

-f image2 -r FPS-i  + MyPath + \img%05d.jpg -crf 23  -y -r 'FPS' + 'oggOut.ogg'

这里使用 -crf 23 设置质量,其中 23 表示图像质量。我听说数字越低,质量越好。

有没有办法在我的第一个命令行中指定图像质量?我尝试将 crf 放在任何地方,但它告诉我无法识别标志。

在寻找解决方案时,我发现了此页面:

一些从流中取出 jpeg 的示例

该页面上的最后一个例子指出:

这将在每个 I 帧创建一个缩略图

我理解 i-Frame 是前一帧和当前帧之间的变化?当我测试它时,它只返回一串图像。我误解了 I-Frame 的含义吗?

答案1

用于-q:v控制 JPG 输出的质量。范围是 2-31。值越低,质量越高,因此文件大小也越大。

-crf选项由编码器 libx264(H.264 视频)和 libvpx(VP8/VP9 视频)使用,但这些编码器的值有所不同。它不适用于 mjpeg(JPG 图像/MJPEG 视频)或 libtheora(Theora 视频)。

此外,你还可能会发现缩放视频过滤器比 更灵活,-s因为您只需声明一个维度,过滤器就会自动提供另一个维度,同时保留纵横比:-vf fps=1/6,scale=360:-1。使用-s强制指定特定尺寸可能会导致输出被挤压或拉伸。

相关内容