shiguredo
Published in

shiguredo

スポットライト機能の改善

時雨堂の WebRTC SFU Sora ではクライアントとサーバーの負荷や転送量を減らすために独自の機能であるスポットライト機能が入っています。

スポットライト機能とは「直近で話をした数人」だけは普通の画質で、「それ以外の話をしていない人」は低画質で配信することにより、受信側の負荷を抑え、多くの参加者を画面に表示できるようにする仕組みです。

この機能は WebRTC SFU Sora の強みの一つであり、積極的に改善を進めています。

次のリリースに向けて 3 つの改善を行う予定です。

最大アクティブ数の設定

実際このスポットライト機能を使うと多くのユーザーが同時に表示できるようになるのですが、より負荷を減らすために最大アクティブ数の設定を追加することにしました。

  • スポットライトオン
  • スポットライトオフ
  • ステージにそもそも立たせない

スポットライトのオン/オフにもう一つ段階をつけて、そもそも「ほとんど話していないユーザーは画面外へ行ってもらう」つまり「サーバーから映像を送らないようにする」という仕組みを追加します。

この仕組みを導入することで、よりクライアントとサーバーの負荷が減らせるようになります。

イメージとしてはスポットライトが 1 つで、最大アクティブ数が 4 の場合は画面に表示されるのは 4 人で、普通の画質になるのは 1 人です。ここで参加者が実は 20 人いたとしても、実際に受信する映像は 4 つで、普通の画質が 1 つ、低画質が 3 つになるため、かなり負荷が下がります。

表示は以下のようになりますが、実際は参加者は 20 人いて、話し始めた非アクティブな人がスポットライトオン&アクティブになります。そして話していないスポットライトオフ&アクティブな人が追い出されて非アクティブになります。最大アクティブ数が 4 だとちょっと入れ替わりが激しいかもしれないので 9とかが無難かもしれません。

参加者 20 名、非アクティブ16 、アクティブ4、スポットライトオン1、スポットライトオフ3

参加者 20 名のうち16 名分の映像を受け取らなくていいのはかなり大きいです。この機能を導入することでスポットライトをより気軽に利用できるようにしたいと考えています。

非サイマルキャストの参加

スポットライトはサイマルキャストが利用できることを前提としていますが、非サイマルキャストも参加できるようにします。

これは主に画面共有だったり、サイマルキャストを利用できない端末などを参加できるようにするためです。

仕組み的にはシンプルでシグナリング時に simulcast: false でも spotlight: true で参加できるようにします。

復号負荷の低減

利用されていないサイマルキャストの映像や音声を Sora 側で復号しないことによりサーバーの負荷を減らします。

これで 1 台のサーバに収容できる同時接続数を増やすことができ、サーバーコストを減らせるようになります。

WebRTC は安定して配信できるのは当たり前で、クライアントとサーバーの負荷をいかに減らすかという段階に入ってきています。時雨堂もその波に乗り遅れないように色々と改善を進めていきます。

--

--

--

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
V

V

Erlang/OTP / 時雨堂 / WebRTC / E2EE

More from Medium

Exploring NFP Studio Stacking Service

CS 371p Spring 2022: Adhan Razzaque

Introducing AIIP

Implementation of HMS Kits in Shopping/E-Commerce Application