質問・問題
オーディオインターフェースを接続した場合、AudioMixing での楽曲配信が二重になってしまいますが、回避方法あはりますか ?
回答・解決方法
※ 当記事は Native および Framework 版 Video/Voice SDK が対象となります。
Video/Voice SDK が提供する Audio Mixing 機能は、マイクからの音声に楽曲ファイルの音源を合成 (ミックス) し、配信する機能です。
この機能は、トーク中に BGM を流したい、カラオケのような使い方をしたい場合に有効です。
配信端末にオーディオインターフェース (オーディオ I/F) を接続し、且つ オーディオ I/F 側のループバック設定をオンにした場合、複数箇所でミキシングが発生 (下図、黄色の箇所) するため BGM が二重に配信されてしまいます。
この場合、以下のいずれかの方法で、ミキシング発生箇所を 1 箇所のみにします:
- 方法 1: オーディオ I/F 側のループバックをオフにする
- 方法 2: Agora の StartAudioMixing API の loopback オプションを true にする
方法 1 について
オーディオ I/F 側のループバックを無効にした場合でも、AudioMixing から流れる BGM が配信者のヘッドフォンで聴けるのであれば、ループバックをオフにしてください。
方法 2 について
StartAudioMixing の loopback オプションを true にすることで、SDK は BGM をローカル側だけ再生するようになります。
この時、オーディオ I/F 側では音声と BGM がミックスされますので、そのデータが SDK への音声入力となります。
方法 2 の補足
SDK の AEC が強く機能してしまい BGM だけ削られてしまう場合は、以下のコードを追加して AEC 処理を強制無効にすることで改善が見込めます:
4.x
SetParameters("{\"che.audio.aec.enable\":false}")
3.x
SetParameters("{\"che.audio.enable.aec\":false}")