リリースノート

CHANGE

後方互換性のない変更

UPDATE

後方互換性がある変更

ADD

後方互換性がある追加

FIX

バグ修正

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 オブジェクトに含めないようにしてください

2024.3.0, 2024.3.1

日時:

2024-08-30

対応 Sora:

2024.1.0 以降

対応 Android:

5.0 以降

対応 libwebrtc:

m127.6533.1.1

  • [UPDATE] libwebrtc を m127.6533.1.1 にアップデートしました

  • [UPDATE] Android Gradle Plugin (AGP) を 8.5.0 にアップデートしました

  • [UPDATE] Gradle を 8.7 にアップデートしました

  • [UPDATE] Kotlin のバージョンを 1.9.25 にアップデートしました

  • [UPDATE] 依存ライブラリーのバージョンをアップデートしました

    • com.google.code.gson:gson を 2.11.0 にアップデートしました

    • com.squareup.okhttp3:okhttp を 4.12.0 にアップデートしました

    • org.jetbrains.kotlinx:kotlinx-coroutines-android を 1.8.1 にアップデートしました

    • androidx.test:core を 1.6.1 にアップデートしました

    • org.robolectric:robolectric を 4.13 にアップデートしました

  • [FIX] Offer メッセージの encodings 内 maxFramerate の値が整数でない値であった場合にエラーとなる問題を修正

    • Offer メッセージでは W3C の定義に合わせて maxFramerate を Double で定義していますが、 libwebrtc では Integer で定義されているため、 Offer メッセージに設定された maxFramerate を int にキャストして設定するように修正しました

  • [FIX] Offer メッセージでサイマルキャスト有効を指定した場合にサイマルキャストが有効にならない問題を修正しました

2024.2.0

日時:

2024-04-23

対応 Sora:

2023.2.0 以降

対応 Android:

5.0 以降

対応 libwebrtc:

m122.6261.1.0

  • [UPDATE] libwebrtc を m122.6261.1.0 にアップデートしました

    • libwebrtc の AV1 デコード機能の脆弱性対応が含まれています

2024.1.0, 2024.1.1

日時:

2024-03-19

対応 Sora:

2023.2.0 以降

対応 Android:

5.0 以降

対応 libwebrtc:

m121.6167.4.0

  • [CHANGE] NotificationMessagemetadata_list を削除しました

    • 2022.1.0 の Sora で metadata_list が廃止されたためあわせて廃止します

    • metadata_listdata に名称が変更されています

  • [CHANGE] NotificationMessagechannel_id を削除しました

    • 未使用項目であり、値が設定されない項目のため削除しました

  • [UPDATE] 転送フィルターの項目追加に対応しました

    • version が指定できるようになりました

    • metadata が指定できるようになりました

  • [UPDATE] 解像度に qHD (960x540, 540x960) を追加しました

  • [UPDATE] システム条件を更新しました

    • Android Studio 2023.2.1 以降

    • WebRTC SFU Sora 2023.2.0 以降

  • [UPDATE] libwebrtc を m121.6167.4.0 にアップデートしました

  • [ADD] 映像コーデックに H265 を追加しました

  • [FIX] connect メッセージに設定するバージョンの取得方法を変更しました

    • 開発中のブランチでの出力値が意図せぬ結果になるため修正しました

    • リリースされた Sora Android SDK を利用している場合、この問題は発生しません

  • [FIX] ForwardingFilteraction を未指定にできるようにしました

  • [FIX] NotificationMessage に項目を追加しました

    • session_id

    • kind

    • destination_connection_id

    • source_connection_id

    • recv_connection_id

    • send_connection_id

    • stream_id

2023.2.0

日時:

2023-08-29

対応 Sora:

2023.1.0 以降

対応 Android:

5.0 以降

対応 libwebrtc:

m115.5790.8.0

  • [UPDATE] システム条件を更新しました

    • Android Studio 2022.2.1 以降

    • WebRTC SFU Sora 2023.1.0 以降

  • [UPDATE] libwebrtc を 115.5790.8.0 にアップデートしました

  • [ADD] 転送フィルター機能を追加しました

  • [ADD] scalability mode に対応しました

    • VP9 / AV1 のサイマルキャストに対応可能になりました

  • [ADD] 映像コーデックパラメータを追加しました

2023.1.0

日時:

2023-04-05

対応 Sora:

2022.2.0 以降

対応 Android:

5.0 以降

対応 libwebrtc:

