古いリリースノート¶
- CHANGE
後方互換性のない変更
- UPDATE
後方互換性がある変更
- ADD
後方互換性がある追加
- FIX
バグ修正
1.x¶
1.10.0¶
- 日時:
2019-11-14
- 対応 Sora:
19.04.9
- 対応 libwebrtc:
75.16.0
UPDATE¶
minSdkVersion
を 21 にアップデートしました -com.squareup.okhttp3:okhttp
4.2.2 がminSdkVersion
21 以上にのみ対応するためlibwebrtc を 78.8.0 にアップデートしました
Android Studio 3.5.1 に対応しました
Kotlin を 1.3.50 にアップデートしました
Dokka を 0.10.0 にアップデートしました
com.android.tools.build:gradle
を 3.5.2 にアップデートしましたcom.squareup.okhttp3:okhttp
を 4.2.2 にアップデートしましたcom.google.code.gson:gson
を 2.8.6 にアップデートしましたorg.robolectric:robolectric
を 4.3.1 にアップデートしましたAudioDeviceManager 生成時のパラメータをオプション
SoraAudioOption
に追加しました -audioSource
:android.media.MediaRecorder.AudioSource
のいずれか -useStereoInput
: boolean -useStereoOutput
: boolean
ADD¶
シグナリング connect メッセージに
sdk_type
,sdk_version
とuser_agent
を追加しましたシグナリング connect メッセージに
audio.opus_params
を追加しました1:N サイマルキャストの視聴に対応しました
CHANGE¶
時雨堂ビルドの libwebrtc ライブラリ名称を変更しました - 旧:
sora-webrtc-android
、 新:shiguredo-webrtc-android
-transitive = true
でsora-android-sdk
に依存している場合はアプリケーション側の変更は不要ですシグナリング connect メッセージから
simulcast_rid
を削除しました
FIX¶
視聴のみかつ H.264 を指定した場合に接続できない現象を修正しました
1.9.0¶
- 日時:
2019-08-02
- 対応 Sora:
19.04.9
- 対応 libwebrtc:
75.16.0
UPDATE¶
libwebrtc を 75.16.0 にアップデートしました
Android Studio 3.4.2 に対応しました
Kotlin を 1.3.41 にアップデートしました
com.squareup.okhttp3:okhttp
を 3.14.2 にアップデートしましたio.reactivex.rxjava2:rxjava
を 2.2.10 にアップデートしましたandroidx.test:core
を 1.2.0 にアップデートしましたorg.robolectric:robolectric
を 4.3 にアップデートしました
ADD¶
SoraMediaOption
にaudioBitrate
設定を追加しましたSoraMediaOption
にaudioOption: SoraAudioOption
を追加しましたSoraAudioOption
に libwebrtc 独自の音声処理設定のキーを追加しましたmedia constraints キーとの対応は以下の通りです:
ECHO_CANCELLATION_CONSTRAINT
:"googEchoCancellation"
設定のキーAUTO_GAIN_CONTROL_CONSTRAINT
:"googAutoGainControl"
設定のキーHIGH_PASS_FILTER_CONSTRAINT
:"googHighpassFilter"
設定のキーNOISE_SUPPRESSION_CONSTRAINT
:"googNoiseSuppression""
設定のキー
SoraAudioOption
に音声処理に関するインターフェースを追加しましたAudioDeviceModule インスタンスの設定、デフォルトは null で
JavaAudioDeviceModule
を内部で生成しますハードウェアの AEC (acoustic echo canceler) の利用有無を設定します。デフォルトでは可能であれば利用します。
ハードウェアの NS (noise suppressor) の利用有無を設定します。デフォルトでは可能であれば利用します。
libwebrtc 独自の音声処理の無効化設定、デフォルトはすべて有効です。 -
audioProcessingEchoCancellation
:"googEchoCancellation"
に対応しました -audioProcessingAutoGainControl
:"googAutoGainControl"
に対応しました -audioProcessingHighpassFilter
:"googHighpassFilter"
に対応しました -audioProcessingNoiseSuppression
:"googNoiseSuppression""
に対応しましたこれらの設定の組み合わせ方によっては、端末依存でマイクからの音声が取れないことがあるため、 設定を決める際には実端末での動作確認が必要です
SoraErrorReason
に音声の録音(audio record)、音声トラック(audio track)のエラーを追加しましたSoraMediaChannel.Lister
のコールバックにonError(SoraErrorReason, String)
を追加しましたデフォルトで何もしない実装のため、ソースコード上の変更は不要です
このバージョンでは
JavaAudioDeviceModule
の audio record, audio track 関連のエラーが このコールバックを通して通知されます。
rid-based simulcast に部分的に対応しました
現状では、ソフトウェアエンコーダーのみで動作します。
映像コーデックは VP8 のみの対応しています。
fixed resolution と一緒に使うとクラッシュ(SEGV)することが分かっています。
関連 issue: 10713 - Transceiver/encodings based simulcast does not work in desktop sharing
closed になっているため、libwebrtc の最新版では修正されている可能性があります。
getStats を定期的に実行し統計を取得する API を追加しました
CHANGE¶
org.webrtc.PeerConnectionFactory
に明示的にJavaAudioDeviceModule
を渡すように変更しましたlibwebrtc にて
org.webrtc.LegacyAudioDeviceModule
が無くなり、明示的に audio device module を 指定するよう変更されたため。7452 - Move Android audio code to webrtc/sdk/android - webrtc - Monorail - https://bugs.chromium.org/p/webrtc/issues/detail?id=7452
Use JavaAudioDeviceModule as default (Ib99adc50) · Gerrit Code Review - https://webrtc-review.googlesource.com/c/src/^/123887
org.webrtc.audio.JavaAudioDeviceModule
のHardwareAcousticEchoCanceler
,HardwareNoiseSuppressor
をデフォルトで有効にしました無効化したい場合には、個別に
SoraAudioOption
で設定しSoraMediaOption
経由で設定を渡せます。
audio source 作成時のデフォルト
MediaConstraint
で、libwebrtc 独自の音声処理をすべて有効化しました無効化したい場合には、個別に
SoraAudioOption
で設定しSoraMediaOption
経由で設定を渡せます。
1.8.1¶
- 日時:
2019-04-18
- 対応 Sora:
19.04.0
- 対応 libwebrtc:
73.10.1
UPDATE¶
libwebrtc を 73.10.1 にアップデートしました
encoder/decoder の対応コーデックのログ出力を追加しました
Kotlin を 1.3.30 にアップデートしました
Android Studio 3.4.0 に対応しました
SoraMediaOption
にVideoEncoderFactory
、VideoDecoderFactory
を指定するオプションを追加しました[プレビュー版]
SoraMediaChannel
のコンストラクタに@JvmOverloads
を追加し、Java からオーバーロードされて見えるよう 変更しましたこれにより第 6 引数のタイムアウト値を省略したコンストラクタを呼び出せるようになります。
シグナリング connect メッセージの metadata を文字列だけでなく任意の型を受け付けるよう変更しました
値は gson で変換できる必要があります。
Map
,List
は利用できます。文字列化された JSON を受け取った場合には、1.8.0 までと同様に、そのまま文字列値として取扱います。
シグナリング connect メッセージに
client_id
フィールドを追加しました - Sora 19.04 より前のバージョンでは、このフィールドを文字列に設定するとエラーになりますシグナリング connect メッセージの
signaling_notify_metadata
をSoraMediaChannel
コンストラクタから 指定できるようにしました値は gson で変換できる必要があります。
Map
,List
は利用できます。オプション引数のため、これまでのコードでは指定なしで動作します。
Java で書かれたアプリケーションでは
SoraMediaChannel
のコンストラクタでsignalingNotifyMetadata
を を指定するにはclientId
を渡す必要があります。アプリケーションとして指定しない場合には null を渡すことで シグナリング connect メッセージにはclient_id
が含まれません。
シグナリングパラメータのフィールド、型を Sora 19.04 に合わせ更新しました
型定義は https://sora-doc.shiguredo.jp/SIGNALING_TYPE を参照してください。
gradle.properties.example
に Robolectric の設定android.enableUnitTestBinaryResources=true
を追加しましたSora 19.04.0 での
connection_id
導入に伴い、ローカルトラック判定をconnection_id
で行うよう変更しました以前のバージョンでも動作するよう、offer に
connection_id
がない場合はこれまでどおりclient_id
を使います。
シグナリング通知機能の
network.status
に対応しましたcom.squareup.okhttp3:okhttp
を 3.14.1 にアップデートしましたio.reactivex.rxjava2:rxandroid
を 2.1.1 にアップデートしましたio.reactivex.rxjava2:rxjava
を 2.2.8 にアップデートしました
CHANGE¶
kotlin-stdlib-jdk7
依存をkotlin-stdlib
に変更しましたsora-android-sdk の
minSdkVersion
が 16 であるためです
ADD¶
CameraCapturerFactory
に解像度維持を優先するオプションを追加しました
1.8.0¶
- 日時:
2019-02-01
- 対応 Sora:
18.10.5
- 対応 libwebrtc:
71.16.0
UPDATE¶
libwebrtc を 71.16.0 にアップデートしました
Kotlin を 1.3.20 にアップデートしました
libwebrtc の M72 をスキップしました
バグにより AAR のビルドはできるが動作しないためです。
そのバグは M73 branch では修正済みです: https://webrtc-review.googlesource.com/c/112283
com.squareup.okhttp3:okhttp
を 3.12.1 にアップデートしましたio.reactivex.rxjava2:rxjava
を 2.2.6 にアップデートしましたAndroid Studio 3.3 に対応しました
com.github.dcendents:android-maven-gradle-plugin
を 2.1 にアップデートしましたWebRTC 1.0 spec に一部追従しました
offerToReceiveAudio/offerToReceiveVideo から Transceiver API に変更しました。
onTrack, onRemoveTrack は libwebrtc android sdk で対応されていないため見送っています。
CHANGE¶
SDP semantics のデフォルト値を Unified Plan に変更しました
upstream のシグナリングで audio や video が false の場合でも、他の配信者の audio や video のトラックを受信する SDP が Sora から offer されるように変更されます。
Plan B のときには audio false のときには audio track が SDP に含まれず、 video が false のときには video のトラックが含まれていませんでした。 これは Plan B の制限による挙動でした。
1.7.1¶
- 日時:
2018-10-18
- 対応 Sora:
18.04.12
- 対応 libwebrtc:
70.14.0
UPDATE¶
libwebrtc を 70.14.0 にアップデートしました
com.google.code.gson:gson
を 2.8.5 にアップデートしましたcom.squareup.okhttp3:okhttp
を 3.11.0 にアップデートしましたio.reactivex.rxjava2:rxandroid
を 2.1.0 にアップデートしましたio.reactivex.rxjava2:rxjava
を 2.2.2 にアップデートしましたio.reactivex.rxjava2:rxkotlin
を 2.3.0 にアップデートしました
ADD¶
Unified Plan に試験的に対応しました
正式対応ではありません
FIX¶
Sora サーバーで turn が無効の場合にシグナリングに失敗する問題を修正しました
1.7.0¶
- 日時:
2018-08-14
- 対応 Sora:
18.04.10
- 対応 libwebrtc:
68.10.1.1
UPDATE¶
Android Studio 3.1.4 に対応しました
libwebrtc を 68.10.1.1 にアップデートしました
ADD¶
webrtc-buildのバージョンと webrtc git のハッシュのログを追加しました
CHANGE¶
SoraSerivceUtil.isRunning を削除しました
Oreo で
ActivityManager#getRunningSerivces
が deprecated になったためこのユーティリティを利用していた場合はソースコードの変更が必要です
1.6.0¶
- 日時:
2018-07-24
- 対応 Sora:
18.04.10
- 対応 libwebrtc:
67.28.0.1
UPDATE¶
Android Studio 3.1.3 に対応しました
Kotlin を 1.2.51 にアップデートしました
PeerConnectionFactory を builder から作るよう修正しました
libwebrtc を 67.28.0.1 にアップデートしました
ADD¶
時雨堂ビルドの libwebrtc AAR を jitpack.io 上にホストし、本 SDK からは build.gradle での依存としました
本 SDK への依存設定に transitive を使っていないアプリケーションは別途依存を追加する必要があります
connect オプションの spotlight に対応しました
映像の解像度の選択肢を増やしました
SoraMediaOption に
enableCpuOveruseDetection
を追加しましたSoraMediaOption に
sdpSemantics
を追加しましたただし動作確認は Plan-B (
PLAN_B
) のみ
SoraMediaOption に
tcpCandidatePolicy
を追加しました - もともと内部的に用いていたオプションの格上げです - デフォルト値はこれまでと同様にENABLED
としていますNotificationMessage
にclientId
を追加しました必須項目です (SDK が設定します)
NotificationMessage
にaudio
,video
,metadata
,metadataList
,channelId
,spotlightId
,fixed
を追加しましたすべてオプション(nullable)項目です
SoraMediaChannel
にシグナリング通知機能のメッセージ受信コールバックを追加しましたonNotificationMessage
を実装することで独自のメッセージ処理が可能です
### CHANGE
NotificationMessage
のrole
,connectionTime
,numberOfConnections
,numberOfUpstreamConnections
,numberOfDownstreamConnections
フィールドをオプション(nullable)に変更しました型として下位互換性を壊す変更です これらのフィールドを参照しているソースコードは修正の必要があります
スナップショット機能を削除しました
MediaStream#label()
の代わりに id を使うよう変更しましたlibwebrtc の変更の影響です
label()
を用いているアプリケーションコードはid
に変更してください
### FIX
自分のストリーム判断に配信ストリームがある場合のみの条件があったが、マルチストリームの場合という 条件に置き換えました
single stream (pub, sub) およびマルチストリームではこの変更は影響ありません
スポットライトのみ影響があり、視聴モードでも自分の
clientId
が MSID のストリームについてonAddRemotestream
イベントを発火させないようになっています
1.5.4¶
- 日時:
2018-03-28
- 対応 Sora:
18.02.2
- 対応 libwebrtc:
66.8.1
UPDATE¶
PeerConnectionFactory.createPeerConnection/3 deprecated に対応しました
1.5.3¶
- 日時:
2018-03-28
- 対応 Sora:
18.02.2
- 対応 libwebrtc:
66.8.1
UPDATE¶
libwebrtc を 66.8.1 にアップデートしました
Kotlin を 1.2.31 にアップデートしました
1.5.2¶
- 日時:
2018-03-07
- 対応 Sora:
18.02
- 対応 libwebrtc:
64.5.0
UPDATE¶
libwebrtc を 64.5.0 にアップデートしました
deprecated warning を修正しました
Signaling connect 時に client offer の SDP を追加しました
Kotlin 1.2.30 にアップデートしました
1.5.1¶
- 日時:
2018-02-16
- 対応 Sora:
18.01
- 対応 libwebrtc:
63.13.0
ADD¶
Sora Android SDK の API ドキュメントを追加しました
1.5.0¶
- 日時:
2018-02-15
- 対応 Sora:
18.01
- 対応 libwebrtc:
63.13.0
ADD¶
Sora のプッシュ API のメッセージを SoraMediaChannel.Listener に伝える機能を追加しました
1.4.1¶
- 日時:
2017-12-22
- 対応 Sora:
17.10
- 対応 libwebrtc:
63.13.0
UPDATE¶
依存ライブラリのバージョンをアップデートしました
1.4.0¶
- 日時:
2017-12-22
- 対応 Sora:
17.10
- 対応 libwebrtc:
63.13.0
UPDATE¶
Android Studio 3.0 に対応しました
gradle: 4.1
android-maven-gradle-plugin: 2.0
Kotlin 1.2.10 にアップデートしました
1.3.1¶
- 日時:
2017-12-21
- 対応 Sora:
17.10
- 対応 libwebrtc:
63.13.0
UPDATE¶
libwebrtc を 63.13.0 にアップデートしました
Kotlin 1.1.51 にアップデートしました
1.3.0¶
- 日時:
2017-09-22
- 対応 Sora:
17.08
- 対応 libwebrtc:
61.5.0
FIX¶
自身が down を持たない場合に multistream が有効にならない現象を修正しました
自身が up を持たない場合にリモートストリームが通知されない現象を修正しました
1.2.0¶
- 日時:
2017-09-21
- 対応 Sora:
17.08
- 対応 libwebrtc:
61.5.0
UPDATE¶
libwebrtc のバージョンをアップデートしました
1.1.0¶
- 日時:
2017-09-07
- 対応 Sora:
17.08
- 対応 libwebrtc:
60.11.0
UPDATE¶
依存ライブラリのバージョンをアップデートしました
ADD¶
sources jar 生成の設定を追加しました
libwebrtc.aar ダウンロードを gradle task 化しました
JitPack でにビルドと配布に対応しました
CHANGE¶
libwebrtc.aar を sora-android-sdk AAR に含めました
1.0.0¶
- 日時:
2017-08-30
- 対応 Sora:
17.08
- 対応 libwebrtc:
60.11.0
Sora Android SDK 最初のリリースです。