145

目前我正在使用这个命令来提取图像:

ffmpeg -i input.mp4 output_%03d.jpeg

但是如何提高 JPEG 图像质量呢?

4

2 回答 2

268

用于-qscale:v控制质量

使用-qscale:v(或别名-q:v)作为输出选项。

  • JPEG 的正常范围是 2-31,其中 31 是最差的质量。
  • 比例是线性的,qscale 的两倍大约是比特率的一半。
  • 建议尝试 2-5 的值。
  • 您可以使用值 1 但必须添加-qmin 1输出选项(因为默认值为-qmin 2)。

要输出一系列图像:

ffmpeg -i input.mp4 -qscale:v 2 output_%03d.jpg

有关图像输出的更多选项,请参阅图像复用器文档

要以约 60 秒的持续时间输出单个图像:

ffmpeg -ss 60 -i input.mp4 -qscale:v 4 -frames:v 1 output.jpg

连续覆盖/更新/保存到单个图像

使用-update 1 图像混合器选项。来自实时流输入的每秒一次的示例:

ffmpeg -i rtmp://input.foo -q:v 4 -r 1 -update 1 output.jpg

另见

于 2012-04-19T18:03:39.493 回答
11

以无损格式输出图像,例如 PNG:

mkdir stills
ffmpeg -i my-film.mp4 -vsync 0 -f image2 stills/my-film-%06d.png

然后使用另一个程序(您可以更精确地指定质量、二次采样和 DCT 方法 - 例如 GIMP)将您想要的 PNG 转换为 JPEG。

-qmin 1 -q:v 1直接从ffmpeg.

如果您只想提取关键帧(可能具有更高质量的后期编辑),您可以使用以下内容:

ffmpeg -skip_frame nokey -i my-film.mp4 -vsync 0 -f image2 stills/my-film-%06d.png

-vsync 0参数避免了需要指定帧速率,-r并且意味着输入文件中的所有帧都被视为,嗯,一帧。

于 2019-11-02T15:53:41.540 回答