Releases: shiguredo/sora-android-sdk
2025.3.0
2025.3.0
リリース日: 2025-11-11
- [UPDATE] libwebrtc を 142.7444.2.1 に上げる
- [UPDATE] Kotlin バージョンを 2.0.20 に上げる
- [ADD] マイク録音の一時停止/再開機能を追加する
- 配信中に AudioDeviceModule の録音を停止することで、Android 実機のマイクインジケータを消灯させることを可能にする
- AudioDeviceModuleWrapper クラスを追加する
- JavaAudioDeviceModule を対象とした録音停止/再開のラッパークラス
- 専用の HandlerThread 上で suspend 関数として pauseRecording() / resumeRecording() を提供する
- アプリ側でカスタム ADM を差し込む場合は AudioDeviceModuleWrapper は利用されない
- SoraMediaChannel に以下のメソッドを追加する
- suspend fun setAudioRecordingPaused(paused: Boolean): Boolean
- 録音の一時停止/再開を非同期で実行する
- 内部では PeerChannel 経由で AudioDeviceModuleWrapper の pauseRecording()/resumeRecording() が呼ばれる
- AudioDeviceModule の制御に加え、ローカル AudioTrack の無効化/有効化も併せて行う
- fun isAudioRecordingPaused(): Boolean
- 現在の録音停止状態を返す
- suspend fun setAudioRecordingPaused(paused: Boolean): Boolean
- @t-miya
- [ADD] AudioTrack から音声データを受け取るためのコールバックインターフェースである AudioTrackSink を追加する
- この機能を利用すると AudioTrack ごとにコールバックから音声データを取得できる
- @zztkm
- [ADD] AudioTrack に AudioTrackSink と関連付けるためのメソッドを追加する
- addSink
- AudioTrack と AudioTrackSink を関連付けるためのメソッド
- removeSink
- AudioTrack と AudioTrackSink の関連付けを解除するためのメソッド
- @zztkm
- addSink
misc
- [UPDATE] ktlint バージョンを上げる
- ktlint を 1.7.1 に上げる
- ktlint-gradle を 13.1.0 に上げる
- @t-miya
- [UPDATE] Android Gradle Plugin バージョンを 8.11.1 に上げる
- [UPDATE] grgit が git worktree のディレクトリでは使えないことが判明したため、
BuildConfig.REVISIONを取得する方法を grgit から git コマンドに移行する- Sora Android SDK ではコミットハッシュを取得するためだけに Grgit を利用しており、git コマンドの利用で十分であると判断した
- @zztkm
- [UPDATE] build.yml の実行除外対象を追加する
- paths-ignore に以下を追加
- 'CLAUDE.md'
- '.github/workflows/claude.yml'
- '.github/copilot-instructions.md'
- 'sora-android-sdk/packages.md'
- 'docs/**'
- 'jitpack.yml'
- 'canary.py'
- '.gitignore'
- paths-ignore に以下を追加
- [UPDATE] canary.py の SDKInfo.kt の
version変数名をVERSIONに変更する- ktlint バージョンアップにより命名規則のチェックが厳格になった
- @zztkm
- [UPDATE] システム条件を更新する
- Android Studio 2025.2.1 以降
- @zztkm
2025.2.0
2025.2.0
リリース日: 2025-09-17
-
[CHANGE]
fixedResolutionを廃止する破壊的変更- これまでは送信する映像の解像度維持の方法として、
CameraVideoCapturerWrapperクラスのコンストラクタ引数fixedResolutionからスーパークラスのメソッドCameraVideoCapturer.isScreenCastを利用していたが、DegradationPreferenceの追加に伴いfixedResolutionは廃止した CameraCapturerFactory.createの引数fixedResolutionは不要となったため削除した。各CameraCapturerFactory.create呼び出し箇所の引数からも削除対応が必要となる- @t-miya
- これまでは送信する映像の解像度維持の方法として、
-
[CHANGE]
CameraVideoCapturerWrapperを削除する破壊的変更fixedResolutionを使用するのためラッパークラスだったが、fixedResolution廃止につき不要となったため- @t-miya
-
[CHANGE] connect メッセージの
multistreamを true 固定で送信する処理を削除する破壊的変更SoraMediaOption.enableSpotlightを実行したときに multistream を true にする処理を削除ConnectMessage初期化時に渡す multistream の値をSoraMediaOption.multistreamEnabledに変更SoraMediaOption.multistreamIsRequired利用しなくなったので削除
- @zztkm
-
[CHANGE]
SignalingChannelImplのWebSocketListener.onClosedの処理で、WebSocket ステータスコードが 1000 以外の場合でもonErrorを呼び出さないように変更する- これまでの実装では、onError のコールバック呼び出しが定義されていたが、実際には
onClosingが実行された時点でSignalingChannelImplの listener の参照が削除されるため、onErrorが確実に呼び出される保証はなかった - 今回の変更により、
onClose(mediaChannel: SoraMediaChannel, closeEvent: SoraCloseEvent)でステータスコードと切断理由を取得できるようになり、エラー判定が可能となったため、onErrorの呼び出しを不要とした - これにより、
onErrorはネットワーク切断などによる異常終了のみを通知する仕様になる - もし、ステータスコード 1000 以外の Sora からの切断を
onErrorによって検知する実装を行っていた場合、今後はonCloseのステータスコードを参照して適切な処理を行う必要がある - @zztkm
- これまでの実装では、onError のコールバック呼び出しが定義されていたが、実際には
-
[CHANGE] SoraMediaOption.videoCodec 未設定時の動作変更
- 以前は、
SoraMediaOption.videoCodecが未設定の場合、connect メッセージのvideo.codec_typeに自動でVP9が設定され送信されていた - 今回の変更により、未設定の場合は
video.codec_typeを送信しなくなった - 未設定時は、Sora 側でデフォルトのビデオコーデックが設定される。現時点では Sora が自動的に
VP9を設定する SoraMediaOption.videoCodecが未設定、かつSoraMediaOption.videoVp9Paramsを設定している場合は破壊的変更の影響を受けるため、明示的にSoraMediaOption.videoCodecにSoraVideoOption.Codec.VP9を設定する必要がある- @zztkm
- 以前は、
-
[CHANGE] SoraMediaOption.audioCodec 未設定時の動作変更
- 以前は、
SoraMediaOption.audioCodecが未設定の場合、connect メッセージのaudio.codec_typeに自動でOPUSが設定され送信されていた - 今回の変更により、未設定の場合は
audio.codec_typeを送信しなくなった - 未設定時は、Sora 側でデフォルトのオーディオコーデックが設定される。現時点では Sora が自動的に
OPUSを設定する SoraMediaOption.audioCodecが未設定、かつSoraMediaOption.audioOption.opusParamsを設定している場合は破壊的変更の影響を受けるため、明示的にSoraMediaOption.audioCodecにSoraAudioOption.Codec.OPUSを設定する必要がある- @zztkm
- 以前は、
-
[CHANGE] SoraMediaChannel.Listener の
onError(SoraMediaChannel, SoraErrorReason)を廃止するonError(SoraMediaChannel, SoraErrorReason)を呼び出していた箇所はonError(SoraMediaChannel, SoraErrorReason, String)に置き換えられる- String にはエラーの詳細情報を設定する
- 詳細がない場合は空文字列を設定する
- @zztkm
-
[UPDATE] libwebrtc を 138.7204.0.5 に上げる
-
[UPDATE]
SoraMediaOption.enableMultistreamを非推奨にする -
[UPDATE]
SoraMediaOptionにenableLegacyStreamを追加する- レガシーストリームのための関数だが、レガシーストリームは廃止予定なので最初から非推奨にしている
- @zztkm
-
[UPDATE] SignalingChannelImpl の
WebSocketListener.onClosingではdisconnectメソッドを呼ばないようにする- onClosing の役割はサーバーから Close Frame を受け取ったことを検知することで、WebSocket 接続が終了したことを表すものではないため、disconnect メソッドを呼び出さないようにコードを整理した
- ただし
WebSocket.closeを呼ばないと OkHttp は onClosed を呼ばないため、onClosing でWebSocket.closeを呼び出すようにした - @zztkm
-
[UPDATE] サーバーから Close Frame を受信し、クライアントが Close Frame を送り返す場合は、サーバーから受信したステータスコードをそのまま送り返すようにする
- 以下に引用している RFC 6455 の 5.5.1 節に記載されている内容を参考に、サーバーから受信したステータスコードをそのまま送り返すようにした
-
When sending a Close frame in response, the endpoint typically echos the status code it received.
- 引用元: https://datatracker.ietf.org/doc/html/rfc6455#section-5.5.1
-
- この修正は Sora との内部的なやり取り部分にのみ影響するため、SDK ユーザーへの影響はない
- @zztkm
- 以下に引用している RFC 6455 の 5.5.1 節に記載されている内容を参考に、サーバーから受信したステータスコードをそのまま送り返すようにした
-
[UPDATE]
SoraMediaChannel.Listenerに Sora から切断されたときのステータスコードと理由を取得できるonClose(mediaChannel: SoraMediaChannel, closeEvent: SoraCloseEvent)を追加する- Sora から切断されたときに通知されるイベントである
SoraCloseEventを追加した - WebSocket シグナリング切断時に通知されるイベントである
SignalingChannelCloseEventを追加した - 以下の場合に、Sora から切断された際に
SoraCloseEventが通知される:SoraMediaChannel.disconnect()を呼び出した場合- WebSocket 経由のシグナリングを利用している場合
- DataChannel 経由のシグナリングを利用する場合、かつ
ignore_disconnect_websocketが true、かつ Sora の設定でdata_channel_signaling_close_messageが有効な場合
- @zztkm
- Sora から切断されたときに通知されるイベントである
-
[UPDATE]
SoraMediaChannel.ListenerのonClose(SoraMediaChannel)を非推奨に変更する- 今後は
onClose(SoraMediaChannel, SoraCloseEvent)を利用してもらう - @zztkm
- 今後は
-
[UPDATE] compileSdkVersion と targetSdkVersion を 36 に上げる
-
[UPDATE] Android Gradle Plugin (AGP) を 8.10.1 にアップグレードする
- ビルドに利用される Gradle を 8.11.1 に上げる
- @miosakuma
-
[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 に上げる
- @miosakuma
-
[UPDATE]
RTCComponentFactoryのビデオエンコーダーファクトリの選択条件を調整simulcast == trueかつsoftwareVideoEncoderOnly == trueの場合、SimulcastVideoEncoderFactoryWrapperを使わずにSoraDefaultVideoEncoderFactoryを利用するように変更- ソフトウェアエンコーダーのみを利用するように設定されなければこれまで通り SimulcastVideoEncoderFactoryWrapper を利用する
SoraMediaOption.videoEncoderFactoryを明示設定している場合は本変更の影響を受けない- @zztkm
-
[ADD]
SoraMediaOptionにDegradationPreferenceを追加- クライアント側の状況により設定した解像度やフレームレートを維持できなくなった場合にどのように質を下げるか制御できるパラメータとして
SoraMediaOption.degradationPreferenceを追加した degradationPreferenceの設定は必須ではなく、未指定の場合は libwebrtc デフォルトの挙動としてMAINTAIN_FRAMERATEが適用される- @t-miya
- クライアント側の状況により設定した解像度やフレームレートを維持できなくなった場合にどのように質を下げるか制御できるパラメータとして
-
[ADD] サイマルキャストの映像のエンコーディングパラメーター
scaleResolutionDownToを追加する -
[ADD]
SoraMediaOptionにsoftwareVideoEncoderOnlyを追加するtrueを指定するとソフトウェアエンコーダーのみを使用する(HW は作成・選択しない)- 既定値は
false(従来どおり HW 優先 + 必要時 SW フォールバック)。互換性への影響はなし - サイマルキャスト有効時も SW のみ構成に切り替える
videoEncoderFactoryを明示設定している場合は本オプションは無視される- @zztkm
-
[FIX]
SoraMediaChannel.internalDisconnectでのSoraMediaChannel.Listener.onCloseの呼び出しタイミングを切断処理がすべて完了したあとに修正する- 切断処理が終了する前に
onCloseを呼び出していたため、切断処理が完了してから呼び出すように修正 contactSignalingEndpointとconnectedSignalingEndpointは onClose で参照される可能性があるため、onClose 実行よりあとに null になるように onClose に合わせて処理順を変更- @zztkm
- 切断処理が終了する前に
misc
- [UPDATE] actions/checkout@v4 を actions/checkout@v5 に上げる
2025.1.1
2025.1.1
リリース日: 2025-08-07
- [FIX] Sora の設定が、DataChannel 経由のシグナリングの設定、かつ、WebSocket の切断を Sora への接続が切断したと判断しない設定の場合に、
type: switchedとtype: re-offerをほぼ同時に受信すると SDP 再交換に失敗することがある問題を修正するtype: re-answerを WebSocket 経由で Sora へ送信する前に、Sora からtype: switchedを受信して、WebSocket 経由から DataChannel 経由へのシグナリングの切り替えの処理が実行されて、WebSocket の切断処理が実行されたため、type: re-answerを Sora へ送信できなくなり、SDP の再交換に失敗する- DataChannel 経由のシグナリングへの切り替え後でも、まだ WebSocket 経由で送信中のメッセージが存在する可能性を考慮し、10 秒間の WebSocket 切断の猶予時間を設けた
- この遅延処理はコルーチンを利用して非同期で行う
- @miosakuma
2025.1.0
リリース日: 2025-01-27
- [UPDATE] libwebrtc を 132.6834.5.0 に上げる
- [UPDATE] SoraForwardingFilterOption 型の引数を Sora での 2025 年 12 月の廃止に向けて非推奨にする
- 今後はリスト形式の転送フィルター設定を利用してもらう
- 非推奨になるクラス
- SoraMediaChannel
- SignalingChannelImpl
- ConnectMessage (Any で定義されているが、実態は SoraForwardingFilterOption を Map に変換したもの)
- @zztkm
- [UPDATE] OfferMessage に項目を追加する
- 追加した項目
versionsimulcastMulticodecspotlightchannelIdsessionIdaudioaudioCodecTypeaudioBitRatevideovideoCodecTypevideoBitRate
- @zztkm
- 追加した項目
- [UPDATE] NotificationMessage に項目を追加する
- 追加した項目
timestampspotlightNumberfailedConnectionIdcurrentStatepreviousState
- @zztkm
- 追加した項目
- [ADD] 転送フィルター機能の設定を表すクラス
SoraForwardingFilterOptionにnameとpriorityを追加する - [ADD] 転送フィルターをリスト形式で指定するためのプロパティを追加する
- プロパティが追加されるクラス
- SoraMediaChannel に
forwardingFiltersOptionを追加する - SignalingChannelImpl に
forwardingFiltersOptionを追加する - ConnectMessage に
forwardingFiltersを追加する - クラスそのものに変更はないが
MessageConverter.buildConnectMessageにforwardingFiltersOptionを追加する
- SoraMediaChannel に
- @zztkm
- プロパティが追加されるクラス
- [FIX] SoraMediaChannel のコンストラクタで
signalingMetadataとsignalingNotifyMetadataに Map オブジェクトを指定した場合、null を持つフィールドが connect メッセージ送信時に省略されてしまう問題を修正signalingMetadataとsignalingNotifyMetadataに設定する情報はユーザが任意に設定する項目であり value 値が null の情報も送信できるようにする必要がある- Gson は JSON シリアライズ時、デフォルトで null フィールドを無視するので、null を持つフィールドは省略される
- これを回避するために Gson をインスタンス化するときに
serializeNulls()を利用してインスタンスを作成する必要がある - https://github.com/google/gson/blob/main/UserGuide.md#null-object-support
- これを回避するために Gson をインスタンス化するときに
signalingMetadataとsignalingNotifyMetadataのみ null フィールドを省略しないようにする必要があるため、以下のような手順で JSON シリアライズを行うようにした- まず、デフォルトの Gson インスタンスで ConnectMessage をシリアライズする
- その後、シリアライズした JSON 文字列を JsonObject に変換する (この時点で null のフィールドは省略されている)
- JsonObject に metadata, signalingNotifyMetadata をセットし直す
- JsonObject を
serializeNulls()を呼び出した Gson インスタンスでシリアライズする
- @zztkm
misc
- [CHANGE] GitHub Actions の ubuntu-latest を ubuntu-24.04 に変更する
- [UPDATE] システム条件を更新する
- Android Studio 2024.2.2 以降
- @miosakuma @zztkm
- [ADD] Canary Release 用スクリプトの canary.py を追加する
2025.1.0
リリース日: 2025-01-27
- [UPDATE] libwebrtc を 132.6834.5.0 に上げる
- [UPDATE] SoraForwardingFilterOption 型の引数を Sora での 2025 年 12 月の廃止に向けて非推奨にする
- 今後はリスト形式の転送フィルター設定を利用してもらう
- 非推奨になるクラス
- SoraMediaChannel
- SignalingChannelImpl
- ConnectMessage (Any で定義されているが、実態は SoraForwardingFilterOption を Map に変換したもの)
- @zztkm
- [UPDATE] OfferMessage に項目を追加する
- 追加した項目
versionsimulcastMulticodecspotlightchannelIdsessionIdaudioaudioCodecTypeaudioBitRatevideovideoCodecTypevideoBitRate
- @zztkm
- 追加した項目
- [UPDATE] NotificationMessage に項目を追加する
- 追加した項目
timestampspotlightNumberfailedConnectionIdcurrentStatepreviousState
- @zztkm
- 追加した項目
- [ADD] 転送フィルター機能の設定を表すクラス
SoraForwardingFilterOptionにnameとpriorityを追加する - [ADD] 転送フィルターをリスト形式で指定するためのプロパティを追加する
- プロパティが追加されるクラス
- SoraMediaChannel に
forwardingFiltersOptionを追加する - SignalingChannelImpl に
forwardingFiltersOptionを追加する - ConnectMessage に
forwardingFiltersを追加する - クラスそのものに変更はないが
MessageConverter.buildConnectMessageにforwardingFiltersOptionを追加する
- SoraMediaChannel に
- @zztkm
- プロパティが追加されるクラス
- [FIX] SoraMediaChannel のコンストラクタで
signalingMetadataとsignalingNotifyMetadataに Map オブジェクトを指定した場合、null を持つフィールドが connect メッセージ送信時に省略されてしまう問題を修正signalingMetadataとsignalingNotifyMetadataに設定する情報はユーザが任意に設定する項目であり value 値が null の情報も送信できるようにする必要がある- Gson は JSON シリアライズ時、デフォルトで null フィールドを無視するので、null を持つフィールドは省略される
- これを回避するために Gson をインスタンス化するときに
serializeNulls()を利用してインスタンスを作成する必要がある - https://github.com/google/gson/blob/main/UserGuide.md#null-object-support
- これを回避するために Gson をインスタンス化するときに
signalingMetadataとsignalingNotifyMetadataのみ null フィールドを省略しないようにする必要があるため、以下のような手順で JSON シリアライズを行うようにした- まず、デフォルトの Gson インスタンスで ConnectMessage をシリアライズする
- その後、シリアライズした JSON 文字列を JsonObject に変換する (この時点で null のフィールドは省略されている)
- JsonObject に metadata, signalingNotifyMetadata をセットし直す
- JsonObject を
serializeNulls()を呼び出した Gson インスタンスでシリアライズする
- @zztkm
2024.3.1
2024.3.1
リリース日: 2024-08-30
- [FIX] JitPack で発生した Gradle Task の暗黙的な依存関係によるビルドエラーを修正する
generateMetadataFileForSora-android-sdkPublicationは暗黙的にsourcesJarに依存していた- このため、タスクの実行順序によってはビルドエラーが発生する状況になっており、kotlin 1.9 に上げたタイミングで問題が発現した
- この問題に対処するために、
generateMetadataFileForSora-android-sdkPublicationがsourcesJarに依存していることを明示的に宣言した - @zztkm
2024.3.0
リリース日: 2024-08-29
- [UPDATE] libwebrtc を 127.6533.1.1 に上げる
- [UPDATE] Android Gradle Plugin (AGP) を 8.5.0 にアップグレードする
- Android Studion の AGP Upgrade Assistant を利用してアップグレードされた内容
com.android.tools.build:gradleを 8.5.0 に上げる- ビルドに利用される Gradle を 8.7 に上げる
- Android マニフェストからビルドファイルにパッケージを移動
- Android マニフェストに定義されていた package を削除
- ビルドファイルに namespace を追加
- buildTypes に定義されていた debug ブロックを削除
- AGP 8.5.0 対応で発生したビルドスクリプトのエラーを手動で修正した内容
- compileOptions を buildTypes から android ブロックに移動する
- Android 公式ドキュメントを参考にした修正
- https://developer.android.com/build/jdks?hl=ja#source-compat
- classifier を archiveClassifier に置き換える
- classifier は Gradle 8.0 で削除された
- https://docs.gradle.org/7.6/dsl/org.gradle.api.tasks.bundling.Jar.html#org.gradle.api.tasks.bundling.Jar:classifier
- compileSdkVersion と targetSdkVersion を 34 に上げる
- AGP 8.0 から buildConfig がデフォルト false になったので、true に設定する
- compileOptions を buildTypes から android ブロックに移動する
- GitHub Actions で利用する JDK のバージョンを 17 にする
- JitPack でのビルドで利用する JDK のバージョンを 17 にする
- @zztkm
- Android Studion の AGP Upgrade Assistant を利用してアップグレードされた内容
- [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 に上げる
- @zztkm
- [UPDATE] Kotlin のバージョンを 1.9.25 に上げる
- [FIX] Offer メッセージの encodings 内 maxFramerate の値が整数でない値であった場合にエラーとなる問題を修正
- W3C では maxFramerate を Double で定義しているが、libwebrtc では Integer となっているため、SDK も Integer を使用していた
- W3C の定義に合わせて Double を受け入れるようにし、また SDK 内部では libwebrtc に合わせて Integer とする方針となった
- 方針に合わせ SDK に対して maxFramerate を Double を受け入れるように修正し、int にキャストして設定するように変更
- 参考
- @torikizi
- [FIX] Offer メッセージでサイマルキャスト有効を指定した場合にサイマルキャストが有効にならない問題を修正
- 接続時にクライアントが指定したサイマルキャスト有効/無効の設定により SimulcastVideoEncoder を利用していたが、Sora 側でサイマルキャスト有効の指定は変更できるためサイマルキャスト有効/無効の判断は Offer メッセージの
simulcastの値を元に行う必要があった - @miosakuma
- 接続時にクライアントが指定したサイマルキャスト有効/無効の設定により SimulcastVideoEncoder を利用していたが、Sora 側でサイマルキャスト有効の指定は変更できるためサイマルキャスト有効/無効の判断は Offer メッセージの
2024.3.0
JitPack でのビルドに失敗したため再リリースを行なっています。 2024.3.1 を利用してください。
リリース日: 2024-08-29
- [UPDATE] libwebrtc を 127.6533.1.1 に上げる
- [UPDATE] Android Gradle Plugin (AGP) を 8.5.0 にアップグレードする
- Android Studion の AGP Upgrade Assistant を利用してアップグレードされた内容
com.android.tools.build:gradleを 8.5.0 に上げる- ビルドに利用される Gradle を 8.7 に上げる
- Android マニフェストからビルドファイルにパッケージを移動
- Android マニフェストに定義されていた package を削除
- ビルドファイルに namespace を追加
- buildTypes に定義されていた debug ブロックを削除
- AGP 8.5.0 対応で発生したビルドスクリプトのエラーを手動で修正した内容
- compileOptions を buildTypes から android ブロックに移動する
- Android 公式ドキュメントを参考にした修正
- https://developer.android.com/build/jdks?hl=ja#source-compat
- classifier を archiveClassifier に置き換える
- classifier は Gradle 8.0 で削除された
- https://docs.gradle.org/7.6/dsl/org.gradle.api.tasks.bundling.Jar.html#org.gradle.api.tasks.bundling.Jar:classifier
- compileSdkVersion と targetSdkVersion を 34 に上げる
- AGP 8.0 から buildConfig がデフォルト false になったので、true に設定する
- compileOptions を buildTypes から android ブロックに移動する
- GitHub Actions で利用する JDK のバージョンを 17 にする
- JitPack でのビルドで利用する JDK のバージョンを 17 にする
- @zztkm
- Android Studion の AGP Upgrade Assistant を利用してアップグレードされた内容
- [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 に上げる
- @zztkm
- [UPDATE] Kotlin のバージョンを 1.9.25 に上げる
- [FIX] Offer メッセージの encodings 内 maxFramerate の値が整数でない値であった場合にエラーとなる問題を修正
- W3C では maxFramerate を Double で定義しているが、libwebrtc では Integer となっているため、SDK も Integer を使用していた
- W3C の定義に合わせて Double を受け入れるようにし、また SDK 内部では libwebrtc に合わせて Integer とする方針となった
- 方針に合わせ SDK に対して maxFramerate を Double を受け入れるように修正し、int にキャストして設定するように変更
- 参考
- @torikizi
- [FIX] Offer メッセージでサイマルキャスト有効を指定した場合にサイマルキャストが有効にならない問題を修正
- 接続時にクライアントが指定したサイマルキャスト有効/無効の設定により SimulcastVideoEncoder を利用していたが、Sora 側でサイマルキャスト有効の指定は変更できるためサイマルキャスト有効/無効の判断は Offer メッセージの
simulcastの値を元に行う必要があった - @miosakuma
- 接続時にクライアントが指定したサイマルキャスト有効/無効の設定により SimulcastVideoEncoder を利用していたが、Sora 側でサイマルキャスト有効の指定は変更できるためサイマルキャスト有効/無効の判断は Offer メッセージの
2024.2.0
- [UPDATE] libwebrtc を 122.6261.1.0 に上げる
- [UPDATE] Github Actions の actions/setup-java@v4 にあげる
2024.1.1
2024.1.1
- [FIX] jitpack.yml を追加して jdk のバージョンを 11 に指定する
- JitPack で jdk 8 でビルドが走ってエラーとなったため、明示的に利用する jdk を指定する
- @miosakuma
2024.1.0
- [CHANGE]
NotificationMessageのmatadata_listを削除する- 2022.1.0 の Sora で metadata_list が廃止されたため
- NotificationMessage の data で値の取得が可能
- @miosakuma
- [CHANGE]
NotificationMessageのchannel_idを削除する- Sora から値を通知しておらず利用していない項目のため削除する
- @miosakuma
- [UPDATE] libwebrtc を 121.6167.4.0 に上げる
- コンバイルに利用する Java のバージョンを 1.8 に上げる
- @miosakuma
- [UPDATE] 解像度に
qHD(960x540, 540x960) を追加する - [UPDATE]
ForwardingFilterにversionとmetadataを追加する - [ADD] H.265 に対応する
SoraVideoOptionのCodecにH265を追加しました- @enm10k
- [FIX] connect メッセージに設定するバージョンの取得に git describe を使うのを止める
- 開発中に develop ブランチなどでの出力が意図せぬ結果になるため修正
- リリースされた Sora Android SDK では正常な出力になるため、ユーザーへの影響はなし
- @enm10k
- [FIX]
ForwardingFilterのactionを未指定にできるようにする - [FIX]
NotificationMessageに項目を追加するsession_idkinddestination_connection_idsource_connection_idrecv_connection_idsend_connection_idstream_id- @miosakuma
2024.1.0
JitPack でのビルドに失敗したため再リリースを行なっています。 2024.1.1 を利用してください。
- [CHANGE]
NotificationMessageのmatadata_listを削除する- 2022.1.0 の Sora で metadata_list が廃止されたため
- NotificationMessage の data で値の取得が可能
- @miosakuma
- [CHANGE]
NotificationMessageのchannel_idを削除する- Sora から値を通知しておらず利用していない項目のため削除する
- @miosakuma
- [UPDATE] libwebrtc を 121.6167.4.0 に上げる
- コンバイルに利用する Java のバージョンを 1.8 に上げる
- @miosakuma
- [UPDATE] 解像度に
qHD(960x540, 540x960) を追加する - [UPDATE]
ForwardingFilterにversionとmetadataを追加する - [ADD] H.265 に対応する
SoraVideoOptionのCodecにH265を追加しました- @enm10k
- [FIX] connect メッセージに設定するバージョンの取得に git describe を使うのを止める
- 開発中に develop ブランチなどでの出力が意図せぬ結果になるため修正
- リリースされた Sora Android SDK では正常な出力になるため、ユーザーへの影響はなし
- @enm10k
- [FIX]
ForwardingFilterのactionを未指定にできるようにする - [FIX]
NotificationMessageに項目を追加するsession_idkinddestination_connection_idsource_connection_idrecv_connection_idsend_connection_idstream_id- @miosakuma
2023.2.0
- [UPDATE] システム条件を更新する
- Android Studio 2022.2.1 以降
- WebRTC SFU Sora 2023.1.0 以降
- @miosakuma
- [UPDATE] libwebrtc を 115.5790.8.0 に上げる
- [ADD] 転送フィルター機能を追加する
- [ADD] scalability mode に対応する
- VP9 / AV1 のサイマルキャストに対応可能になる
- @szktty
- [ADD] 映像コーデックパラメータを追加する
SoraMediaOptionにvideoVp9Params,videoAv1Params,videoH264Paramsを追加する- @miosakuma