【问题标题】:How to avoid pumping artifacts when encoding still images into a mpeg-2 video using ffmpeg使用 ffmpeg 将静止图像编码为 mpeg-2 视频时如何避免泵送伪影
【发布时间】:2015-01-04 07:32:30
【问题描述】:

我正在使用这样的命令行将静止图像编码为兼容 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 缓冲区大小,就像上面的命令行一样。

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

【问题讨论】:

    标签: video encoding ffmpeg dvd mpeg-2


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2012-01-11
      • 2018-05-29
      • 1970-01-01
      • 1970-01-01
      • 2014-12-31
      • 2014-10-10
      • 2021-06-20
      • 2018-02-12
      • 1970-01-01
      相关资源
      最近更新 更多