FAQ¶
一般¶
Sora Android SDK のライセンスはなんですか?¶
Sora Android SDK は WebRTC SFU Sora 以外の SFU にも利用できますか?¶
WebRTC SFU Sora のシグナリング方式に対応している SFU であれば利用できます。
サンプルコードはありますか?¶
あります。 https://github.com/shiguredo/sora-android-sdk-samples をご確認ください。
設定¶
Sora Android SDK が対応している音声コーデックを教えてください¶
Sora Android SDK は以下の音声コーデックに対応しています。
Opus
Sora Android SDK が対応している映像コーデックを教えてください¶
Sora Android SDK は以下の映像コーデックに対応しています。
VP8
VP9
AV1
H.264
H.265
H.264 と H.265 を利用する条件はありますか?¶
あります。 H.264 または H.265 を利用するには Android デバイスがハードウェアアクセラレーターを搭載している必要があります。
ハードウェアアクセラレーターを利用するにはどうすればいいですか?¶
ハードウェアアクセラレーターを利用する際は以下の条件を全て満たしている必要があります。
Android デバイスが利用したいコーデックのハードウェアアクセラレーターを搭載していること
SDK が利用したいコーデックのハードウェアアクセラレーターに対応していること
Android デバイスが対応している映像コーデックを確認する方法はありますか?¶
HardwareVideoEncoderFactory
または HardwareVideoDecoderFactory
クラスの getSupportedCodecs
メソッドを使って確認できます。
前者のクラスはエンコーダー、後者のクラスはデコーダーの対応しているコーデックの一覧を返します。
以下は Sora Android SDK のサンプルで、対応しているコーデックの一覧をログに出力している例です。
...
// 利用可能なコーデックの一覧
// デコーダー (受信)
RTCComponentFactory jp.shiguredo.sora.sample D decoderFactory supported codec: VP8 {}
RTCComponentFactory jp.shiguredo.sora.sample D decoderFactory supported codec: VP9 {profile-id=0}
...
// エンコーダー (送信)
RTCComponentFactory jp.shiguredo.sora.sample D encoderFactory supported codec: VP8 {}
RTCComponentFactory jp.shiguredo.sora.sample D encoderFactory supported codec: AV1 {}
RTCComponentFactory jp.shiguredo.sora.sample D encoderFactory supported codec: VP9 {profile-id=0}
RTCComponentFactory jp.shiguredo.sora.sample D encoderFactory supported codec: H264 {level-asymmetry-allowed=1, profile-level-id=42e01f, packetization-mode=1}
RTCComponentFactory jp.shiguredo.sora.sample D encoderFactory supported codec: H265 {}
...
getSupportedCodecs
は Android の MediaCodec API を利用しています。
Google Play ストアでは MediaCodec API を利用してデバイスのコーデックの一覧を表示するアプリケーションが配布されています。
そのようなアプリケーションを利用することで、詳細な情報を確認することができます。
特定の解像度が利用できません¶
Android デバイスのハードウェアアクセラレーターの問題で、指定した解像度を利用できないことがあります。
エンコーダー/デコーダーの初期化時に例外が発生したり、 エンコード/デコード処理が失敗して映像が正常に送受信されないケースがある場合があります。
Tip
160x120 など低めの解像度で問題が起きることが多いです。
注釈
問題が発生した場合は Discord へのフィードバックして頂けると助かります。
正常に動作しない端末一覧は 正常に動作しない場合がある端末 をご確認ください。
受信したストリームと Sora のコネクション ID を紐づける方法はありますか?¶
受信したストリームから Sora のコネクション ID を取得することができます。
SoraMediaChannel のコールバックイベントである onAddRemoteStream() から受信したストリーム( org.webrtc.MediaStream ) が連携されます。 Sora の仕様では org.webrtc.MediaStream の id にはそのストリームを配信しているクライアントのコネクション ID が設定されています。
受信したストリーム毎に音量を変更する方法はありますか?¶
警告
libwebrtc ライブラリの仕様について言及がありますが正確性は保証されません。
SoraMediaChannel のコールバックイベントである onAddRemoteStream() から受信したストリーム( org.webrtc.MediaStream ) が連携されます。 Sora は、1 つの org.webrtc.MediaStream について 1 つの音声トラック( org.webrtc.AudioTrack ) を設定します。 この音声トラックには音量を変更するための API が用意されており、この API を利用することで音量を変更することができます。
// SoraMediaChannel からのコールバックイベントを受け取るリスナー
private val channelListener = object : SoraMediaChannel.Listener {
// 受信したストリームが追加されたときに呼び出されるコールバック
override fun onAddRemoteStream(mediaChannel: SoraMediaChannel, ms: MediaStream) {
// Sora は MediaStream に 1 つの AudioTrack を設定するので 1 つ目の AudioTrack に対して音量を設定する
// AudioTrack.setVolume() の音量の範囲は double 型で 0.0 から 10.0 までの値が設定できる
// https://webrtc.googlesource.com/src/+/refs/heads/main/sdk/android/api/org/webrtc/AudioTrack.java
ms.audioTracks[0].setVolume(3.0)
}
// その他のリスナーインタフェースの実装
...
}
Sora の TURN 機能を無効にして利用できますか?¶
できません。
Sora Android SDK は Sora を turn = false
に設定して利用することはできません。
自己署名証明書は利用できますか?¶
できません。優先実装にて対応可能です。
サポート¶
Sora Android SDK のサポートは提供していますか?¶
サポートは提供しておりません。
質問やバグ報告はどこで行えますか?¶
Sora Android SDK についての質問やバグ報告は Discord の #sora-sdk-faq
チャンネルにお願いします。
ただし、 Sora のライセンス契約の有無に関わらず、応答時間と問題の解決を保証しませんのでご了承ください。
質問やバグ報告にあたり、開発環境のバージョンを「メジャーバージョン、マイナーバージョン、メンテナンスバージョン」まで含めて書いてください。
利用している Sora のバージョン
利用している Sora Android SDK のバージョン
Android Studio を動作させている OS とそのバージョン
Android Studio のバージョン
Android デバイスのモデル名と Android OS のバージョン
リリース¶
リリースサイクルを教えてください¶
Sora のメジャーバージョンアップ後に、 Sora へ追従を目的としたバージョンアップを行います。
ただし、具体的なリリースサイクルはありません。