Sora Flutter SDK 概要

Sora Flutter SDK は 株式会社時雨堂 の WebRTC SFU Sora の Flutter 専用クライアントフレームワークです。

iOS 、 iPadOS 、 macOS 、 Android 、 Windows 、 Linux のクロスプラットフォームに対応しており、 WebRTC の複雑な接続処理を肩代わりする Dart API を提供します。 各プラットフォームで共通のソースコードを用いて、 Sora を利用するアプリケーションを最小限の実装で開発できます。

プラットフォーム

プラットフォーム

対応状況

iOS

iOS 16 以降に対応

iPadOS

iPadOS 16 以降に対応

macOS

macOS 15 以降に対応

Android

Android 10 (API 29) 以降に対応

Windows

実験的対応 (Windows 10 20H2 以降 (x86_64))

Linux

実験的対応 (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 のライセンス契約の有無に関わらず、応答時間と問題の解決を保証しませんのでご了承ください。

https://discord.gg/shiguredo

Sora Flutter SDK に対する有償のサポートについては提供しておりません。

またビルドやパッケージングに関する質問に対しては、コミュニティ管理者は回答は行いません。