機能・特長

片方向の配信

1 : 多の片方向配信

Sora では、1:多の大規模な配信が可能です。最大で 1:1000 程度までの配信を想定しており、例えば学校や塾の授業、企業のセミナーや研修などで利用できます。

WebRTC SFU は、P2P ではなく、音声や映像を「サーバー (SFU) 経由」で配信する技術であり、サーバー (SFU)、すなわち Sora が、配信者に代わって音声や映像を視聴者に配信してくれる仕組みです。
そのため、視聴者の数がどんなに増えても配信者の通信相手は Sora のみであり、使用する端末や回線に高い負荷がかかることなく、一度に多くの視聴者へ音声や映像をリアルタイムに配信できます。

遅延は、ネットワークなどの環境に依存しますが、基本的に 1 秒未満です。

WebRTC (P2P) および WebRTC SFU については、こちらも合わせてご確認ください。

双方向の配信

Sora では、1:1 の双方向配信や、多:多の双方向配信が可能です。

1 : 1 の双方向配信
映像付きのカスタマーサポートを提供するコールセンターや、遠隔地の医師と患者をつないで行う医療相談やオンライン診療などに利用できます。
多 : 多の双方向配信
本社・支社・在宅勤務の社員など、複数拠点をつないで行う会議に利用できます。最大で 12 名程度までを想定しています。
多 : 多の双方向配信 + 視聴のみ
複数拠点をつないでパネルディスカッションを行う場合、「配信も視聴もできるパネラー」と「視聴のみできる参加者」を組み合わせることも可能です。

マルチストリーム

※ この機能は Chrome、Firefox、Safari、Edge で利用可能です。

マルチストリームとは一つのピアコネクションで複数の音声や映像を動的に追加したり削除したりする仕組みです。

マルチストリームでは role に sendrecv (配信と視聴)、sendonly (配信のみ)、recvonly (視聴のみ) のいずれかを指定できます。例えば、右図のようなオンラインセミナーでは、講師および受講生は sendrecv (配信と視聴)、講師による画面共有は sendonly (配信のみ)、セミナーの見学者は recvonly (視聴のみ) を指定しています。

また、Sora では「同時接続数」によってライセンス料金が異なりますが、このマルチストリームを使うことで、同時接続数を節約することが可能です。この図の場合、Sora の同時接続数は「4」となります。

サイマルキャスト機能

※ この機能は実験的機能として提供していましたが、2022 年 6 月リリースの Sora 2022.1.0 より正式な機能として提供しています。

サイマルキャストとは、配信者が 1 つの接続だけで複数種類のエンコードした映像を配信できる技術です。

例えば、配信者は 1 つの接続で複数の画質の映像を配信することができます。
サイマルキャストが無い頃の WebRTC SFU では、配信者はすべての視聴者に対して一種類の画質の映像しか送れませんでした。 そのため、高画質の映像を視聴できるネットワーク環境の A さんに対しても、低画質の映像しか視聴できないネットワーク環境の B さんに対しても、同じ画質の映像しか送ることができず、結果として B さんは視聴できないなどの問題が発生するケースがありました。

Sora では、その後登場したサイマルキャストに対応し、配信者が 1 つの映像を、「高」「中」「低」最大 3 種類の画質で Sora に配信できるようにしています。これにより、視聴者は自身のネットワーク環境に合わせてその 3 種類の画質のどの映像を受信するか選択でき、視聴の途中で動的に画質を切り替えることも可能です。

また、サイマルキャストのエンコーディングパラメータをカスタマイズすることで、上記のような画質の指定以外にも、最大 3 種類のエンコードした映像を送れるようになりました。たとえば「解像度もフレームレートもとても低い」「解像度は高いがフレームレートは低い」という 2 種類の映像を配信する、といった設定も可能です。

スポットライト機能

※ この機能は実験的機能として提供していましたが、2022 年 6 月リリースの Sora 2022.1.0 より正式な機能として提供しています。
※ この機能は Chrome、Edge、Safari で利用できます。

WebRTC SFU を利用して 20 名で会議を行う場合、各参加者は自分以外の 19 名の音声と映像を常に受信し続ける必要があります。また、WebRTC SFU サーバーも、常に 20 名分の音声や映像を受信/配信し続ける必要があります。

