ステレオ音声を入出力する

Sora Android SDK では、ステレオ音声を入出力することができます。

ステレオ音声を入力する

ステレオ音声を入力するには、 SoraAudioOption.useStereoInputtrue を指定します。 このとき SDK が標準の JavaAudioDeviceModule を生成する際に、音声入力を 2 チャンネルで初期化します。

useStereoInput のデフォルト値は false です。

また、 MediaRecorder.AudioSourceaudioProcessingAutoGainControl についてもサンプルコードのように設定する必要があります。

val mediaOption = SoraMediaOption().apply {
    enableAudioUpstream()

    audioOption = SoraAudioOption().apply {
        // ステレオ入力を有効にする
        useStereoInput = true
        // MIC ではステレオマイクの近接センサーによる音量低下が発生する場合がある
        audioSource = MediaRecorder.AudioSource.CAMCORDER
        // libwebrtc の AGC が有効な場合はステレオで送信されない
        audioProcessingAutoGainControl = false
    }
}

MediaRecorder の詳細については Android のリファレンス をご確認ください。

ステレオ音声を出力する

受信したステレオ音声を出力するには、 SoraAudioOption.useStereoOutputtrue を指定します。 併せて、 AudioAttributes にオーディオ用途 USAGE_MEDIACONTENT_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 を生成せず、 useStereoInputuseStereoOutputaudioAttributes の指定は無視されます。 ステレオのネゴシエーション( answer SDP の Opus fmtp への stereo=1 / sprop-stereo=1 追記)はカスタム AudioDeviceModule でも動作しますが、 実際にステレオ入出力を行うかはカスタム AudioDeviceModule の実装次第です。

受信チャンネル数を確認する

受信した PCM のチャンネル数は、 AudioTrackSink.onDatanumberOfChannels で確認できます。 ステレオ音声を受信している場合は 2 が渡されます。

AudioTrackSink の登録方法、コールバックの実行スレッド、関連付けの解除については、 音声データ取得機能 をご確認ください。