基於Android實現K歌場景下超低延時耳返
1 功能簡介
在音視訊應用中我們經常涉及到耳機麥克風和裝置麥克風的切換。不同聲道的配置。在遇到這種情況的時候,我們如何配置呢?
- 耳返即耳機採集監聽,在裝置上插入耳機(普通耳機或藍芽耳機)後,能從本機耳機側聽到本裝置麥克風採集的聲音。
- 雙聲道即兩個聲音通道,聽到聲音時可以根據左耳和右耳對聲音相位差來判斷聲源的具體位置。ZEGO Express SDK 預設音訊採集單聲道,當開發者有高音質需求時,可開啟雙聲道採集功能,通過專門的雙聲道採集裝置可以採集到雙聲道的音訊資料並進行推流。
2 示例原始碼下載
請參考 下載示例原始碼 獲取原始碼。
相關原始碼請檢視 “/ZegoExpressExample/AdvancedAudioProcessing/src/main/java/im/zego/advancedaudioprocessing/voicechange” 目錄下的檔案。
3 前提條件
在進行耳返與聲道設定之前,請確保:
- 已在專案中整合 ZEGO Express SDK,實現基本的實時音視訊功能,詳情請參考 快速開始 - 整合 和 快速開始 - 實現流程。
- 已在 ZEGO 控制檯 建立專案,並申請有效的 AppID,詳情請參考 控制檯 - 專案管理 中的“專案資訊”。
4 使用步驟
4.1 設定耳返
4.1.1 開啟耳返
開啟預覽後或者開始推流後呼叫 enableHeadphoneMonitor
開啟採集監聽即耳返,主播方講話後,會聽到自己的聲音。
開啟耳返後,在連線上耳麥時耳返功能才實際生效。
engine.enableHeadphoneMonitor(true);
4.1.2 設定耳返音量
開啟預覽後或者開始推流後可呼叫 setHeadphoneMonitorVolume
調整耳返的音量。
其中引數 “volume” 為採集耳返音量大小,取值範圍為 0 ~ 200,預設 “100”。
engine.setHeadphoneMonitorVolume(100);
4.2 設定聲道
setAudioConfig
和 setAudioCaptureStereoMode
都需要在 startPublishingStream
、startPlayingStream
、startPreview
、createMediaPlayer
和 createAudioEffectPlayer
4.2.1 設定音訊雙聲道編碼
在推流前呼叫 setAudioConfig
方法設定音訊質量相關配置,其中音訊編碼聲道引數 “channel” 需要設定為雙聲道編碼(預設值為單聲道編碼),其他引數取預設值即可。
ZegoAudioConfig audioConfig = new ZegoAudioConfig(ZegoAudioConfigPreset.HIGH_QUALITY_STEREO));
ZegoExpressEngine.getEngine().setAudioConfig(audioConfig);
4.2.2 設定音訊採集雙聲道模式
呼叫 setAudioCaptureStereoMode
方法開啟音訊雙聲道採集,並根據實際場景設定 “Mode” 引數(預設值為始終不開啟雙聲道),用於實現始終開啟雙聲道採集或僅在推流時開啟雙聲道。
ZegoExpressEngine.getEngine().setAudioCaptureStereoMode(ZegoAudioCaptureStereoMode.ALWAYS);
4.2.3 推流
請參考 快速開始 - 實現流程 的 “3.3 推流”,此時所推流的音訊是雙聲道,拉流端無需做額外的配置,直接拉流即可播放雙聲道音訊。
雙聲道採集需要推流端使用支援雙聲道採集的裝置作為音訊輸入源,一般手機的麥克風不支援採集雙聲道。
5 API 參考列表
方法 | 描述 |
---|---|
enableHeadphoneMonitor |
開啟/關閉耳返 |
setHeadphoneMonitorVolume |
設定耳返音量 |
setAudioConfig |
設定音訊質量配置 |
setAudioCaptureStereoMode |
設定音訊採集雙聲道模式 |
startPublishingStream |
開始推流 |