WebRTC の次世代 Simulcast が動いた日

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

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

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

rid ベースの Simulcast

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

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

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

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

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

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

Written by

Erlang/OTP / 時雨堂 / WebRTC / E2EE

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