我正在使用这样的命令行将静止图像编码为符合 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 所暗示的相同参数。
结果和预期的一样。
注意:非静止 Material 显示较少或没有“泵送”。当将 vbv 缓冲区大小设置为更高的值(如 3670016 字节)时,它也几乎消失,有效地加倍。
不幸的是,这不是选项,因为流应该是 dvd 兼容的,它强制 vbv 缓冲区大小,就像上面的命令行一样。
那么如何避免这些视觉伪影并获得(真正)显示静止图像的流?
最佳答案
我能够重现您的问题并通过指定量化器比例(设置为最高质量)来修复它,如下所示:
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
关于video - 使用 ffmpeg 将静止图像编码为 mpeg-2 视频时如何避免泵送伪影,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26802420/