当前位置: 首页 > 知识库问答 >
问题:

WebRTC Android:来自手机扬声器的声音通过手机麦克风进入会议并产生回声

廖臻
2023-03-14

在一些移动设备中(如摩托罗拉One Power-Android10、Redmi Note 5 Pro-Android7.1.2),来自手机扬声器的声音通过手机麦克风进入会议并产生回声。只有当手机扬声器处于打开状态时,才会出现此回声问题。

我使用了AudioManagerMODE_IN_COMMUNICATION模式:

mAudioManager = (AudioManager) getSystemService(AUDIO_SERVICE);
mAudioManager.setMode(AudioManager.MODE_IN_COMMUNICATION);

此外,在音频约束下使用PeerConnectionFactory的createAudioSource()API创建音频源:

audioConstraints = new MediaConstraints();
audioConstraints.mandatory.add(new MediaConstraints.KeyValuePair("googEchoCancellation", "true"));
audioConstraints.mandatory.add(new MediaConstraints.KeyValuePair("googAutoGainControl", "true"));
audioConstraints.mandatory.add(new MediaConstraints.KeyValuePair("googHighpassFilter", "true"));
audioConstraints.mandatory.add(new MediaConstraints.KeyValuePair("googNoiseSuppression", "true"));

任何帮助或指导解决问题将不胜感激。

共有2个答案

越俊驰
2023-03-14

Android AudioManager 它提供对音量和振铃器模式控制的访问。

首先,使用< code > ismicrosphonemute()方法确定麦克风是开还是关。

通过帮助getDevices()查找所有连接的音频设备,这将有助于确定哪个麦克风用户想要静音

检测到目标麦克风后,使用setMicrophoneMute()设置麦克风静音

仰英发
2023-03-14

有些手机不能做硬件回声消除,即使他们宣传它是可用的。Redmi Note 5绝对是其中之一,看看https://github.com/signalapp/Signal-Android/blob/master/app/src/main/java/org/thoughtcrime/securesms/ApplicationContext.java,搜索HARDWARE_AEC_BLACKLIST。因此,要启用WebRTC AEC,请使用以下方法JavaAudioDeviceModule.class

setUseHardwareAcousticEchoCanceler(false)       
setUseHardwareNoiseSuppressor(false) 

(作为参考,请看看PeerConnectionClient.java的createJavaAudioDevice()-googlesource.com上的Checkout官方android示例

 类似资料:
  • 有没有办法通过耳机传送麦克风输入,同时通过智能手机扬声器使用音频输出? 我已经看了几个小时了,我看到这在iOS上显然是不可能的,但是Android呢... 我用的是三星Galaxy S4。 这是我的代码的一部分,即使耳机已插入,也可以通过扬声器路由音频输出: 但当我试图通过耳机的麦克风控制我的应用程序时,什么都没有。所以我试着用智能手机的那一个,它显然起作用了。 它看起来不像其他AudioMana

  • 播放音符 播放声音 录制 文字转语音

  • 是否可以通过Android设备的手机扬声器播放音频?手机内部较小的扬声器,可产生低音量声音,只有在将耳朵贴在电话上时才能听到。 希望我的描述足够清楚,可以理解我的问题。 如果可能的话,一个如何实现这一点的例子将非常有帮助。 目前我正在使用下面的代码初始化我的MediaPlayer。

  • 我在我的应用程序中为某些通知添加声音,就像这样: 播放通知声音时,即使将耳机插入手机,也会通过扬声器播放,因此扬声器和耳机都会播放该声音。 如果插上耳机,有没有办法只通过耳机播放声音?

  • 我想用插入式耳机通过扬声器播放音频文件。 但我得到了 IllegalStateException 有什么想法可以解决这个问题吗?

  • 问题的标题可能看起来重复,但我的问题有时是一个问题,会导致故障。当插入耳机时,我使用以下代码通过扬声器播放。 上面的代码以以下方式播放音频:1.很少时候,它可以完美播放。2.大多数时候,它在背景中播放循环声音。3.很少时候,它什么都不播放。 插入耳机时,系统声音播放似乎没有错误。例如-设置铃声正确播放相应的铃声,没有任何故障。请帮助我了解如何在插入耳机的情况下通过扬声器正确播放声音。