リリースノート

CHANGE

後方互換性のない変更

UPDATE

後方互換性がある変更

ADD

後方互換性がある追加

FIX

バグ修正

2026.1.0

日時:

2026-03-02

対応 Sora:

2025.2.0 以降

対応 Android:

5.0 以降

対応 libwebrtc:

144.7559.2.2

ハイライト

  • クライアントの WebRTC 統計情報を取得するための getStats メソッドを SoraMediaChannel に追加しました
  • CameraVideoCapturer を Sora Android SDK 内で生成し自動制御する機能を追加しました
  • 音声のミュート切り替えを行う setAudioHardMutesetAudioSoftMuteSoraMediaChannel に追加しました
    • Sora Android SDK 2025.3.0 ではハードミュートには setAudioRecordingPaused 、ソフトミュートには AudioTrack.setEnabled を使う必要がありましたが、統一された API になりました
    • 使い方は ミュート機能 をご確認ください
  • 映像のミュート切り替えを行う setVideoHardMutesetVideoSoftMuteSoraMediaChannel に追加しました
    • Sora Android SDK 2025.3.0 ではハードミュートには org.webrtc.CameraVideoCapturerstartCapture()stopCapture() 、ソフトミュートには VideoTrack.setEnabled を使う必要がありましたが、統一された API になりました
    • 使い方は ミュート機能 をご確認ください
  • RPC 機能を追加しました
    • SoraMediaChannel.rpc で JSON-RPC 2.0 over DataChannel による API 呼び出しができます
    • 詳細は RPC 機能 をご確認ください

破壊的変更

  • SoraMediaOption.enableSimulcast(rid: SoraVideoOption.SimulcastRid? = null) のデフォルト値を削除して SoraMediaOption.enableSimulcast(rid: SoraVideoOption.SimulcastRid?) に変更しました
    • enableSimulcast(null) としていた場合は、新旧どちらの enableSimulcast が利用されるかコンパイラが決定できないため以下の対応が必要です
      • 明示的に enableSimulcast(requestRid = null) のように名前付き引数を指定する
      • enableSimulcast() と引数を指定しないようにする
        • 移行先の enableSimulcast(requestRid: SoraVideoOption.SimulcastRequestRid? = null) が利用されますが、動作に変更はありません
    • 以下の場合はコンパイラによって自動的に解決されるので移行作業は不要です
      • enableSimulcast(SoraVideoOption.SimulcastRid.R1) のように引数ありの場合は従来の SoraMediaOption.enableSimulcast(rid: SoraVideoOption.SimulcastRid?) に解決されます
      • enableSimulcast() のように引数なしの場合は移行先の enableSimulcast(requestRid: SoraVideoOption.SimulcastRequestRid? = null) に解決されます

非推奨情報

  • SoraMediaChannel.setAudioRecordingPaused を非推奨にしました
    • 移行先は SoraMediaChannel.setAudioHardMute です
  • SoraMediaOption.enableSimulcast(rid: SoraVideoOption.SimulcastRid?) を非推奨にしました
    • 2027 年 12 月リリースの Sora にて、シグナリング接続時の simulcast_rid が廃止予定であるため非推奨にしました
    • 移行先は SoraMediaOption.enableSimulcast(requestRid: SoraVideoOption.SimulcastRequestRid? = null) です

変更履歴

  • [CHANGE] SoraMediaOption.enableSimulcast(rid: SoraVideoOption.SimulcastRid? = null) のデフォルト値を削除して SoraMediaOption.enableSimulcast(rid: SoraVideoOption.SimulcastRid?) に変更しました
    • 同時に SoraMediaOption.enableSimulcast(rid: SoraVideoOption.SimulcastRid?) を非推奨化しました。今後は enableSimulcast(requestRid: SoraVideoOption.SimulcastRequestRid? = null) を利用してください
  • [UPDATE] libwebrtc を 144.7559.2.2 にアップデートしました
  • [UPDATE] SoraMediaChannel.setAudioRecordingPaused を非推奨にしました
  • [UPDATE] SoraMediaOption.enableVideoUpstream(capturer, eglContext) の引数に cameraConfig: SoraCameraConfig? = null を追加しました
    • SoraMediaChannel.setVideoHardMute などの VideoCapturer を操作する API を利用する場合は cameraConfig を設定する必要があります
  • [ADD] SoraMediaOptionenableSimulcast(requestRid: SoraVideoOption.SimulcastRequestRid? = null) メソッドを追加しました
    • SimulcastRequestRid は NONER0R1R2 を指定できます
  • [ADD] SoraMediaOptionenableVideoUpstream(eglContext, cameraConfig) を追加しました
    • Sora Android SDK の内部で CameraVideoCapturer を生成させる場合はこちらのメソッドを使います
  • [ADD] SoraMediaChannelgetStats メソッドを追加しました
  • [ADD] SoraMediaChannel に音声ミュート用の setAudioHardMutesetAudioSoftMute メソッドを追加しました
  • [ADD] SoraMediaChannel に映像ミュート用の setVideoHardMutesetVideoSoftMute メソッドを追加しました
  • [ADD] SoraMediaChannelswitchCamerachangeCaptureFormat メソッドを追加しました
  • [ADD] SoraMediaOptionSoraCameraConfig クラスを追加しました
  • [ADD] SoraAudioOptioninitialAudioHardMute を追加しました
  • [ADD] SoraVideoOptionCaptureType 列挙型を追加しました
  • [ADD] SoraVideoOptionSimulcastRequestRid 列挙型を追加しました
  • [ADD] RPC 機能を追加しました

