1920x1080 30fps h264 ストリームをデコードしようとしています。VLC メディア プレーヤー (再生を一時停止) では個々のフレームが鮮明に見えますが、avconv (ffmpeg は非推奨となり、avconv に置き換えられました) を使用してデコードすると、フレームの品質が比較すると非常に悪くなります (主な不満はブロック状の表示です)。
avconv を呼び出す方法は次のとおりです:
avconv -i video.h264 -s 1920x1080 -f image2 temp/images/video-%03d.jpg
avconvにjpg出力設定はありますか?avconvのドキュメントの重要な部分と思われる部分を読みました(つまり、http://libav.org/avconv.html#image2-1)、出力 jpg 品質を指定する方法が見つかりませんでした。
さらに、avconv はデコードを開始する前にストリーム全体を読み取るようです。そのため、ストリームが進行中の場合は、avconv がデコード プロセスを開始したときのストリームの位置までしかデコードしません。これを回避する方法はありますか? つまり、10 秒間のストリームが t 秒に開始され、avconv が t+1 秒に開始された場合、avconv はストリームの 1 秒のみをデコードします。
答え1
次のパラメータを使用すると、JPEG 品質スケールを可能な限り最高の JPEG 品質に強制することができます-q:v 1
。
avconv -i video.h264 -s 1920x1080 -f image2 -q:v 1 temp/images/video-%03d.jpg
答え2
JPEGは非可逆コーデックなので、PNGを使用することをお勧めします。
ffmpeg -i video.h264 -s 1920x1080 temp/images/video-%03d.png