joinChannel
后,AVPlayer
播放声音变小。
情形1:
joinChannel
后,AVPlayer 播放声音变小
原因:
AVPlayer 默认使用的 audio session 是 AVAudioSessionCategoryPlayback
,加入频道,AE 引擎重启,并把 Category
设置为 AVAudioSessionCategoryPlayAndRecord
(自带回声消除等信号处理的模式),这样就会导致 AVPlayer
的声音变小。
解法:
自 v2.2 及之后版本,在调用 joinChannel
API 前,调用以下接口(每次调用 joinChannel
前,都需要设置一下这个参数),确保离开频道时不会把 AVPlayer 给停掉:
[self.agoraKit setParameters: @
"{\"che.audio.keep.audiosession\": true}"
];
如果设置之后,还是觉得声音太小,可以在 AVPlayer 出声音后 ,立即调用以下两个接口:
agoraKit.setEnableSpeakerphone(false)
agoraKit.setEnableSpeakerphone(true)
情形2:
joinChannel
后,用 webview 加载 http://music.baidu.com",然后发现音乐声很小。
原因:
同情形1。
解法:
同情形1。
joinChannel
后,AVPlayer
播放声音变小。情形1:
joinChannel
后,AVPlayer 播放声音变小原因:
AVPlayer 默认使用的 audio session 是
AVAudioSessionCategoryPlayback
,加入频道,AE 引擎重启,并把Category
设置为AVAudioSessionCategoryPlayAndRecord
(自带回声消除等信号处理的模式),这样就会导致AVPlayer
的声音变小。解法:
自 v2.2 及之后版本,在调用
joinChannel
API 前,调用以下接口(每次调用joinChannel
前,都需要设置一下这个参数),确保离开频道时不会把 AVPlayer 给停掉:[self.agoraKit setParameters: @
"{\"che.audio.keep.audiosession\": true}"
];
如果设置之后,还是觉得声音太小,可以在 AVPlayer 出声音后 ,立即调用以下两个接口:
情形2:
joinChannel
后,用 webview 加载 http://music.baidu.com",然后发现音乐声很小。原因:
同情形1。
解法:
同情形1。
joinChannel 后,后台播放 QQ、网易云音乐等声音停止。
解法:
自 v2.2 及之后版本,如果需要这种应用场景(在使用 Agora SDK 语音通话的同时播放 QQ 或网易云等第三方平台的音乐),需要设置以下 API:
setAudioProfile
设置使用AgoraAudioScenarioGameStreaming
模式;joinChannel
前,调用:setParameters(
"{\"che.audio.mixable.option\":true}"
)
Note: 在这种使用场景下,第三方的音乐会传到对端,因为 SDK 无法获取它的信号做回声消除。
joinChannel 后,ffmepg,ffplay 等播放 rtmp 流声音小
情形:
先用播放器播放 rtmp 流,再
joinChannel
,此时播放器声音会变小。原因:
因为播放器走的是媒体音量,sdk 连麦走的是通话音量。
解法:
在加入频道成功后,判断外放的情况后,调用以下接口:
[self.agoraKit setEnableSpeakerphone:YES];
游戏前后台切换时,外放声音小
情形:
前后台切换外放声音小。
原因:
在 App 切换前后台的过程中,如果去主动 Active AVAudioSession,改变 Category,则可能会导致这个问题。
解法:
iOS 在切换到后台时,系统会自己设置
AVAudioSession
和Category
。App 不需要主动设置。加入语音频道,用户自己做的播放器(使用 AuGraph、AudioUnit 播放声音)声音小
情形:
使用 ijkplayer 播放从 rtmp 流中获取的音频。其中,ijkplayer 播放音频使用
AudioQueues
,使用的 category 不是playAndRecord
.原因:
ijkplayer 播放音频使用的 category 是
playback
,当声网 SDK 引擎启动时发现 category 不是playAndRecord
时,会重启引擎。解法:
将 ijkplayer 播放音频时使用的 category 改为
playAndRecord
。iOS Demo 在某个手机上声音小
情形:
语音通话 demo,外放音量小。
原因:
解法:
joinChannel
前设置:setDefaultAudioRouteToSpeakerphone:YES
leavechannel 后 App 背景声音小、无声
情形:
游戏和直播中有非 SDK 播放的音效,离开频道后音效声音变小/无声。
原因:
游戏和直播中有非 SDK 播放的音效,一般起始是走的媒体音量,SDK 连麦后走的是通话音量。
leavechannel
后一般AVaudioSession
会被 deactive,切回通话音量系统,但是AVaudioSession
的category 等并没有改回原来的值。解法:
leaveChannel
成功的回调里,把AVAudioSession
的 category 和 mode 设置成joinChannel
之前的值。joinChannel
前设置如下接口:setParameters("{\"che.audio.keep.audiosession\":true}")
游戏 H5 页面,加入频道后声音变小
情形:
游戏 H5 页面,声音用 layabox 自带的引擎播放 WebAudio 或 H5Audio,但是只要加入 Agora 频道,游戏里面的声音就基本小的听不见了。只有 iOS 存在这个问题,Android 正常。
原因:
WKWebView 加载的 H5 是另外一个进程通过 AVAudioSession 去播放声音的,不是通过 SDK 播放的。
解法:
频道内 AudioServicesPlaySystemSound 声音音量小
情形:
AudioServicesPlaySystemSound 在 playAndRecord & ModeDefault 下,基本无声。
在 chatRoom scenario 下,其音量基本正常。
原因:
系统行为。
解法:
在 App call AudioServicesPlaySystemSound 前,调用以下代码:
Note:
@Zzh 你好
我们的客户端使用 flash air for ios ,接入sdk,现在出现游戏音效跟sdk冲突的问题。
再加入频道前已经调用
tAudioProfile
设置使用AgoraAudioScenarioGameStreaming
模式。上述问题我们如何处理。
app里面有些SVG资源里面包含声音,但是在房间里面可能会导致svg声音没法播放
加入频道后, AVAudioSession被sdk 占用,
建议使用声网的接口来播放
playeffect或者startaudiomixing