ステレオ音声を入出力する¶
Sora Android SDK では、ステレオ音声を入出力することができます。
ステレオ音声を入力する¶
ステレオ音声を入力するには、 SoraAudioOption.useStereoInput に true を指定します。
このとき SDK が標準の JavaAudioDeviceModule を生成する際に、音声入力を 2 チャンネルで初期化します。
useStereoInput のデフォルト値は false です。
また、 MediaRecorder.AudioSource 、 audioProcessingAutoGainControl についてもサンプルコードのように設定する必要があります。
val mediaOption = SoraMediaOption().apply {
enableAudioUpstream()
audioOption = SoraAudioOption().apply {
// ステレオ入力を有効にする
useStereoInput = true
// MIC ではステレオマイクの近接センサーによる音量低下が発生する場合がある
audioSource = MediaRecorder.AudioSource.CAMCORDER
// libwebrtc の AGC が有効な場合はステレオで送信されない
audioProcessingAutoGainControl = false
}
}
MediaRecorder の詳細については Android のリファレンス をご確認ください。
ステレオ音声を出力する¶
受信したステレオ音声を出力するには、 SoraAudioOption.useStereoOutput に true を指定します。
併せて、 AudioAttributes にオーディオ用途 USAGE_MEDIA と CONTENT_TYPE_MUSIC を
指定することを推奨します。
useStereoOutput のデフォルト値は false です。
AudioAttributes の詳細については
Android のドキュメント
をご確認ください。
val mediaOption = SoraMediaOption().apply {
enableAudioDownstream()
audioOption = SoraAudioOption().apply {
useStereoOutput = true
audioAttributes =
AudioAttributes.Builder()
.setUsage(AudioAttributes.USAGE_MEDIA)
.setContentType(AudioAttributes.CONTENT_TYPE_MUSIC)
.build()
}
}
カスタム AudioDeviceModule を利用する場合¶
SoraAudioOption.audioDeviceModule にカスタム AudioDeviceModule を指定した場合、
SDK は標準の JavaAudioDeviceModule を生成せず、 useStereoInput 、
useStereoOutput 、 audioAttributes の指定は無視されます。
ステレオのネゴシエーション( answer SDP の Opus fmtp への stereo=1 /
sprop-stereo=1 追記)はカスタム AudioDeviceModule でも動作しますが、
実際にステレオ入出力を行うかはカスタム AudioDeviceModule の実装次第です。
受信チャンネル数を確認する¶
受信した PCM のチャンネル数は、 AudioTrackSink.onData の numberOfChannels で確認できます。
ステレオ音声を受信している場合は 2 が渡されます。
AudioTrackSink の登録方法、コールバックの実行スレッド、関連付けの解除については、 音声データ取得機能 をご確認ください。