WebRTC占用麦克风问题(iOS&&Android)

WebRTC在SDP协商后会默认打开手机的音频资源,这中体验不友好,因此需要对源码进行改动,如下为需要更改的流程:

RTCAudioTrack->RTCAudioSource->RTCRemoteAudio->AudioRtpReceiver->WebRtcVoiceMediaChannel->WebRtcVoiceEngine->AudioDeviceModuleIOS->AudioDeviceIOS->VoiceProcessingAudioUnit

首先需要对VoiceProcessingAudioUnit进行更改,防止WebRTC直接开启麦克风,如下所示:

1、VoiceProcessingAudioUnit::Init()该方法内部会开启AudioUnit,注释掉其内容

2、VoiceProcessingAudioUnit::Initialize(Float64 sample_rate)记住采样率即可,其他实现注释掉

3、新增方法SetupAudioUnit(初始化苹果的音频单元),SetupCapture(配置麦克风),SetupPlay(配置外放)

4、新增外部接口SetSpeakMute来控制麦克风是否需要启用,iOS中并不能单独的开关麦克风,每次开关都需要把整个音频单元卸载重新初始化,如下实现:

接下来主要实现上层如何调用到底层,WebRTC在创建的时候会生成RTCAudioTrack

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值