我正在使用 Agora,它有一些问题。其中之一是说话者的声音从媒体声音中传出来。
在浏览器上,它无法控制媒体音量,所以,我创建了一个应用程序来处理这个问题。在应用程序中,我发送音量增大/减小按钮来控制媒体音量。
但是,这种方法会产生啸叫问题。因此,我想将声音发送到STREAM_VOICE_CALL
Android 上的 AEC(声学回声消除)API 并使用它,以便声音出现在正确的流中,并且可以处理回声问题。
我写的,
private fun enableVoiceCallMode() {
with(audioManager) {
volumeControlStream = AudioManager.STREAM_VOICE_CALL
setStreamVolume(
AudioManager.STREAM_VOICE_CALL,
audioManager.getStreamVolume(AudioManager.STREAM_VOICE_CALL),
0
)
}
}
但这没有用。
而且,我尝试像这样应用 AEC:
private fun enableEchoCanceler() {
if (AcousticEchoCanceler.isAvailable() && aec == null) {
aec = AcousticEchoCanceler.create(audioManager.generateAudioSessionId())
aec?.enabled = true
} else {
aec!!.enabled = false
aec!!.release()
aec = null
}
}
private fun releaseEchoCanceler() {
aec!!.enabled = false
aec?.release()
aec = null
}
但是,我不知道是否AcousticEchoCanceler.create(audioManager.generateAudioSessionId())
正确。
请帮帮我。