我正在使用这样的命令行将静止图像编码为符合 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 结束时出现的奇怪(且丑陋)的“泵送”伪影。使用流分析器工具,我注意到 IPPPPPPPPPPPPPIPPPPPPPPPPPPPPP 序列中的两个连续 I 帧看起来与我预期的不一样,因为编码器应该没有理由更改影响质量的编码参数。
我还使用命令行对相同的图像进行了编码
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 缓冲区大小,就像上面的命令行一样。
那么如何避免这些视觉伪影并获得(真正)显示静止图像的流?