【发布时间】:2012-04-30 19:26:03
【问题描述】:
目前我正在使用这个命令来提取图像:
ffmpeg -i input.mp4 output_%03d.jpeg
但是如何提高 JPEG 图像质量?
【问题讨论】:
-
目前的质量有什么问题,除了不“好”?
标签: video ffmpeg graphics computer-vision
目前我正在使用这个命令来提取图像:
ffmpeg -i input.mp4 output_%03d.jpeg
但是如何提高 JPEG 图像质量?
【问题讨论】:
标签: video ffmpeg graphics computer-vision
-qscale:v控制质量使用-qscale:v(或别名-q:v)作为输出选项。
-qmin 1 输出选项(因为默认值为 -qmin 2)。ffmpeg -i input.mp4 -qscale:v 2 output_%03d.jpg
有关图像输出的更多选项,请参阅image muxer documentation。
ffmpeg -ss 60 -i input.mp4 -qscale:v 4 -frames:v 1 output.jpg
使用-update 1 image muxer 选项。来自实时流输入的每秒一次示例:
ffmpeg -i rtmp://input.foo -q:v 4 -r 1 -update 1 output.jpg
【讨论】:
-q:v 1 之外添加 -qmin 1 -qmax 1 会使文件大小翻倍。而且我似乎也看到了非常轻微的改善。
-qmin 1 -qmax 1 导致文件更大,但给了我完全相同的图像。我通过 Photoshop、2 层和差异过滤器验证了这一点。像素是一样的。
-qmin 1 -q:v 1。
以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 输出为JPEG 相比,这种方式可以获得稍微清晰的JPEG 格式图像。
如果您只想提取关键帧(可能具有更高质量的后期编辑),您可以使用以下内容:
ffmpeg -skip_frame nokey -i my-film.mp4 -vsync 0 -f image2 stills/my-film-%06d.png
-vsync 0 参数避免了需要用-r 指定帧速率,并且意味着输入文件中的所有帧都被视为,嗯,一帧。
【讨论】:
ffmpeg 输出仅使用 256 色(与 GIF 相同)的 PNG8 文件。所以它实际上是非常有损的。
ffmpeg] 命令,我可以获得与原始视频质量相同的高质量png。”您正在使用哪个版本的ffmpeg 输出PNG8 文件,您的输入格式是什么?
ffmpeg 有了更多的了解。
-q2,我已经看到ffmpeg 将JPEG 压缩质量设置为90(而不是70)的源代码,但这仍然低于我通常使用的。另请注意,它是从已经压缩的电影中重新压缩静止图像,并且“关键帧”的质量会更好。但是,虽然 MPEG 是基于 JPEG 的,但似乎无法将关键帧直接提升为 JPEG 图像。