m112.5615.1.0

  • [CHANGE] type: offer の mid を必須とする修正をしました

    • この修正の結果、 type: offer に mid が含まれない場合は、エラーになります

    • 最新の Sora をご利用であれば問題は発生しません

  • [UPDATE] システム条件を更新しました

    • Android Studio 2021.3.1 以降

    • WebRTC SFU Sora 2022.2.2 以降

  • [UPDATE] Gradle を 7.6.1 にアップデートしました

  • [UPDATE] 依存ライブラリーのバージョンをアップデートしました

    • org.jetbrains.dokka:dokka-gradle-plugin を 1.8.10 にアップデートしました

    • com.android.tools.build:gradle を 7.4.2 にアップデートしました

    • com.github.ben-manes:gradle-versions-plugin を 0.46.0 にアップデートしました

    • org.jlleitschuh.gradle:ktlint-gradle を 11.3.1 にアップデートしました

    • com.google.code.gson:gson を 2.10.1 にアップデートしました

    • androidx.test:core を 1.5.0 にアップデートしました

    • org.robolectric:robolectric: を 4.9.2 にアップデートしました

  • [UPDATE] libwebrtc を 112.5615.1.0 にアップデートしました

  • [UPDATE] 映像コーデックに AV1 を追加しました

  • [ADD] SoraMediaOptionaudioStreamingLanguageCode を追加しました

  • [FIX] テストコード内に廃止された role が残っていたため修正しました

  • [FIX] PeerConnection.ContinualGatheringPolicy.GATHER_CONTINUALLY の設定を行なっていましたが Sora がネットワーク変更に対応しておらず不要な設定であるため削除しました

2022.4.0

日時:

2022-09-16

対応 Sora:

2022.1.1 以降

対応 Android:

5.0 以降

対応 libwebrtc:

m105.5195.0.0

  • [CHANGE] type: offer の mid を必須とする修正をしました

    • この修正の結果、 type: offer に mid が含まれない場合は、エラーになります

    • 最新の Sora をご利用であれば問題は発生しません

  • [UPDATE] libwebrtc を 105.5195.0.0 にアップデートしました

  • [UPDATE] compileSdkVersion を 32 にアップデートしました

  • [UPDATE] targetSdkVersion を 32 にアップデートしました

  • [UPDATE] Kotlin のバージョンを 1.7.10 にアップデートしました

  • [UPDATE] Gradle を 7.5.1 にアップデートしました

  • [UPDATE] 依存ライブラリーのバージョンをアップデートしました

    • com.android.tools.build:gradle を 7.2.2 にアップデートしました

    • org.jetbrains.kotlin:kotlin-gradle-plugin を 1.7.10 にアップデートしました

    • org.ajoberstar.grgit:grgit-gradle を 5.0.0 にアップデートしました

    • org.jetbrains.dokka:dokka-gradle-plugin を 1.7.10 にアップデートしました

    • com.github.ben-manes:gradle-versions-plugin を 0.42.0 にアップデートしました

    • org.jlleitschuh.gradle:ktlint-gradle を 10.3.0 にアップデートしました

    • com.pinterest:ktlint を 0.45.2 にアップデートしました

    • com.google.code.gson:gson を 2.9.1 にアップデートしました

    • com.squareup.okhttp3:okhttp を 4.10.0 にアップデートしました

    • org.jetbrains.kotlinx:kotlinx-coroutines-android を 1.6.4 にアップデートしました

    • org.robolectric:robolectric を 4.8.1 にアップデートしました

  • [FIX] mid を nullable に変更しました

    • develop で開発中に発生した不具合であり、リリース済みの Android SDK でこの問題は発生しません

    • 「type: offer の mid を必須にする」の対応で role が recvonly の時にエラーとなる不具合の修正です

  • [FIX] offer で受信した encodings が反映されない不具合を修正しました

    • develop で開発中に発生した不具合であり、リリース済みの Android SDK でこの問題は発生しません

  • [FIX] EGLContext が取れなかった場合、DefaultVideoDecoderFactory, SoraDefaultVideoEncoderFactory を使用するよう修正しました

    • EGLContext が取れなかった場合の Decoder を SoftwareVideoDecoderFactory から DefaultVideoDecoderFactory に変更しました

    • EGLContext が取れなかった場合の Encoder を SoftwareVideoEncoderFactory から SoraDefaultVideoEncoderFactory に変更しました

    • EGLContext は null でも Hardware を使用する MediaCodec は動作するため Hardware も動作可能な DefaultVideoDecoderFactory, SoraDefaultVideoEncoderFactory に変更する対応です

