Apple ProRes 422形式のビデオがあります。これをGoogleのVP9にエンコードして、Webで公開する予定です。ソースは次のとおりです。
Stream #0:0(und): Video: prores (apcn / 0x6E637061), yuv422p10le(bt709), 1920x1080, 114644 kb/s, SAR 1:1 DAR 16:9, 23.98 fps, 23.98 tbr, 24k tbn, 24k tbc (default)
私の目標は、オリジナルとほとんど区別がつかない、可能な限り最高の(合理的な)品質でVP9にエンコードすることです。結果のファイルサイズは実際には問題ではありません。今私は以下を使用しますが、Chromeのビデオは見栄えが悪いです:
ffmpeg -i Source.mov -c:v libvpx-vp9 -b:v 4M -pix_fmt yuv420p -speed 4 -frame-parallel 0 -threads 2 -c:a libopus -b:a 320K Result.webm
-b:v 4M
の設定を上げようとすると、サイズが大きくなりますが、品質は上がりません。また、 このガイド を試しましたが、おそらく古く、満足のいく結果を得ることができません。ちなみに、私は最新のffmpeg
をソースからコンパイルしています。
どのffmpeg
設定を使用する必要がありますか?
さて、いくつかの実験の後、私が質問で言及したガイドが非常に役立つことがわかりました。 一定品質の推奨設定セクションの指示で成功しました。微調整する必要があるのは-crf
設定です。
かなり多くのテストを行った結果、-crf 23
設定になり、結果のwebm
ファイルは元のファイルと比較して非常に高品質になりました。
正確なffmpeg
コマンドは次のとおりです。
最初のパス:
ffmpeg -i Source.mov -c:v libvpx-vp9 -pass 1 -pix_fmt yuv420p -b:v 0 -crf 15 -threads 2 -speed 4 -tile-columns 6 -frame-parallel 1 -an -y -f webm /dev/null
2番目のパス:
ffmpeg -i Source.mov -c:v libvpx-vp9 -pass 2 -pix_fmt yuv420p -b:v 0 -crf 15 -threads 2 -speed 2 -tile-columns 6 -frame-parallel 1 -auto-alt-ref 1 -lag-in-frames 25 -c:a libopus -b:a 320k -f webm Out.webm
何らかの理由で、最初のパスは-threads 2
オプションにもかかわらず、すべてのCPUコア(私の場合は2)を使用しませんが、2番目のパスはそれらすべてを使用します。
速度4で1パスエンコードを実行しています。これは高速パラメーターですが、最適な品質にはほど遠いです。
ガイドは良さそうですが、2パスまたは一定/制約付きの品質設定を試しましたか?明らかに、彼らの例の1000kビットレートを維持しないでください。