Sora Flutter SDK 概要¶
Sora Flutter SDK は 株式会社時雨堂 の WebRTC SFU Sora の Flutter 専用クライアントフレームワークです。
iOS 、 iPadOS 、 macOS 、 Android 、 Windows 、 Linux のクロスプラットフォームに対応しており、 WebRTC の複雑な接続処理を肩代わりする Dart API を提供します。
各プラットフォームで共通のソースコードを用いて、 Sora を利用するアプリケーションを最小限の実装で開発できます。
プラットフォーム¶
プラットフォーム |
対応状況 |
|---|---|
|
iOS 16 以降に対応 |
|
iPadOS 16 以降に対応 |
|
macOS 15 以降に対応 |
|
Android 10 (API 29) 以降に対応 |
|
実験的対応 (Windows 10 20H2 以降 (x86_64)) |
|
実験的対応 (Ubuntu 24.04 (x86_64)) |
ブラウザ |
今後対応予定 |
ここでの対応状況は、各プラットフォームで Sora Flutter SDK を利用したアプリケーションをビルドして実行できることを示します。
機能ごとの対応範囲や利用条件は、使用するプラットフォームと機能の説明をご確認ください。
主な仕様・特徴¶
ピア接続処理¶
SoraConnection を介して Sora との接続を確立し、メディアチャネルの通信を管理します。
タイムアウト設定や接続状態の監視、切断後の再接続にも対応しています。
メディアデバイス管理¶
MediaDevices API により、各プラットフォームのカメラ・マイクを統一的なインターフェースで扱えます。
音声入力デバイス、音声出力デバイス、映像入力デバイスの列挙や、 getUserMedia() による送信用 MediaStream の生成が可能です。
映像レンダリング¶
ローカル映像およびリモート映像のレンダリングは Flutter の Texture ウィジェットで行います。
LocalVideoTrack や SoraTrackEvent から取得した textureId を Texture に渡すだけで、プラットフォームを問わず統一された描画が得られます。
音声再生¶
受信音声は SDK と各プラットフォームの標準経路で自動的に再生されます。
アプリケーション側で音声再生用の Widget やプレーヤーを別途用意する必要はありません。
受信音声トラックの追加または削除の検知は SoraConnection.events で行えます。
DataChannel 経由のシグナリング¶
WebSocket によるシグナリングに加えて、 DataChannel 経由のシグナリングに対応しています。 接続開始時は WebSocket を使い、 Sora 側の条件が揃うと DataChannel ベースのシグナリングへ切り替わります。
リアルタイムメッセージング¶
DataChannel を利用したリアルタイムメッセージング機能により、同一チャネルに参加しているクライアント同士でメッセージの送受信ができます。 メッセージにはラベルを指定でき、同一チャネル内で複数種類のメッセージを扱えます。
RPC 機能¶
DataChannel 経由で Sora の一部 HTTP API をクライアント側から呼び出せます。
接続確立後に SoraConnection.rpc() で利用可能なメソッドを呼び出し、サイマルキャストの視聴画質変更などが行えます。
外部映像入力¶
SDK 管理のカメラ入力の代わりに、アプリケーション側で用意した任意の映像フレームを送信できます。 画面キャプチャ、動画ファイル再生、合成映像、テストパターンなど、カメラ以外の映像ソースを扱う場合に利用します。
イベント通知¶
SoraConnection.events で接続状態の変化、リモートトラックの追加/削除、シグナリング通知、DataChannel メッセージ、タイムアウトなどを統合的に購読できます。
SoraConnection.debugEvents では構造化されたログとタイムラインを購読でき、デバッグに役立ちます。
非対応の機能¶
次の機能は現時点では非対応です。
- 音声のステレオ送受信 ( Sora の実験的機能である Opus の詳細パラメータで
stereoを指定する場合を除く) - 端末のカメラ・マイクのプライバシーインジケーターを消灯させるミュート
- リモート音声ごとの再生音量変更
- 再生先スピーカーの明示的な切り替え
TURN機能を無効にした接続 (turn = false)- 自己署名証明書
ソースコード¶
開発者ツール¶
問い合わせについて¶
Sora Flutter SDK の質問などについては Discord の #sora-sdk-faq チャンネルにお願いします。
ただし、 Sora のライセンス契約の有無に関わらず、応答時間と問題の解決を保証しませんのでご了承ください。
Sora Flutter SDK に対する有償のサポートについては提供しておりません。
またビルドやパッケージングに関する質問に対しては、コミュニティ管理者は回答は行いません。