2025.3.0

日時:

2025-11-11

対応 Sora:

2025.1.0 以降

対応 Android:

5.0 以降

対応 libwebrtc:

142.7444.2.1

ハイライト

  • SoraMediaChannel に、音声ハードミュートを有効にする setAudioRecordingPaused を追加しました
    • Android 端末のプライバシーインジケーターを消灯できる音声ミュートを実装できるようになりました
    • 詳細は ミュート機能 をご確認ください
  • 音声データを音声トラックごとにコールバックで受け取るためのインターフェースである AudioTrackSink を追加しました
    • 送受信中の音声を音声データとして取得できるようになりました
    • 詳細は 音声データ取得機能 をご確認ください

変更履歴

  • [UPDATE] libwebrtc を 142.7444.2.1 にアップデートしました
  • [UPDATE] Sora Android SDK のビルドで利用する Kotlin バージョンを 2.0.20 にアップデートしました
  • [ADD] SoraMediaChannelsetAudioRecordingPaused を追加しました
  • [ADD] 音声データを音声トラックごとにコールバックで受け取るためのインターフェースである AudioTrackSink を追加しました
  • [ADD] AudioTrack に AudioTrackSink を関連付けるためのメソッドを追加しました
    • addSink
      • AudioTrack と AudioTrackSink を関連付けるためのメソッドです
    • removeSink
      • AudioTrack と AudioTrackSink の関連付けを解除するためのメソッドです

2025.2.0

日時:

2025-09-17

対応 Sora:

2025.1.0 以降

対応 Android:

5.0 以降

対応 libwebrtc:

m138.7204.0.5

ハイライト

  • SoraMediaChannel.Listener に、Sora から切断された際のステータスコードと理由を取得できる onClose(SoraMediaChannel, SoraCloseEvent) を追加しました

破壊的変更

非推奨情報