ところが実際は 20 名の会議でも、ひとつのトピックに対して発言している人はせいぜい 2〜3 名で、映像も常に参加者全員のものを高画質で配信しなくとも、その時点で発言している人だけの音声と映像がクリアであれば十分というケースも多くあります。

そこで、Sora では発言中の参加者についてはその人の音声と高画質の映像を配信し、それ以外の発言していない参加者についてはその人の低画質の映像のみを配信する、といったように会議に合わせた配信ができるうようにしました。

この機能は、参加者が発言するとその人の音声と高画質の映像が配信されてスポットライトが当たるイメージから、スポットライト機能と名付けています。

参加者が発言してから高画質に切り替わるまでの秒数は自由に設定できます。例えば参加者が発言すると、音声はすぐに配信され、映像は「2 秒」経ってから高画質に切り替わる、といった設定が可能です。
これにより、参加者が短いあいづちや物音を発するたびにすぐ高画質の映像が配信される場合と比べ、クライアントやサーバーのパケット転送量、端末上での画面表示を切り変えるコストをより低く抑えながら、大人数で会議することができます。

スポットライト機能は無料の評価版で実際にお試しいただくことが可能です。ご希望の方はお問い合わせください。

録音 / 録画

Sora では、配信している音声や映像を録音・録画して保存することが可能です。
配信されている映像を変換することなくそのまま保存するため、サーバーへ負荷が掛かることがなく、録画が完了すればすぐにブラウザで確認することができます。
また、サイマルキャスト機能やスポットライト機能を利用した際の録画にも対応しています。

長時間の録画が必要な場合は、録画ファイルを分割して出力することができます。
・1 つのファイルとして録画する
・1 つのファイルと、指定した時間ごとに分割したファイルとして録画する
・分割したファイルとして録画する
いずれのパターンも可能です。

Sora で生成される録画ファイルは WebM 形式です。また、録画ファイルは Sora に接続しているクライアントごとに個別に生成されます。それぞれの録画ファイルを合成する必要がある場合は、専用の録画合成ツール「Recording Composition Tool Hisui」をオープンソースとして公開していますので、必要に合わせてご利用ください。

シグナリング機能

Sora はシグナリング機能を内蔵しています。これから配信を行う WebRTC クライアントは、視聴する WebRTC クライアントと直接通信するのではなく、Sora のみと通信を行えばよいため、経路の確立でつまずくことがありません。
Sora ではシグナリングに WebSocket の他、DataChannel も利用しています。初めに WebRTC クライアントとの接続を確立する際は必ず WebSocket を利用し、その後シグナリングを WebSocket から DataChannel に切り替えることも可能です。

1. WebSocket のシグナリング
Sora では、初めに WebRTC クライアントとの接続を確立する際には必ず WebSocket を利用してシグナリングを行います。
2. WebSocket と DataChannel ハイブリッドのシグナリング
Sora では、安定した接続を維持するために、WebRTC の接続が確立したら、その後はシグナリングを WebSocket から DataChannel へ切り替えることができます。WebSocket のみでシグナリングを行う場合、WebRTC クライアントと Sora の間の通信が切断された際に早く気付けるという強みがある一方で、Sora ではシグナリング以外の様々なデータのやり取りにも WebSocket を利用しているため、不安定な回線などではパケットが混雑して詰まってしまい、通信が終了してしまう可能性があります。
DataChannel は WebSocket とは異なり、シグナリングやその他のデータを並列で運搬することができるため、パケットが詰まることなく、より安定した接続が維持できます。ただし、その一方で DataChannel を利用したやり取りは UDP ベースのため、WebRTC クライアントと Sora の間の通信が切断された際に、気付くのには時間がかかります。そのため、例えばオンライン会議の参加者が「会議から退出した」などの理由で接続が終了した場合にでもすぐに気付けるよう、最初の接続の確立に利用した WebSocket を、そのまま切断検知用として残しておくことができます。
安定した接続の維持と、切断時の素早い検知がともに実現できるため、当社では WebSocket と DataChannel ハイブリッドのシグナリングを推奨しています。
3. DataChannel のみのシグナリング
Sora では、WebRTC の接続が確立したら、その後はシグナリングを「DataChannel のみ」に切り替えることも可能です。最初の接続以外では WebSocket を一切使用しなくすることで、より安定した接続の維持が期待できます。
一方で、DataChannel のみのシグナリングは、WebRTC クライントと Sora の間の通信が切断された際に、気付くのには時間がかかるため、「DataChannel」のみのシグナリングは、切断の検知が必ずしも重要ではない場合にのみおすすめしています。

