Answers:
-qscale:v
使用-qscale:v
(或别名-q:v
)作为输出选项。JPEG的有效范围是2-31,其中31是最差的质量。我建议尝试使用2-5的值。
ffmpeg -i input.mp4 -qscale:v 2 output_%03d.jpg
ffmpeg -ss 60 -i input.mp4 -qscale:v 4 -frames:v 1 output.jpg
这适用于任何视频输入。如果您输入的是MJPEG,请参见下文。
如果您输入的是MJPEG(动态JPEG),则可以提取图像而不会造成质量损失。
该ffmpeg
或ffprobe
控制台输出可以告诉你,如果你输入MJPEG:
$ ffprobe -v error -select_streams v:0 -show_entries stream=codec_name -of default=nw=1 input.avi
codec_name=mjpeg
然后,您可以使用mjpeg2jpeg
位流过滤器提取帧:
$ ffmpeg -i input.avi -codec:v copy -bsf:v mjpeg2jpeg output_%03d.jpg
-qmin 1 -qmax 1
除了-q:v 1
使文件大小增加了一倍。而且我似乎也看到了很小的改进。
-qmin 1 -qmax 1
产生了较大的文件,但给了我完全相同的图像。我通过photoshop,2层和差异过滤器对此进行了验证。像素相同。
-qmin 1 -q:v 1
。
以无损格式输出图像,例如PNG:
ffmpeg.exe -i 10fps.h264 -r 10 -f image2 10fps.h264_%03d.png
然后使用另一个程序(您可以在其中更精确地指定质量,子采样和DCT方法(例如GIMP))将所需的PNG转换为JPEG。
与使用-qmin 1 -q:v 1
并直接从JPEG输出为JPEG 相比,以这种方式可以获得JPEG格式的图像更加清晰ffmpeg
。
ffmpeg
输出PNG8
仅使用256色(与GIF相同)的文件。因此实际上是非常有损的。
identify image.png
结果不是真正的单通道8位,而是R,G和B的8位时,给出的结果为“ 8位”。IDK应该让普通identify
用户理解那。