android webrtc 无法静音问题解决办法

时间:2024-06-01 07:55:35

使用webrtc Android/ios发现无法静音,这是因为webrtc本意是要做视频通话,所以音频的流类型都默认设置为了STREAM_VOICE_CALL(即通话类型)
解决办法:
将流类型改为Music即可,具体如下

在源码找到WebRtcAudioTrack类,找到initPlayout方法(此方法是真正处理音频流的)
android webrtc 无法静音问题解决办法
方法内部找到 createAudioTrackOnLollipopOrHigher方法的调用
android webrtc 无法静音问题解决办法
查看方法内部

android webrtc 无法静音问题解决办法
关键点就在这里,AudioAttributes的两个属性值Usage和ContentType
ContentType需要设置为CONTENT_TYPE_MUSIC类型
再看DEFAULT_USAGE的定义
android webrtc 无法静音问题解决办法
在getDefaultUsageAttribute方法中返回Useage的类型,返回USAGE_MEDIA类型即可
重新编译生成jar包,运行调节声音发现声音模式变成了媒体类型,并且可以静音