クラスター機能

※ この機能を利用するには、クラスターを組むノードの数に合わせたライセンス契約が必要です。

Sora はクラスター機能を保有しています。Sora そのものはダウンしにくい製品ですが、クラウドやハードに障害があった場合を想定し、複数の Sora でクラスターを組めるようになっています。また、Sora のクラスター機能では、障害が起きたノードを自動的に無効にし、障害から復旧したタイミングで自動的に再度クラスターに参加させることが可能です。

接続時のクライアント SDK の挙動
クライアント SDK はクラスター構成を取るすべてのノードに対して WebScoket の確立を試み、その後、一番早く確立したノードと通信を行います。
リダイレクト機能
クラスター機能を利用すると、接続割合が少ないノードに割り当ててロードバランスさせたり、チャネル ID ごとに同じノードに接続させたりすることができます。

チャネルに初めてクライアントが接続する場合

ある特定のチャネルに初めてのクライアントが接続する場合、ロードバランスしてそのクライアントを接続割合が少ないノードに割り当てます。

接続済みのクライアントがいるチャネルに別のクライアントが接続する場合

ある特定のチャネルに接続しているクライアントがすでにいる場合、リダイレクトして 2 人目以降のクライアントを 1 人目のクライアントが接続している同じノードに割り当てます。

メッセージング機能

※ この機能は実験的機能として提供中です。

WebRTC では、その機能の一つとして DataChannel があり、リアルタイムにデータの送受信を行うことができます。Sora のメッセージング機能はこの DataChannel を利用し、そこに独自の仕様を追加して実現しています。

Sora の メッセージング機能では、「ラベル」と「方向」の 2 つの要素を利用します。「ラベル」は、# で始まる文字列で、メッセージにこのラベルを付けることにより、特定のメッセージのみを送受信することができます。「方向」は、sendrecv / sendonly / recvonly のいずれかで、それぞれ (送信 + 受信) / (送信のみ) / (受信のみ) を指定します。

TURN 機能

Sora は TURN 機能を内蔵しています。そのため WebRTC による通信が NAT を越えられない環境でも、TURN サーバーを別に用意していただく必要がありません。TURN 機能が不要な場合は、設定で無効にすることも可能です。

4K 配信

Sora は 4K 配信に対応しています。WebRTC での映像の配信では、ブラウザによる 4K 配信に必要な高ビットレートの制限や、高いビットレートでの配信時の再送制御の影響により、4K から解像度が引き下げられてしまう場合があります。
Sora では、クライアントに対して、ビットレートの上限値を引き上げるように通知することで、最大 15Mbps という高いビットレートの映像の配信を可能にしています。また、高いビットレートの映像を配信する場合でも、解像度が下がらないような再送制御の仕組みも搭載しています。
また、WebRTC Native Client Momo を合わせてご利用いただくことで、4K 配信を手軽に検証していただくことが可能です。

E2EE 対応

Sora では、Sora を利用する際に、E2EE (End-to-End Encryption) をブラウザで実現するためのライブラリを、オープンソースライセンス Apache License 2.0 として公開しています。
E2EE の鍵合意やメッセージ暗号には Signal で利用されている Signal プロトコルを採用しています。また、音声や映像の暗号には Google Duo で利用されている SFrame を採用しています。
詳細は WebRTC SFU Sora 向け E2EE ライブラリをご確認ください。

クライアント SDK

Sora では、クライアント SDK を、オープンソースライセンス Apache License 2.0 として公開しています。
Sora の SDK は、WebRTC の複雑な接続処理を肩代わりする API を提供し、Sora を利用するアプリケーションを最小限のソースコードで実装できます。以下の各 SDK ともに最新の WebRTC に追従しています。詳細はそれぞれの URL をご確認ください。
※ SDK は、Sora をご利用中のお客様であっても、サポートの対象外としています。お問い合わせをいただく場合は、Discord コミュニティに参加していただくようお願いしています。

