VP9 を推奨していく

V
V
Jun 24, 2017 · 3 min read

WebRTC の必須コーデックは VP8 と H.264 と方針が決まっているが、Safari が H.264 だけしか対応しなかったりと、なんだか色々荒れている。

そこで VP9 ですよ、というのがこの記事の言いたいことだ。

VP9 は VP8 の半分のビットレートで同等の画質を実現するということと、H.265 よりも効率の良さを実現するというのを目的として作られているコーデックだ。

GitHub のミラーはこちら、開発は活発。
https://github.com/webmproject/libvpx

ただ、VP9 はいいことばかりではない。VP8 にくらべると 20% 程度 CPU 使用率が上がる。これはより高圧縮にするためだ。

さらに H.264 と違い、ハードウェアアクセラレータがほとんどない。ただ、最近では Intel の Kaby Lake には VP9 のハードウェアアクセラレータが載っている。これは素晴らしい。

Kaby Lakeは新しいGPUを搭載しており3Dグラフィクスや4Kビデオ向けのパフォーマンスが強化されている[4][14]。新たな機能としてHDCP2.2[15]、および、H.264,HEVCのメインプロファイルおよびメイン10/10bitプロファイル、VP9 10bitおよび8bitのハードウェアデコード機能が追加されている[12][16][17][18]。ハードウェアエンコード機能としてはH.264、HEVCメイン10/10プロファイル,VP9 8bitおよび10bitがサポートされている。

まだブラウザ側が対応しているかどうかは分からないが、今後を考えると楽しみだ。

CPU 使用率の上昇やハードウェアアクセラレータが少ないこと考えてもビットレートが半分になるのは大きい。

また、実際使ってみると、VP9 は動きにとても強い。VP8 や H.264 と比べると差は歴然だ。特にスマホだと VP8 や H.264 を利用すると手持ちでの動きが激しいとブロックノイズがでまくる。VP9 はスムーズだ。

ちなみに … WebRTC の場合はずーっと配信していることもあって、そもそも CPU を食べる。さらにSFU を利用する場合はエンコードする映像は一つで済む。P2P だとツライかもしれないが SFU と相性はとても良い。

むしろビットレートが抑え込まれる恩恵が大きすぎる。

  • VP8 で HD だと 2Mbps 程度最低でも必要になる
  • VP9 であれば HD 画質の配信は 1Mbps で良くなる

50% の削減。SFU のようにサーバ経由の製品を利用する場合はこのビットレートが下がるのはとても大きい。転送量が安くなるからだ。

ということで、WebRTC SFU Sora の次のリリースからデフォルトで利用するビデオコーデックタイプを VP9 に変更する。結局 Safari が入ると H.264 がメインになるのはわかっている。ささやかな抵抗だ。

VP9 で HDの映像をおいておく。これは WebRTC を利用して getUserMedia からの配信を WebRTC SFU Sora で録画した映像だ。

1920x1080 (Full HD) で 5Mbps で 40 秒の映像だ。容量は 24.4 MB。WebRTC でここまでの映像が配信できることを知っておいてほしい。VP8 や H.264 であれば、10Mbps は必要になる。

https://dl.dropboxusercontent.com/u/89936/8d096fb4-6fd2-40d6-9637-115062a82bc6.webm

shiguredo

時雨堂ノハナシ

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store