私はx264でffmpegを使った経験があり、私はlibvpx-vp9と比較したいと思っていました。私はraw videoの単純なシングルパスエンコーディングをテストし、x264とlibvpx-vp9の両方でcrf設定とプリセットを変更しました。私はlibvpxに新しく、私はthisとthisを慎重に辿ったが、私が得た結果があまり意味を持たないので、私はまだパラメータの間違った組み合わせを指定しているかもしれない。FFmpeg x264を使ったCRFコントロールlibvpx-vp9
私はx264のために:あなたはPSNRの値を取得し、プリセットを変更することができます
codec , settings , time , PSNR ,bitrate
libx264,['-crf', '20', '-preset', 'fast'],13.1897280216, 42.938337 ,15728
libx264,['-crf', '20', '-preset', 'medium'],16.80494689, 42.879753 ,15287
libx264,['-crf', '20', '-preset', 'slow'],25.1142120361, 42.919206 ,15400
libx264,['-crf', '30', '-preset', 'fast'],8.79047083855, 37.975141 ,4106
libx264,['-crf', '30', '-preset', 'medium'],9.936599016, 37.713778 ,3749
libx264,['-crf', '30', '-preset', 'slow'],13.0959510803, 37.569511 ,3555
これは私には理にかなって、CRF値を与えられた:
ffmpeg -i test_video.y4m -c:v libx264 -threads 1 -crf <crf> -preset <preset> -y output.mkv
をし、以下の結果を得ましたビットレートは低下しますが、エンコードする時間は増加します。私は-cpu-used
オプションは、x264の中-preset
と等価であることをオンラインチュートリアルから考えて、すべての
ffmpeg -i test_video.y4m -c:v libvpx-vp9 -threads 1 -crf <crf> -cpu-used <effort> -y output.mkv
まず:私はlibvpx-VP9については
。あれは正しいですか?もしそうなら、-quality
との違いは何ですか?さらに、範囲が-8から8になるので、高速オプションが正の値のときに負の値が最も遅いと仮定しました。
codec , settings , time , PSNR ,bitrate
libvpx-vp9,['-crf', '20', '-cpu-used', '-2'],19.6644911766,32.54317,571
libvpx-vp9,['-crf', '20', '-cpu-used', '0'],176.670887947,32.69899,564
libvpx-vp9,['-crf', '20', '-cpu-used', '2'],20.0206270218,32.54317,571
libvpx-vp9,['-crf', '30', '-cpu-used', '-2'],19.7931578159,32.54317,571
libvpx-vp9,['-crf', '30', '-cpu-used', '0'],176.587754965,32.69899,564
libvpx-vp9,['-crf', '30', '-cpu-used', '2'],19.8394429684,32.54317,571
ビットレートは非常に低く、PSNRはcrf
設定(およびx264のに比べて非常に低い)の影響を受けないようだ:私が得る結果はしかし非常に混乱しています。 -cpu-used
の設定は非常に影響が少なく、-2と2は同じオプションです。何が欠けていますか?私はlibvpxがエンコードするのに(確かに真実ですが)同時に高品質のトランスコードをするのに時間がかかることを期待しました。 に使用するパラメータは、x264との公正な比較が必要ですか?
編集: @mulvyaのおかげで、これdoc私は-b:v 0
を追加する必要がlibvpxとCRFモードで動作するようにそれを考え出しました。私は私のテストを再実行し、私が取得:
codec , settings , time , PSNR ,bitrate
libvpx-vp9,['-crf', '20', '-b:v', '0', '-cpu-used', '-2'],57.6835780144,45.111158,17908
libvpx-vp9,['-crf', '20', '-b:v', '0', '-cpu-used', '0'] ,401.360313892,45.285367,17431
libvpx-vp9,['-crf', '20', '-b:v', '0', '-cpu-used', '2'] ,57.4941239357,45.111158,17908
libvpx-vp9,['-crf', '30', '-b:v', '0', '-cpu-used', '-2'],49.175855875,42.588178,11085
libvpx-vp9,['-crf', '30', '-b:v', '0', '-cpu-used', '0'] ,347.158324957,42.782194,10935
libvpx-vp9,['-crf', '30', '-b:v', '0', '-cpu-used', '2'] ,49.1892938614,42.588178,11085
PSNRとビットレートは、期限を意味するものではあり-speed
ため-b:v 0
VP9の場合は、CRFにエンコードするときに '-b:v 0'を追加する必要があります。 – Mulvya
ありがとう!私は質問を編集します – igon