日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

iOS端對(duì)AVAudioSession的統(tǒng)一管理

更新時(shí)間:

本文介紹遇到App有多個(gè)模塊因搶奪AVAudioSession的管理,引起參數(shù)不合理設(shè)置,導(dǎo)致音頻采集和播放異常的問題。

一些iOS App 在集成RTC SDK的同時(shí),也集成了播放器SDK,并且業(yè)務(wù)場(chǎng)景上播放器和RTC還需要同時(shí)工作。因?yàn)镽TC SDK和播放器SDK在內(nèi)部都在對(duì)AVAudioSession進(jìn)行管理,設(shè)置的參數(shù)只考慮了自己的場(chǎng)景需求,并且AVAudioSession是單例,這樣就造成RTC和播放器并行工作會(huì)出現(xiàn)音頻采集和音頻播放的各種問題。

為了解決此場(chǎng)景的AVAudioSession沖突的問題,RTC SDK和播放器需要將AVAudioSession的管理交由App來進(jìn)行統(tǒng)一管理。RTC iOS SDK提供如下API來實(shí)現(xiàn):

setAudioSessionOperationRestriction:DingRtcAudioSessionOperationRestrictionConfigureSession

除了RTC SDK,播放器SDK也需要做同樣的設(shè)置。

接下來就需要App統(tǒng)一管理AVAudioSession,根據(jù)使用場(chǎng)景設(shè)置合理Category、Options、Mode。

  • Category說明

Category

說明

AVAudioSessionCategorySoloAmbient

系統(tǒng)默認(rèn)

- 可以進(jìn)行播放,但是不能進(jìn)行錄制。

- 當(dāng)用戶將手機(jī)上的靜音撥片撥到“靜音”狀態(tài)時(shí),此時(shí)如果正在播放音頻,那么播放內(nèi)容會(huì)被靜音。

- 當(dāng)用戶按了手機(jī)的鎖屏鍵或者手機(jī)自動(dòng)鎖屏了,此時(shí)如果正在播放音頻,那么播放會(huì)靜音并被暫停。

- 如果你的App在開始播放的時(shí)候,此時(shí)QQ音樂等其他App正在播放,那么其他播放器會(huì)被靜音并暫停。

AVAudioSessionCategoryPlayback

適合播放場(chǎng)景

- 可以進(jìn)行播放,但是不能進(jìn)行錄制。

- 當(dāng)用戶將手機(jī)上的靜音撥片撥到“靜音”狀態(tài)時(shí),此時(shí)如果正在播放音頻,那么播放內(nèi)容仍會(huì)繼續(xù)。

- 當(dāng)用戶按了手機(jī)的鎖屏鍵或者手機(jī)自動(dòng)鎖屏了,此時(shí)如果正在播放音頻,那么播放內(nèi)容仍會(huì)繼續(xù)。

- 如果你的App在開始播放的時(shí)候,此時(shí)QQ音樂等其他App正在播放,那么其他播放器會(huì)被靜音并暫停。

AVAudioSessionCategoryPlayAndRecord

適合RTC場(chǎng)景

- 可以進(jìn)行播放,也可以進(jìn)行錄制。

- 當(dāng)用戶將手機(jī)上的靜音撥片撥到“靜音”狀態(tài)時(shí),此時(shí)如果正在播放音頻,那么播放內(nèi)容仍會(huì)繼續(xù)。

- 當(dāng)用戶按手機(jī)的鎖屏鍵或者手機(jī)自動(dòng)鎖屏,此時(shí)如果正在播放音頻,那么播放內(nèi)容仍會(huì)繼續(xù)。

- 如果你的App在開始播放的時(shí)候,此時(shí)QQ音樂等其他App正在播放,那么其他播放器會(huì)被靜音并暫停。

  • Options說明

Option

適用Category

作用

AVAudioSessionCategoryOption

MixWithOthers

AVAudioSessionCategoryPlayback

AVAudioSessionCategoryPlayAndRecord

和其他后臺(tái)App進(jìn)行混音。

AVAudioSessionCategoryOption

DuckOthers

AVAudioSessionCategoryPlayback

AVAudioSessionCategoryPlayAndRecord

和其他后臺(tái)App進(jìn)行混音,并且壓低其他App聲音。

AVAudioSessionCategoryOption

AllowBluetooth

AVAudioSessionCategoryPlayAndRecord

支持藍(lán)牙耳機(jī)。

AVAudioSessionCategoryOption

DefaultToSpeaker

AVAudioSessionCategoryPlayAndRecord

默認(rèn)免提聲音。

  • Mode說明

Mode

適用Category

場(chǎng)景

AVAudioSessionMode

Default

所有

默認(rèn)模式

AVAudioSessionMode

VoiceChat

AVAudioSessionCategory

PlayAndRecord

  • 這種模式適用于實(shí)時(shí)語音聊天或類似的應(yīng)用場(chǎng)景。

  • 它優(yōu)化了雙向通信(即同時(shí)收聽和講話),比如在進(jìn)行視頻通話、VoIP電話等時(shí)使用。

對(duì)于播放場(chǎng)景建議參數(shù)搭配:

AVAudioSessionCategoryPlayback + AVAudioSessionCategoryOptionMixWithOthers

對(duì)于RTC場(chǎng)景建議參數(shù)搭配有:

AVAudioSessionCategoryPlayAndRecord + AVAudioSessionCategoryOptionMixWithOthers + AVAudioSessionCategoryOptionAllowBluetooth + AVAudioSessionCategoryOptionDefaultToSpeaker + AVAudioSessionModeVoiceChat

開發(fā)者可以根據(jù)實(shí)際情況優(yōu)化參數(shù)設(shè)置。比如RTC場(chǎng)景如果希望RTC的聲音更清楚些,可以選擇AVAudioSessionCategoryOptionDuckOthers,代替推薦的AVAudioSessionCategoryOptionMixWithOthers;如果RTC是音樂場(chǎng)景,希望聲音盡量保持原始聲音,可以使用AVAudioSessionModeDefault,代替推薦的AVAudioSessionModeVoiceChat,此時(shí)為了避免回音,RTC需要啟用軟件3A。

所有對(duì)AVAudioSession參數(shù)的設(shè)置,請(qǐng)?jiān)诓シ牌鏖_始播放之前,在RTC開始推流拉流之前,否則可能會(huì)不生效,或者異常。