WebRTC における Simulcast の今後

V
shiguredo
Published in
3 min readFeb 10, 2019

WebRTC SFU で必須になる Simulcast についてまとめました。技術的な詳細は Gist をどうぞ。

ここでは、技術というよりかは今後どうなっていくかについて書いていく。

Simulcast は必要か

必要というのが自分の理解。実際 libwebrtc がこれだけ Simulcast に力を入れて実装していってるのは、エンタープライズで利用する WebRTC には SFU が必須というのが暗黙の了解だからだろう。MCU はあまりにも CPU 効率が悪すぎる。

WebRTC SFU の欠点である全員に同一の画質を送るしかないというのが Simulcast で解決されるのはとても大きい。

むしろ Simulcast が普及しないといつまで立っても WebRTC SFU の欠点が補えない。

Simulcast 利用時の CPU 負荷はどうなのか

映像ソースは一つで、さらに最高画質の 1/4 の画質、さらにその 1/4 の画質と下がっていくため、実際の CPU 利用率は 300% ではなく 30% 程度の増加になる。

VP9 であれば VP8 の 20% 程度の CPU 利用率増加ということもあり、VP8/Simulcast の利用はかなりオススメ。

もちろん無理に Simulcast を利用する必要はなく、モバイルからで電池やネットワーク利用料が制限されている環境であれば、低解像度 VP8 で十分だろう。

なぜ SVC を利用しないのか

SFU と SVC の組み合わせは、アメリカと日本では Vidyo 社がパテントを持っているため利用するにはライセンスが必要になるため、色々コスト面が増大するため採用が難しい。

今後主流になっていくのか

なっていくと見ている。Simulcast はマルチストリームと組み合わせていくことになり、WebRTC で 3 人以上の複数人数でやり取りする場合の基本的技術になっていくだろう。

特に片方向では HLS や MPEG-DASH で ABR が基本ということもあり、 Simulcast は必須技術だろう。むしろ Simulcast ができないのであれば片方向で WebRTC を採用するのはとてもネガティブだ。

組み込みではどうか?

まだ組み込みでは Simulcast を利用しているのを見たことはないが、自社の WebRTC Native Client では Simulcast も有効にできるようにしていきたいと考えている。

組込の場合は CPU やネットワークのリソースと相談になると考えている。

実装難易度は?

かなり高いと考えて良い。特に動的な切り替えとなると相当めんどくさい。ただ、難易度が高いから実装しないはなしのレベルで必要な技術。

--

--