我怎样才能从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),则可以提取图像而不会造成任何质量损失。

ffmpegffprobe控制台输出可以告诉你,如果你的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一个缩略图图像