1. 程式人生 > 其它 >音視訊開發進階指南:基於iOS實現超低延時耳返

音視訊開發進階指南:基於iOS實現超低延時耳返

1 功能簡介

在音視訊應用中我們經常涉及到耳機麥克風和裝置麥克風的切換。不同聲道的配置。在遇到這種情況的時候,我們如何配置呢?

  • 耳返即耳機採集監聽,在裝置上插入耳機(普通耳機或藍芽耳機)後,能從本機耳機側聽到本裝置麥克風採集的聲音。
  • 雙聲道即兩個聲音通道,聽到聲音時可以根據左耳和右耳對聲音相位差來判斷聲源的具體位置。ZEGO Express SDK 預設音訊採集單聲道,當開發者有高音質需求時,可開啟雙聲道採集功能,通過專門的雙聲道採集裝置可以採集到雙聲道的音訊資料並進行推流。

2 示例原始碼下載

請參考 下載示例原始碼 獲取原始碼。

相關原始碼請檢視 “/ZegoExpressExample/Examples/AdvancedAudioProcessing/EarReturnAndChannelSettings” 目錄下的檔案。

3 前提條件

在進行耳返與聲道設定之前,請確保:

4 使用步驟

4.1 設定耳返

4.1.1 開啟耳返

開啟預覽後或者開始推流後呼叫 enableHeadphoneMonitor 開啟採集監聽即耳返,主播方講話後,會聽到自己的聲音。

開啟耳返後,在連線上耳麥時耳返功能才實際生效。

[[ZegoExpressEngine sharedEngine] enableHeadphoneMonitor:YES];

4.1.2 設定耳返音量

開啟預覽後或者開始推流後可呼叫 setHeadphoneMonitorVolume 調整耳返的音量。

其中引數 “volume” 為採集耳返音量大小,取值範圍為 0 ~ 200,預設為 “100”。

[[ZegoExpressEngine sharedEngine] setHeadphoneMonitorVolume:100];

4.2 設定聲道

setAudioConfigsetAudioCaptureStereoMode 都需要在 startPublishingStreamstartPlayingStreamstartPreviewcreateMediaPlayer

createAudioEffectPlayer 之前呼叫才有效。

4.2.1 設定音訊雙聲道編碼

呼叫 setAudioConfig 方法設定音訊質量相關配置,其中音訊編碼聲道引數 “channel” 需要設定為雙聲道編碼(預設值為單聲道編碼),其他引數取預設值即可。

ZegoAudioConfig *audioConfig = [ZegoAudioConfig configWithPreset:ZegoAudioConfigPresetHighQualityStereo];
[[ZegoExpressEngine sharedEngine] setAudioConfig:audioConfig];

4.2.2 設定音訊採集雙聲道模式

呼叫 setAudioCaptureStereoMode 方法開啟音訊雙聲道採集,並根據實際場景設定 “Mode” 引數(預設值為始終不開啟雙聲道),用於實現始終開啟雙聲道採集或僅在推流時開啟雙聲道。

[[ZegoExpressEngine sharedEngine] setAudioCaptureStereoMode:ZegoAudioCaptureStereoModeAlways];

4.2.3 推流

請參考 快速開始 - 實現流程 的 “3.3 推流”,此時所推流的音訊是雙聲道,拉流端無需做額外的配置,直接拉流即可播放雙聲道音訊。

雙聲道採集需要推流端使用支援雙聲道採集的裝置作為音訊輸入源,一般手機的麥克風不支援採集雙聲道。

5 API 參考列表

方法 描述
enableHeadphoneMonitor 開啟/關閉耳返
setHeadphoneMonitorVolume 設定耳返音量
setAudioConfig 設定音訊質量配置
setAudioCaptureStereoMode 設定音訊採集雙聲道模式
startPublishingStream 開始推流

6 常見問題

  1. 推流端開啟雙聲道採集後,拉流端(iOS)使用有線耳機能正常播放雙聲道,但使用 AirPods 播放時卻變成了單聲道?

    iOS 由於系統限制,在使用藍芽耳機時存在如下場景:

    • 如果拉流端既推流又需要拉流,例如通話場景下同時執行播放和錄音操作,則只能播放單聲道。
    • 如果確定拉流端僅需拉流而不用推流,則可以聯絡 ZEGO 技術支援獲取解決方案。

獲取Demo

獲取本文的Demo、開發文件、技術支援。
獲取SDK的商務活動、熱門產品。
註冊即構ZEGO開發者帳號,快速開始。