JavaScript SDK
iOS SDK
Android SDK
Unity SDK
C++ SDK

アプリケーション連携

WebRTC を使ってサービスを提供する事業者にとって、配信者や視聴者を認証したり、利用時間を制限したりといった管理は必要不可欠です。
Sora は、アプリケーションと連携するためのウェブフックを提供し、認証や接続・切断などの判断をアプリケーション側に任せる仕組みを採用しています。

フルスクラッチ開発

Sora は時雨堂がフルスクラッチで開発したパッケージ製品です。また、WebRTC 関連のライブラリも全て自社で開発をしています。
2014 年から途切れることなく開発・機能追加を行っており、WebRTC に関する知識やノウハウ、最新情報への追従の速さについてはトップクラスであると自負しています。

詳細なドキュメント

Sora では、ドキュメントにも力を入れています。自社でフルスクラッチで開発しているからこそ実現できる詳細なドキュメントを強みの一つとしています。 導入事例でご紹介している多くのお客様からも、Sora の導入を決めた理由として高い評価をいただいています。

Sora のドキュメントはこちらからどなたでもご確認いただけます。

メーカーサポート

ドキュメントと合わせて、Sora では、自社でフルスクラッチで開発しているからこそ実現できる迅速で確実なサポートを強みの一つとしています。 導入事例でご紹介している多くのお客様からも、Sora の導入を決めた理由として高い評価をいただいています。

最新情報への追従
目には見えにくい部分ですが、WebRTC を使ったサービスを安定して提供し続けて行くには、Chrome や Firefox、Safari といったブラウザのアップデート情報をいち早くキャッチし、迅速に対応することが極めて重要です。
Sora では常にブラウザの更新情報に注目し、製品のバージョンアップや適切なサポートサービスに反映させています。
バージョンアップ
Sora のライセンスを契約中のお客様には無料で最新バージョンを提供しています。
  • 機能追加や改善などのアップデートは、半年ごとを目安に行っています。
  • 動作に問題のある場合のアップデートは、必要なタイミングで都度行っています。

その他の特長

統計エクスポーター機能
Sora 経由で、統計情報コレクターサーバーに向けて統計情報を出力することができます。
Sora 専用の統計コレクター「Kohaku」も合わせてご確認ください。
外部ツールとの連携
Sora の RTP 転送 API を使用することで、WebRTC で配信されている音声や映像の RTP パケットを転送できます。
この転送されてきた RTP パケットを利用することで、例えば、FFmpeg のような外部のツールで RTP パケットを受信して、HLS や RTMP 等での配信に使用することが可能です。
再送制御
Sora では映像の遅延や欠落に対して、きめ細かな再送制御ロジックを組み合わせて実行します。
これにより回線が不安定な場合にも、映像の送受信を円滑に行い、快適なコミュニケーションを実現します。
前方誤り訂正
Sora では映像の重要なフレームの欠落に対して、前方誤り訂正を利用し、再送をすることなく欠落を回復します。
これにより、回線が不安定な場合でも映像を安定的に配信することを実現しています。
不安定レベルの通知
配信者のネットワーク環境が不安定な場合は、配信している映像が乱れたり音声が途切れたりするなどの問題が起こります。このような問題が起こった場合に、配信者は視聴者から指摘されるまで問題に気付かない可能性があります。
Sora は、配信者の端末から受け取る映像パケットにより、配信者のネットワーク回線がどの程度不安定かを判断し、配信者自身に通知する機能を搭載しています。不安定の度合いは 0 から 3 までの 4 段階で通知されます。数字が小さいほど安定しており、0 が一番安定、3 が一番不安定です。配信者はその不安定レベルを参考にしてビットレートを調整することで、安定した配信を行うことができます。
負荷の削減
Sora ではサイマルキャスト機能やスポットライト機能を利用する際に、誰も視聴していないストリームは復号処理を行わないことでサーバーの負荷を減らすことができます。また、クライアントの負荷を減らすために、特定のクライアントからの配信は受信しないように設定することが可能です。