1

我正在使用 Agora,它有一些问题。其中之一是说话者的声音从媒体声音中传出来。

在浏览器上,它无法控制媒体音量,所以,我创建了一个应用程序来处理这个问题。在应用程序中,我发送音量增大/减小按钮来控制媒体音量。

但是,这种方法会产生啸叫问题。因此,我想将声音发送到STREAM_VOICE_CALLAndroid 上的 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())正确。

请帮帮我。

4

0 回答 0