WebRTC の次世代 Simulcast が動いた日

V
3 min readApr 17, 2019

--

Simulcast について詳しく知りたい人は WebRTC Simulcast コトハジメをどうぞ。

Simulcast とは簡単に言えば複数の画質の映像を配信することで視聴者側が画質を選択できるようになる仕組みです。

WebRTC の Simulcast は実は二種類あります。Google 独自の Simulcast とRFC 準拠の Simulcast です。

以前書いた Simulcast が動いた日は Google 独自の Simulcast でした。ただ Google 独自の Simuclast は「詳細な仕様が存在しない」「クライアント側で SDP を書き換える必要がある」という2つの問題を抱えてました。

ただ、まずは Simulcast が動くのが重要ということで Chrome や Safari 、 Edge (Chromium ベース) では Google 独自 Simulcast が提供されています。

これらを整理して RFC 準拠の Simulcast が libwebrtc に実装され始めています。

ssrc-group: SIM ベースの Simulcast

Google 独自の Simulcast は SDP の ssrc-group を利用します。ここで SIM を定義し、SSRC を複数定義することで実現しています。

この仕様は RFC のドラフトにすらなっておらず Google 独自の仕組みです。ただ、現時点で VP8 と H.264 でうまく動作しています。

自社製品の Simulcast 対応もこの Google 独自に対応しています。

rid ベースの Simulcast

Google 独自はまずいだろということで libwebrtc に実装されていっているのが、 rid ベースの Simulcast です。

この仕組の特徴は SSRC を利用しないというところです。rid を SSRC の代わりに利用するという仕組みです。

そのため、今までとは全く別の仕組みになります。RTP 拡張の RtpStreamId に rid の id が入ってくるようになります。

今回、無事自社製品で rid ベースの Simulcast が動作しました。さらにサーバから Offer を投げるというかなり特殊な仕組みで実現できました。この仕組を利用した実現は世界的にも珍しいかと思います。

次のリリースに向けてデフォルトが Simulcast という仕組みを定義できるようにしていきます。

この次世代の Simulcast は自社の社員が調査や WebRTC の Issues を追いかけたりして、実現できました。自分は最後の最後 1 % くらい貢献しただけです。

WebRTC の Simulcast は世界でデファクトスタンダードになりつつあります。今後、自社でも Simulcast をデフォルトにできればと思います。

--

--

V
V

No responses yet