如何设置ZEGOCLOUD SDK使通话对端无法听到本端播放的音乐
问题修复方案
该问题是OPPO部分ColorOS版本的定制音频策略导致的:系统在通话类音频场景下,默认会将本地媒体播放的音频混入麦克风上行流,即便用户佩戴耳机也不会阻断这个混音逻辑,你可以按以下步骤配置实现对端听不到本地音乐的效果:
- 基础配置拦截:在SDK初始化完成、加入房间前,调用SDK接口关闭系统播放音混流上行的开关
该配置为全局配置,配置一次后对所有通话场景生效,不会影响用户本地收听音乐、游戏音的效果。// 关闭系统播放音混入推流的默认逻辑 engine.enableMixSystemPlayToStream(false); - OPPO机型专属适配:如果上述配置在问题机型上未生效,针对OPPO品牌设备单独调整音频采集参数
if (Build.BRAND.toLowerCase().contains("oppo")) { // 强制指定采集源为纯麦克风,不附带系统内部音频 engine.setAudioSource(ZegoAudioSourceType.Microphone); // 配置安卓音频策略,关闭厂商定制的系统音频回路混入 ZegoAndroidAudioConfig audioConfig = new ZegoAndroidAudioConfig(); audioConfig.disableSystemAudioLoopback = true; engine.setAndroidAudioConfig(audioConfig); } - 场景兜底校验:在监听用户耳机插入/拔出的回调中,主动确认回路录制开关处于关闭状态,避免其他业务逻辑误开启
// 耳机状态变化回调中执行 engine.enableLoopbackRecording(false);
避坑提示:如果你的业务有播放音效、背景音乐的需求,若仅需要本地用户听到,不要调用SDK的
startAudioMixing接口推流到对端,直接调用系统原生播放器播放即可,上述配置不会拦截本地播放的音频输出到耳机/扬声器。
配置完成后可使用问题复现的OPPO设备做验证:佩戴耳机播放本地音乐,在对端设备录制通话音频,确认无本地音乐声即配置生效。
内容的提问来源于stack exchange,提问作者Kan Robert
相关产品推荐
相关产品推荐

