使用ffmpeg将静态图像编码为mpeg-2视频时,如何避免泵送伪像

时间:2014-11-07 13:31:30

标签: video encoding ffmpeg dvd mpeg-2

我正在使用如下命令行将静态图像编码为符合dvd的mpeg流:

ffmpeg.exe -y -loop 1 -t 00:00:30 -r 1 -i "image.jpg" -target pal-dvd -b:v 6000000 video.mpg

这会生成30秒的视频,显示单个静止图像。 在观看视频时,我注意到大约在每个GOP结束时出现的奇怪(和丑陋)“抽”的文物。 使用流分析器工具我注意到IPPPPPPPPPPPPPPIPPPPPPPPPPPPPP ...序列中的两个连续的I帧看起来与我预期的不一样,因为编码器没有理由改变影响质量的编码参数。 / p>

我还使用命令行

编码了相同的图像

ffmpeg.exe -y -loop 1 -t 00:00:30 -r 1 -i "image.jpg" -f dvd -pix_fmt yuv420p -r 25 -s 720x576 -aspect 16:9 -vcodec mpeg2video -b:v 6000000 -maxrate 9000000 -bufsize 1835008 -muxrate 10080000 -minrate 0 -packetsize 2048 -g 15 video.mpg

它或多或少地应用了上面的-target pal-dvd所隐含的相同参数。 结果与预期相同。

注意:非静止材料显示少到没有“抽水”。当将vbv缓冲区大小设置为更高的值(如3670016字节)时,它几乎消失,有效地加倍。 不幸的是,这是没有选择的,因为流应该是dvd兼容的,它强制执行vbv缓冲区大小,就像上面的命令行一样。

那么我怎样才能避免这些视觉瑕疵并获得一个(真正)显示静止图像的流?

1 个答案:

答案 0 :(得分:1)

我能够重现您的问题并通过指定量化器比例(设置为最高质量)来修复它,如下所示:

  

ffmpeg.exe -y -loop 1 -t 00:00:30 -r 1 -i“image.jpg” -q:v 2 -target pal-dvd -b:v 6000000 video.mpg