次のようなコマンドラインを使用して、静止画像を 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 のほぼ最後に、奇妙な (そして醜い) "ポンピング" アーティファクトがあることに気付きます。ストリーム アナライザー ツールを使用して、IPPPPPPPPPPPPPPPPPPPPPPPPPPPPP のシーケンス内の 2 つの連続する 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 バイトなどのより高い値に設定すると、効果的に 2 倍になり、ほとんどなくなります。残念ながら、ストリームは上記のコマンド ラインのように vbv バッファ サイズを強制する DVD 準拠である必要があるため、これはオプションではありません。
では、これらの視覚的なアーティファクトを回避し、(実際に) 静止画像を表示するストリームを取得するにはどうすればよいでしょうか?