WebRTC SFU Sora 2022 年方針
WebRTC SFU Sora を 2015 年 12 月 にリリースしてから、もう 7 年目に入りました。その間に WebRTC を取り巻く環境は大きく変化してきました。それに伴い WebRTC SFU Sora もアップデートを繰り返しています。
WebRTC SFU Sora は今後は耐障害性、輻輳制御や帯域推定といったあまり目には見えない部分ではありますが、ビジネスで WebRTC を利用するには重要な部分を積極的に強化していく方針です。
色々やりたいことを書き出していきます。
耐障害性
今年にリリースした Sora 2021.2.0 にて、クラスター機能を追加しました。これは複数の Sora ノードを 1 クラスターとして構築することで、耐障害性を上げるという機能です。
1 台の Sora ノードがハードウェア障害が起きて落ちたとしても、残りの Sora 側で対応できるような仕組みをです。
録画状態のノード間共有
今は録画状態をクラスター内部で共有できていませんが、2022 年 6 月リリースの Sora では対応予定です。
クラスター向けライセンス
現在 Sora のライセンスは 1 Sora ノード 1 ライセンスと、個別のライセンスをそれぞれの Sora に割り当てるような仕組みになっており、管理が複雑化してしまっています。
そのため、クラスター構築時にライセンスをコピーして利用できる仕組みを追加します。3 ノード Sora クラスターを組む場合でもライセンスファイル自体は 1 つですむようになります。もちろん費用はちゃんと 3 ライセンスかかります。
ディザスタリカバリ (DR)
Sora のクラスターゴールは DR 対応です。複数リージョン間でのクラスター同期を目標とします。
Sora はリアルタイムを売りにしている製品であり、何か障害が起きた際に利用できなくなると、影響範囲がとても大きくなります。
そのため、例えば東京と大阪のそれぞれのデータセンターにクラスターを構築し、クラスター同士での同期を行えるようにして行きます。
とにかく落ちない WebRTC SFU を目指します。
輻輳制御 / 帯域推定
答えがない世界なので、対応したからよしとする部分ではありませんが、できるだけ回線やマシンが不安定になったらビットレートを落とし、安定になったらビットレートを上げるというシンプルな仕組みを追求できればと思います。やれる範囲で色々と試していきます。
リアルタイムメッセージング
2021 年は Sora にとって、音声と映像ではない「データ」をリアルタイムに配信する仕組みを導入した年でもありました。
仕組み的には DataChannel を利用して、PubSub を可能にした仕組みです。さらに DataChannel では足りていない部分も独自拡張でありつつ DataChannel の互換性は失わないという方針で拡張してきました。
リアルタイムメッセージングは VR やゲームといった分野で需要がすでにあります。時雨堂では Unity SDK を公開していることもあり、まずはそこで色々使ってもらえればと考えています。
残念ながら 2021 年内にはリリースできませんでしたが、Sora C++ SDK も来年は積極的に開発を進めて行き、遠隔支援につかってもらいたいと考えています。
2022 年は音声、映像に加えて、データもリアルタイムに扱えるサーバとしてアピールしていく年にできればと思います。
音声出力機能
今までは RTP/RTCP を転送する機能しかありませんでしたが、2021 年の Sora では新しく統計情報を HTTP/2 経由で外部へ出力する機能を追加しました。
2022 年には RTP/RTCP といった扱いにくいいのではなく、簡単に外部サーバが音声や映像を受け取ることができるよう HTTP/2 経由での音声出力機能を追加する予定です。
これによりクラウドなどで Speech to Text を利用し解析後、Sora へ HTTP/2 レスポンスで文字列を返し、そのまま Push 通知で Sora がクライアントまで配信できる仕組みを提供できればと思います。
CPU 利用率削減
Erlang VM を利用している Sora は残念ながら他の言語に比べて性能が良いとは言えません、そのため少しでも負荷を軽くするため「利用されていない映像ストリームや音声ストリーム」は復号しないや、そもそも Erlang VM の暗号処理の性能を上げるなどをやっていければと思います。
音声や映像の前処理
Sora に直接は関係ありませんが、音声のノイズキャンセルやエコーキャンセル、映像の仮想背景、背景ぼかし、高画質化などを実現するライブラリを OSS にて提供していければと思っています。
特に音声のノイズキャンセルは Speech To Text を利用する際にもとても重要になります。また特定環境でのノイズ除去に特化できるようノイズ除去のモデルをプラガブルにできたりしたら良いなと考えています。
WebCodecs / WebTransport
追いかけつつも、見守る感じで行こうと思います。Media over QUIC の方針が定まらない間は、あまり意味が無いと考えています。
ライブラリの開発などは進めて行ければと思います。
End to End Encryption
MLS + SFrame があまり進んでいない感じは否めず、まだ Signal 方式が一般的です。様子を見つつ、一緒に取り組んでくれるお客様を見つけられればと考えています。
録画合成ツール Hisui
Twilio 互換のレイアウト指定機能が入ることにより、大幅なアップデートになります。JSON を利用し自由にレイアウトを指定できるようになります。AV1 対応や、コメント、日付対応などもできればと考えています。
統計コレクター Kohaku
絶賛開発中です。細かい機能を整理して、リリースに向けて準備中です。2022 年にはリリースできればと思います。
SDP 再利用
マルチストリーム時に無限に太っていく SDP の解決をしていく予定です。再利用をうまくすることで問題解決ができるという認識です。
AV1 / VP9 サイマルキャスト対応
まだ libwebrtc 側が対応していないこともあり、手は出せていません。AV1 の HWA を載せた NVIDIA Jetson Orin がリリースされることもあり、AV1 の年になりそうです。
Sora DevTools
音声のノイズ除去や映像の仮想背景機能を搭載予定です。
testrtc
Sora に接続が可能かどうかを気軽に調べることができる testrtc 的なサービスを提供したいと考えています。
Sora SaaS
2022 年には提供開始します。お待ちください。
Sora SDK
Sora Unity SDK
できるかわかりませんが、HoloLens 2 への対応を予定しています。また Linux への対応も検討できればと思います。
Sora が VR/XR で利用頂くことが増えた事もありそちらへの投資です。
Sora iOS / Andorid SDK
Sora への追従を進めています。それが落ち着いたタイミングでリファクタリングやテスト充実などを進めてできればと思います。
質を上げていくというのが今後に向けてのミッションです。
また、音声のノイズ除去や仮想背景なども組み込めるようにしたいと考えています。