我怎样才能从H264video文件用ffmpeg提取高质量的JPEG图像?
目前我正在使用这个命令来提取图像:
ffmpeg.exe -i 10fps.h264 -r 10 -f image2 10fps.h264_%03d.jpeg
但是,我怎样才能提高JPEG图像质量?
使用-qscale:v
使用-qscale:v
(或alias -q:v
)作为输出选项。 JPEG的有效范围是2-31,31是最差的质量。 我build议尝试2-5的值。
您可以添加-huffman optimal
适合一个小的,但可测量的输出文件大小减less。
要输出一系列图像:
ffmpeg -i input.mp4 -qscale:v 2 output_%03d.jpg
要在约60秒的时间内输出单张图像:
ffmpeg -ss 60 -i input.mp4 -qscale:v 4 -frames:v 1 -huffman optimal output.jpg
这将适用于任何videoinput。 如果你的input是MJPEG,请看下面的内容。
MJPEG
如果input的是MJPEG(Motion JPEG),则可以提取图像而不会造成任何质量损失。
ffmpeg
或ffprobe
控制台输出可以告诉你,如果你的input是MJPEG:
$ ffprobe -v error -select_streams v:0 -show_entries stream=codec_name -of default=nw=1 input.avi codec_name=mjpeg
然后你可以使用mjpeg2jpeg
比特streamfilter来提取帧:
$ ffmpeg -i input.avi -codec:v copy -bsf:v mjpeg2jpeg output_%03d.jpg
另见
- FFmpeg FAQ:如何将电影编码为单张照片?
- FFmpeg Wiki:每隔X秒钟创build一个缩略图图像