VP8 / 9のエンコードがH.264と比較して遅いのはなぜですか?


11

最近、WebmコーデックVP8とVP9を試してみたかったのですが、実行ffmpegしてH.264 MP4ファイルを他の2つのコーデックのいずれかにエンコードすると、エンコードが(ほぼ1桁)遅いことがわかりました。

H.264から3 MBit / sのVP9への1080p30ビデオは約6〜7 fpsでエンコードされていますが、同じビデオは約40 fpsでH.264にエンコードされます。VP9形式のlibvpx-vp9コーデックを使用しffmpegました。VP8とTheoraでも同じ結果が得られます。

誰かがVP9が非常に遅い理由を私に説明できますか?私は、Handbrakeを使用して、同様のリサルトが得られる別のマシンを試しました。


回答:


11

libvpx-vp9はより低速なエンコーダですlibx264が、ffmpegのスレッドのデフォルト設定(0 = auto)はlibvpxでは効果的ではありません。手動で設定すると速度が上がります。例えば

ffmpeg -i in.mp4 -c:v libvpx-vp9 -threads 4 out.mp4

4コアマシンで1080-30p H.264ストリームをエンコードすると、から3.8 fpsにバンプが発生し10 fpsます。


一つはまた、すなわち、異なるスピードのプリセットがあることを言及すべきである-presetためlibx264-speedのためにlibvpx-vp9。を参照してくださいffmpeg -h full。これらはかなりの違いを生む可能性がありますが、品質や圧縮効率にも影響します。
slhck 2017年

1
私はかなり古いマシンで試してみましたが、両方のマシンがクアッドコアであるため、4つのスレッドを使用しました。-speedオプションは、私にとって大きな違いしなかった
comfreak


3

VP9はより優れた圧縮を提供するより複雑なコーデックです。ビデオの圧縮/パフォーマンス比は指数関数的になる傾向があります。VP9の置き換え(AV1)はさらに遅くなるはずです。


1
つまり、言い換えると、コーデックが「唯一」のサイズ改善を比較的小さなものにしても、はるかに遅くなる可能性があるということです。私が得た結果は代表ですか?
comfreak

1
VP9は、品質の面で最大50%効率が向上します(@comfreak)。そんなに小さいとは思いません。結果のファイルサイズだけを比較することはできません。
slhck

@slhck:3MBit / sはH.264よりも多くの元の情報をエンコードできるため、H.264のソース素材よりもビットレートを低くすることで、速度を上げることができます。
comfreak 2017年

1
@comfreakより低いビットレートを使用しても、エンコードプロセスの速度は自動的には向上しません。圧縮効率と速度の間にはトレードオフがあり、たとえば、多くのストリーミングプロバイダーは、CPU時間を投資して、全体的なビットレートを下げて高品質のストリームを作成し、スペースと帯域幅を節約したいと思っています。より効率的なコーデック(VP9またはH.264上のHEVCなど)を使用することも、この点で役立ちます。
slhck 2017年

ただし、本質的に、速度が最も重要な要素である場合は、古いコーデック(H.264など)、圧縮効率の低いプリセットを使用し、おそらくNVENCなどのGPUアシストエンコーディングも検討する必要があります。
slhck 2017年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.