大規模会議でクライアントとサーバの負荷を抑える

V
shiguredo
Published in
3 min readMar 31, 2019

WebRTC でテレビ会議をするというのは思いつくシーンだと思います。ただ世の中には 200 人でテレビ会議をしたいという要望もあったりします。

WebRTC で会議システムってみなさんの顔が出ていて … というのが多いですよね。これ 2 人のときと 5 人のときでビットレートが変わってほしくないですか?

つまり 2 人のときはそれぞれ 500kbps でいいけど、5 人のときは画面も狭いですし、よく考えたら 200kbps くらいでいいはずです。

ただ普通にブラウザだけでその機能を実現しようとするとかなりめんどくさいです。

この課題を解決するために時雨堂の WebRTC SFU Sora に搭載されているのがビットレート自動シェアリング機能です。上記の参加人数によって配信者のビットレートを自動でシェアしてくれます。

参加人数が増えれば配信ビットレートが減り、参加人数が減ればビットレートが増えます。コレはサーバにもクライアントにも優しい素敵な機能なんですが、残念ながら WebRTC SFU 側でコントロールしている例を見ます。

本題はここからです。200 人で会議、WebRTC SFU をご存知の場合は「無理、絶対無理。MCU を使ってくれ」と言うでしょう。

ただ WebRTC SFU Sora は実際に 200 人での会議に利用されています。それがスポットライト機能です。

これは 200 人いるなかで直近で話をした 5 人までの映像を配信し、それ以外を配信しないという仕組みです。コレを利用することでクライアント側には「アクティブな人たち」だけが配信されます。

さらに現在アクティブではない人は自動でビットレートを半分に落とすという機能も追加してあります。その上、アクティブではない人のパケットは暗号を復号すらせず破棄しているため CPU に優しい仕組みになっています。

また、200 人の会議で司会進行役だけは切り替わらないといった機能や強制的に特定のユーザをアクティブにするといった機能もついています。

詳細は以前まとめた記事があるので是非見てほしい。

去年 4月にリリースした機能ですが、改善が進みかなり負荷を抑えられるところまで来ました。実際に本番で 200 人という規模での会議に使われて安定して利用していただいています。今後はこれで録画機能を実現し他社の WebRTC SFU との差別化を図っていければと考えています。

--

--