2022.3.0

日時:

2022-06-29

対応 Sora:

2022.1.0 以降

対応 Android:

5.0 以降

対応 libwebrtc:

m103.5060.4.0

  • [CHANGE] SoraMediaOptionhardwareVideoEncoderResolutionAdjustment を追加しました

    • HW エンコーダーに入力されるフレームの解像度が指定されたピクセル数の倍数になるように調整します。デフォルト値は 16 です。このオプションを実装した経緯は解像度が 16 の倍数でない場合、 HW エンコーダーの初期化がエラーになる変更が libwebrtc のメインストリームに入ったことによります。

    • Sora Android SDK では libwebrtc にパッチを当て、上記の HW エンコーダー初期化時の解像度のチェックを無効化しています。そのため、このフラグを SoraVideoOption.ResolutionAdjustment.NONE に設定することで、従来通り、解像度を調整することなく HW エンコーダーを利用できます。

    • 加えて、解像度調整ありでエンコーダーの初期化またはエンコード処理に失敗した際に、解像度調整なしで操作をリトライする処理を追加しています。

      • Android OS 11 の Xperia 5 II で VGA のサイマルキャストを H.264 で送信しようとした際、解像度調整ありの場合は HW エンコーダーの初期化が失敗するが、解像度調整なしの場合は成功する現象を確認したためです。

  • [UPDATE] SoraMediaOption.enableSpotlight() の引数に enableSimulcast を追加し、サイマルキャスト無効の状態でスポットライト機能を利用できるようにしました

  • [UPDATE] libwebrtc を 103.5060.4.0 にアップデートしました

  • [UPDATE] 依存ライブラリー org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.9 を追加しました

  • [UPDATE] システム条件を Android Studio 2021.2.1 にアップデートしました

  • [ADD] SoraMediaChannelproxy を追加し、接続時に HTTP プロキシの設定を追加できるようにしました

  • [ADD] SoraMediaChannelbundleId を追加しました

2022.2.0

日時:

2022-04-04

対応 Sora:

2021.2.1 以降

対応 Android:

5.0 以降

対応 libwebrtc:

m96.4664.2.1

  • [CHANGE] Sora で廃止となった以下のフィールドを削除しました

    • NotificationMessage.numberOfUpstreamConnections

    • NotificationMessage.numberOfDownstreamConnections

    • ChannelAttendeesCount.numberOfUpstreams

    • ChannelAttendeesCount.numberOfDownstreams

  • [UPDATE] SoraMediaChannelcontactSignalingEndpoint を追加しました

    • 最初に type: connect を送信したエンドポイントが設定されます

  • [UPDATE] SoraMediaOptionrole を追加しました

  • [ADD] メッセージング機能に対応しました

  • [FIX] SoraMediaChannel.ListeneronOfferMessage を追加しました

    • type: offer に含まれる metadata などにアクセスできるよう修正しました

2022.1.0

日時:

2022-01-12

対応 Sora:

2021.2.0 以降

対応 Android:

5.0 以降

対応 libwebrtc:

m96.4664.2.1

  • [CHANGE] スポットライトレガシー機能を廃止しました

  • [UPDATE] libwebrtc を 96.4664.2.1 アップデートしました

  • [UPDATE] dokka を 1.5.31 にアップデートしました

  • [ADD] 複数シグナリング URL が指定できるようになりました

  • [ADD] redirect メッセージに対応しました

  • [ADD] type: disconnect に reason を追加しました

  • [FIX] 視聴のみかつ H.264 した場合に接続できない問題についてのワークアラウンドを削除しました

    • SoraMediaOption.videoUpstreamContext が無く SoraMediaOption.videoDownstreamContext がある場合はコーデック指定に依らず、 DefaultVideoEncoderFactory を使用するように変更しています

  • [FIX] libwebrtc のアップデート後に発生するようになったサイマルキャストのクラッシュを修正しました

    • SimulcastVideoEncoderFactoryWrapper.kt の Fallback クラスが原因で java.lang.UnsupportedOperationException が発生していました

    • 調査の結果、 Fallback クラスを削除できることがわかったため、その方向で修正をしました

    • libwebrtc に適用している Android のサイマルキャスト対応のパッチを更新し、 SimulcastVideoEncoderFactory の fallback に null を指定できるように修正しました

© Copyright 2018-2025, Shiguredo Inc. Created using Sphinx 8.2.3