変更履歴

  • [CHANGE] CameraCapturerFactory 初期化時の引数 fixedResolution を廃止しました
    • これまでは CameraCapturerFactory.create の引数 fixedResolution に true を指定することにより送信する映像の解像度維持をすることができていましたが、この仕様を廃止しました。
    • 代替の機能として、SoraMediaOption.degradationPreference を追加しました
  • [CHANGE] connect メッセージの multistream を自動で true に設定する仕様を廃止しました
    • SoraMediaOption.enableSpotlight を設定すると、内部で multistream を true に設定していましたが、この仕様を廃止しました
    • 以下の設定の組み合わに応じて自動で multistream を true に設定していましたが、この仕様を廃止しました
      • enableAudioDownstream
      • enableVideoDownstream
      • enableAudioUpstream
      • enableVideoUpstream
  • [CHANGE] SignalingChannelImplWebSocketListener.onClosed の処理において、WebSocket のステータスコードが 1000 以外の場合でも onError を呼び出さないように変更しました
    • これまでの実装では、onError のコールバック呼び出しが定義されていましたが、実際には onClosing が実行された時点で SignalingChannelImpl の listener の参照が削除されるため、onError が確実に呼び出される保証はありませんでした
    • 今回の変更により、onClose においてステータスコードと切断理由を取得できるようになりエラーハンドリングが可能となったため、onError の呼び出しは不要となりました
    • これにより、onError はネットワーク切断などによる異常終了のみを通知する仕様となります
    • もし、ステータスコード 1000 以外の Sora からの切断を onError によって検知する実装を行っていた場合、今後は onClose のステータスコードを参照し、適切な処理を行う必要があります
  • [CHANGE] SoraMediaOption.videoCodec が未設定の場合の動作変更
    • これまでは、SoraMediaOption.videoCodec が未設定の場合、connect メッセージの video.codec_type にデフォルトで VP9 が設定され、送信されていました
    • 今回の変更により、未設定の場合は video.codec_type を送信しなくなりました
    • 未設定の場合、Sora 側でデフォルトのビデオコーデックとして VP9 が設定されます
    • SoraMediaOption.videoCodec が未設定であり、かつ SoraMediaOption.videoVp9Params を設定している場合は破壊的変更の影響を受けるため、明示的に SoraMediaOption.videoCodecSoraVideoOption.Codec.VP9 を設定する必要があります
  • [CHANGE] SoraMediaOption.audioCodec が未設定の場合の動作変更
    • これまでは SoraMediaOption.audioCodec が未設定の場合、connect メッセージの audio.codec_type にデフォルトで OPUS が設定され、送信されていました
    • 今回の変更により、未設定の場合は audio.codec_type を送信しなくなりました
    • 未設定の場合、Sora 側でデフォルトのオーディオコーデックとして OPUS が設定されます
    • SoraMediaOption.audioCodec が未設定であり、かつ SoraMediaOption.audioOption.opusParams を設定している場合は破壊的変更の影響を受けるため、明示的に SoraMediaOption.audioCodecSoraAudioOption.Codec.OPUS を設定する必要があります
  • [CHANGE] SoraMediaChannel.ListeneronError(SoraMediaChannel, SoraErrorReason) を廃止しました
    • onError(SoraMediaChannel, SoraErrorReason) を呼び出していた箇所は onError(SoraMediaChannel, SoraErrorReason, String) に置き換えられます
    • String にはエラーの詳細情報が渡されます
      • 詳細がない場合は空文字列が渡されます
  • [UPDATE] libwebrtc を 138.7204.0.5 にアップデートしました
  • [UPDATE] Sora 2025.1.0 でのレガシーストリーム廃止に伴い不要となる設定を非推奨に変更しました
    • Sora 2025.1.0 以降は connect メッセージの multistream 項目が廃止されました
    • これに合わせ、SDK でも multistream を自動で true に設定する挙動を廃止しました(関連: シグナリングの "type": "connect" メッセージの multistream を自動で true に設定する仕様を廃止
    • 非推奨にした設定
      • SoraMediaOption.enableMultistream: これまで multistream: true を明示するための設定でしたが、Sora 2025.1.0 以降は非推奨です
      • SoraMediaOption.enableLegacyStream: これまで multistream: false (レガシーストリーム)を明示するための互換設定でしたが、レガシーストリーム自体が廃止されたため非推奨です
  • [UPDATE] SoraMediaChannel.Listener に、Sora から切断された際のステータスコードと理由を取得できる onClose(SoraMediaChannel, SoraCloseEvent) を追加しました
    • Sora から切断された際に通知されるイベントである SoraCloseEvent を追加しました
    • WebSocket シグナリング切断時に通知されるイベントである SignalingChannelCloseEvent を追加しました
    • 以下の場合に、Sora から切断された際に SoraCloseEvent が通知されます:
      • SoraMediaChannel.disconnect() を呼び出した場合
      • WebSocket 経由のシグナリングを利用している場合
      • DataChannel 経由のシグナリングを利用する場合、かつ ignore_disconnect_websocket が true であり、かつ Sora の設定で data_channel_signaling_close_message が有効な場合
  • [UPDATE] SoraMediaChannel.ListeneronClose(SoraMediaChannel) を非推奨にしました
    • 今後は onClose(SoraMediaChannel, SoraCloseEvent) を利用してください
  • [UPDATE] compileSdk と targetSdkVersion を 36 にアップデートしました
  • [UPDATE] Android Gradle Plugin (AGP) を 8.10.1 にアップデートしました
  • [UPDATE] Gradle を 8.11.1 にアップデートしました
  • [UPDATE] 依存ライブラリーのバージョンをアップデートしました
    • org.jetbrains.dokka:dokka-gradle-plugin を 1.9.20 にアップデートしました
    • com.google.code.gson:gson を 2.13.1 にアップデートしました
    • org.ajoberstar.grgit:grgit-gradle を 5.3.2 にアップデートしました
    • org.jetbrains.kotlinx:kotlinx-coroutines-android を 1.9.0 にアップデートしました
    • org.robolectric:robolectric を 4.15.1 にアップデートしました
  • [ADD] SoraMediaOptiondegradationPreference を追加しました
    • クライアント側の状況により設定した解像度やフレームレートを維持できなくなった場合にどのように質を下げるか制御できるオプションです
    • オプション追加前よりデフォルトの挙動で動作していたため互換性に影響はありません
  • [ADD] サイマルキャストの映像におけるエンコーディングパラメーター scaleResolutionDownTo を追加しました
  • [ADD] Sora から DataChannel シグナリングを切断する際に "type": "close" メッセージを受信する機能を追加する
    • DataChannel シグナリングが有効、かつ ignore_disconnect_websocket が true、かつ Sora の設定で data_channel_signaling_close_message が有効な場合に受信可能です
    • 受信したメッセージは SoraCloseEvent として onClose(SoraMediaChannel, SoraCloseEvent?) に通知されます
  • [ADD] SoraMediaOptionsoftwareVideoEncoderOnly を追加しました
    • 映像配信時に端末のハードウェアエンコーダーを使わず、ソフトウェアエンコーダーのみで送信するためのオプションです
    • デフォルトは false であるため互換性に影響はありません
    • true の場合、サイマルキャスト有効時を含めソフトウェアエンコーダーのみでエンコードするようになります
    • 映像の配信が有効な場合に適用されるため、視聴のみの場合は影響ありません
    • videoEncoderFactory を設定している場合は本オプションは無視されます
    • ソフトウェアエンコードは CPU 使用率・発熱・電力消費が増える可能性がありますので注意してください
  • [FIX] SoraMediaChannel.internalDisconnect における SoraMediaChannel.Listener.onClose の呼び出しタイミングを、切断処理の完了後に修正しました
    • 従来は切断処理の完了前に onClose が呼び出されていましたが、 onClose は切断後に通知されるのが望ましいため、切断完了後に呼び出されるよう修正しました

2025.1.1

日時:

2025-08-07

対応 Sora:

2024.2.0 以降

対応 Android:

5.0 以降

対応 libwebrtc:

m132.6834.5.0

  • [FIX] Sora の設定が、DataChannel 経由のシグナリングの設定、かつ、WebSocket の切断を Sora への接続が切断したと判断しない設定の場合に、SDP 再交換に失敗することがある問題を修正しました
    • WebSocket 経由から DataChannel 経由へのシグナリング切替時に type: switchedtype: re-offer をほぼ同時に受信した際、type: re-answer を WebSocket 経由で送信する前に WebSocket を切断してしまい type: re-answer の送信に失敗することがあるためです
    • DataChannel 経由へのシグナリング切替後でも、まだ WebSocket 経由で送信中のメッセージが存在する可能性を考慮し、余裕を持って切断するために 10 秒の待機時間を設けるようにしました

2025.1.0

日時:

2025-01-27

対応 Sora:

2024.2.0 以降

対応 Android:

5.0 以降

対応 libwebrtc:

m132.6834.5.0

  • [UPDATE] libwebrtc を 132.6834.5.0 にアップデートしました
  • [UPDATE] SoraForwardingFilterOption 型の引数を Sora での 2025 年 12 月の廃止に向けて非推奨にしました
  • [UPDATE] OfferMessage に以下の項目を追加しました
    • version
    • simulcastMulticodec
    • spotlight
    • channelId
    • sessionId
    • audio
    • audioCodecType
    • audioBitRate
    • video
    • videoCodecType
    • videoBitRate
  • [UPDATE] NotificationMessage に以下の項目を追加しました
    • timestamp
    • spotlightNumber
    • failedConnectionId
    • currentState
    • previousState
  • [ADD] 転送フィルター機能の設定を表すクラス SoraForwardingFilterOptionnamepriority を追加しました
  • [ADD] 転送フィルターをリスト形式で指定するためのプロパティを追加しました
  • [FIX] SoraMediaChannel の signalingMetadatasignalingNotifyMetadata の Map オブジェクトに value が null のフィールドを設定した場合、そのフィールドが connect メッセージに含まれない問題を修正しました
    • signalingMetadatasignalingNotifyMetadata に設定する情報はユーザが任意に設定する項目であり value 値が null の情報も送信できるようにする必要がありましたが Gson は JSON シリアライズ時にデフォルトで null フィールドを無視するため、null を持つフィールドは省略されていました
    • 今後は value 値が null の情報も送信されます。値を送信したくない場合は Map オブジェクトに含めないようにしてください