時雨堂製品アップデート
去年は毎月いろいろ書いてみていましたが、今年は不定期に書きたくなったら書くという感じで書いていこうと思います。
WebRTC SFU Sora
次のリリースは 2022 年 6 月を予定しています。WebRTC 関連の機能は一通りそろったこともあり、Sora 独自機能やミドルウェア機能を充実させていく予定です。
次のリリースに含まれる機能について紹介していきます。大きめの機能はあまり入らず改善系の機能がほとんどです。
Sora 開発版ドキュメント
開発版のドキュメントを公開しています。
録画機能のクラスター対応
録画の状態をクラスター全体で共有します。どこかのノードに障害があった場合でもそのチャネルの録画情報を維持し続けます。
再接続した際に別のノードに接続した場合でも録画が開始されます。
サイマルキャスト無効でのスポットライト機能の利用
スポットライト機能は直近で話をしていない人の音声を送らず、映像も画質を下げるといった仕組みです。
詳細は以下をご確認ください。
今まで配信側はサイマルキャスト対応が前提でしたが、サイマルキャストなしでも動作するようになりました。
クラスターノードライセンスの導入
Sora のライセンスは 1 起動 1 ライセンス必要です。ただこの場合だとクラスターを組むときにいろいろと面倒になります。そのためクラスター構築時に同じライセンスファイルを利用できるようにするクラスターノードライセンスを導入しました。
このライセンスを使うとクラスターを組む際に、複数の Sora へ適用するライセンスファイルが一つですむようになります。
復号処理の削減
スポットライト機能やサイマルキャスト機能の利用時に、視聴されていない音声と映像はクライアントから受信した時点で復号せずに破棄する仕組みを追加しました。
この仕組みを導入することで暗号処理のボトルネックを減らすことに成功しました。
bundle_id の導入
bundle_id という概念を導入します。これはクライアントからの認証成功時に指定できます。
この値を指定したクライアントどうしはそのクライアントからの音声や映像を受信しなくなります。
たとえば送受信で接続している際に、画面共有で配信された映像を受信したくないといった場合に利用することを想定しています。
ログの改善
sora.log や intenerl.log に利用されている時間表記を RFC3339 に統一しました。また、これら二つのログを JSON で出力できるようにする予定です。
スポットライト機能利用時のアクティブビデオ数の制限
スポットライト機能は、直近に話をしていた人のみの音声を配信し、映像の画質を上げ、話をしていない人の音声は止め、画質を下げるといった仕組みです。
このスポットライト機能に、さらに「スポットライトを適用するクライアント数」を制限する仕組みを追加する予定です。
20 人参加している場合にアクティブビデオ数を 5 にした場合は、スポットライトが当たる最大の値が 5 となります。
つまり画面には 5 人分の配信しかサーバーからは送られません。残りの 15 人分の配信はサーバーから送らなくなります。
新たに音声を発してスポットライトが当たる人がいれば、5 人の中から誰かが外れて、その新たに音声を発した人が代わりに加わるといった仕組みです。
この仕組みを利用することで、よりクライアントとサーバーの負荷を下げることが可能になります。
統計機能の充実
DataChannel の再送回数や破棄回数など、通常では取得しづらい統計情報や、復号せずに破棄した数、おかしなパケットを受け取った数などを統計情報として取得できるようにしました。
パケット処理の最適化
パケットのエンコードとデコード処理を見直し、計測し、改善しました。
Sora JavaScript SDK
バグ修正と改善系のみで、今のところ Sora への追従のみです。
Sora DevTools
大規模リファクタリングしています。さらに細かい機能を追加したりしています。より検証などで使いやすくしていく機能を搭載予定です。
Sora Prebuilt UI
スポットライト機能を利用したシンプルなビデオ会議システムです。Sora Labo や Tobi への組み込み用に開発中です。
Sora E2EE
ライブラリはアップデートしていますが、少し停滞中です。他のことにリソースを回しています。MLS とか SFrame (SPacket) などは情報だけは追いかけています。
Sora iOS SDK
Sora 追従がメインです。バグ修正、改善、リファクタリングも進めてます。サンプルの見直しなども進めています。
Sora Android SDK
Sora 追従がメインです。バグ修正、改善、リファクタリングも進めてます。サンプルの見直しなども進めています。
Sora Unity SDK
Sora 追従がメインです。バグ修正、改善、リファクタリングも進めてます。企業からの支援を受けて Hololens 2 対応をお試しプロジェクトとして進めています。
デバイスを一切つかまない仕組みなども対応予定です。
Sora C++ SDK
本来は去年進める予定だったのですが、いろいろリソースが足りておらず回っておりませんでしたが 4 月から進めていきます。まずは動くものを提供して、というところからスタート予定です。
Media Processors
音声や映像をエッジ側で処理するライブラリで、まずはブラウザレベルで進めています。
将来的には明るさ調整や、AGC なども仕組みとしては提供したいなと考えています。ただ、時雨堂は前処理に強いわけではないので、簡単に使える仕組みを提供するというのに特化していきます。
Zakuro
顧客からの要望を反映したりしています。Sora 追従もしていきます。統計情報をうまく出力して可視化できればと考えています。
Hisui
ダイキン工業様に依頼いただき、レイアウト機能を開発しました。
機能としては一段落しており、今後は AV1 対応などを進めていく予定です。
Kohaku
Sora 経由でクライアントの統計情報を集計するツールですが、今後は Sora 側からみたクライアント統計情報を Kohaku 経由で TSDB (タイムシリーズデータベース) に追加する仕組みを用意する予定です。
Suzu (仮)
顧客の要望として Sora から出力した音声をテキストとして画面に表示したいという要望があり、現在 GCP / AWS のサービスを利用して、音声からテキストへの変換を Sora 経由のパケットを処理して実現するゲートウェイをお試しで開発中です。まだお試し実装なのでなんともですが、もしうまくいきそうな場合はオープンソースとして公開予定です。
sora_exporter
Sora の GetStatsReport API を OpenMetrics 形式に変換して公開する exporter です。時雨堂では VictoriaMetrics 経由で利用しています。
https://github.com/johejo/sora_exporter johejo さんが公開されていたのを fork していろいろいじって公開しています。
そのうちバージョン 2022.1.0 を公開予定です。
WebRTC Native Client Momo
バグ修正や Ayame 関連のリライトを予定しています。基本的には libwebrtc 追従と、もしリリースされたら NVIDIA Jetson Orin 対応が主なターゲットです。
今のところ Sora のメッセージングに対応する予定はありません。
WebRTC Signaling Server Ayame
仕様変更は問題が起きない限りは行いません。依存ライブラリのアップデートのみ行っています。
WebRTC Build
今のところは libwebrtc への追従はできていますが、協力者募集中です。
WebRTC SFU Sora as a Service Tobi
Sora をマネージドして提供するサービスです。転送量課金は行わず、接続数と帯域で課金する使い放題サービスです。
おまけ機能的なのは提供せず、あくまで Sora をマネージドとして提供するサービスとして特化するため「Sora を運用しなくていい」だけです。
ほかに Hisui / Zakuro / Kohaku / Suzu (仮) を従量課金で利用できる仕組みを提供予定です。
夏前までには提供予定です。
https://gist.github.com/voluntas/ef9b064e5832a784e0b5e654fee832a8
Low Latency Streaming Server Shion (仮)
新しくお試しで作っている片方向特化型の低遅延配信サーバーです。Sora のようなクラスターの仕組みとは別で Edge/Origin の多段構成で大規模な低遅延方配信を実現する予定です。
配信プロトコルは Twitch が採用している Warp と WebTransport を採用します。
とりあえず HTTP/3 周りは Rust で、それ以外は Erlang でというハイブリッド構成で開発し、パッケージ製品や SaaS として提供予定です。
Ayame Labo
余力があれば .app ドメインへの移行を予定していますが、今のところはこのままでいきます。
Sora Labo
Tobi に載せる機能を先に載せてお試しする場所です。Tobi ステージングのような場所という使い方をしています。Sora の最新の機能を試せる場所でもあります。
直近 30 日で 2000 分まで自由に利用できるようになりましたので、いろいろ触ってみてください。