当使用ffmpeg库自带的ffmpeg.exe对对视频进行解帧或合并时,结果质量很差。导致这种原因的是在使用ffmpeg.exe指令进行解帧或合并时使用的是默认的视频码率:200kb/s。
如解帧指令:
ffmpeg.exe -i 600×600pixels.avi -r 2 -f image2 img/%03d.jpg
其中:
-i:指明需要解帧的视频;
-r 或-framerate :代表帧率,表示每秒取出2张图;
特别需要注意:-r选项是属于图片的属性,因此在指令中需要放在图片命令之前,即放到"-f image2 img/%03d.jpg"之前;
-f image2:表示输出格式为图像格式,后面的3d表示图片编号3位数,%03d表示不够位数的补零;
解帧后的图:
可以看到有明显的信息丢失,图像质量变得很差(马赛克严重)。
再看视频的文件信息:
或者从解帧日志上可以看到:
解决办法:指定视频的帧率
指令:
ffmpeg.exe -i 600×600pixels.avi -r 2 -b:v 3193k -f image2 600x600/%03d.jpg
其中
-b:v 3193k 表示指定视频帧率为3193kb/s
同样的需要特别注意:-b:v选项在指令中需要放在图片命令之前,即放到"-f image2 img/%03d.jpg"之前,否则不生效。
解帧日志上可以看到截帧的帧率变为了我们指定的帧率了:
结果:
解帧正确。