基於Android實現K歌場景下超低延時耳返

来源:https://www.cnblogs.com/zegodeveloper/archive/2022/05/20/16291402.html
-Advertisement-
Play Games

在音視頻應用中我們經常涉及到耳機麥克風和設備麥克風的切換。不同聲道的配置。在遇到這種情況的時候,我們如何配置呢? 耳返即耳機採集監聽,在設備上插入耳機(普通耳機或藍牙耳機)後,能從本機耳機側聽到本設備麥克風采集的聲音。 雙聲道即兩個聲音通道,聽到聲音時可以根據左耳和右耳對聲音相位差來判斷聲源的具體... ...



1 功能簡介

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

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

2 示例源碼下載

請參考 下載示例源碼 獲取源碼。

相關源碼請查看 “/ZegoExpressExample/AdvancedAudioProcessing/src/main/java/im/zego/advancedaudioprocessing/voicechange” 目錄下的文件。

3 前提條件

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

4 使用步驟

4.1 設置耳返

4.1.1 開啟耳返

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

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

engine.enableHeadphoneMonitor(true);

4.1.2 設置耳返音量

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

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

engine.setHeadphoneMonitorVolume(100);

4.2 設置聲道

setAudioConfigsetAudioCaptureStereoMode 都需要在 startPublishingStreamstartPlayingStreamstartPreviewcreateMediaPlayercreateAudioEffectPlayer 之前調用才有效。

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 開始推流

獲取更多支持

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

音視頻場景解決方案分享,更多詳情可搜索官網(https://zegoguanwang.datasink.sensorsdata.cn/t/pB)
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 鏡像下載、功能變數名稱解析、時間同步請點擊 阿裡雲開源鏡像站 一,VMware配置。 因為要裝kali,所以要用到Debian。 這裡的處理器配置要根據自己的電腦硬體決定。 查找電腦處理器信息: 控制面板——設備管理器——處理器 這裡也是看著給,有條件的多給點,沒有就預設。 如果有人真的要問,最低推薦不就可 ...
  • Issue 升級 PostgreSQL 9.1 的一個集群,由於該集群用到了 PostGIS,在升級 PostgreSQL 時也需要升級一下 PostGIS。PostGIS 相關軟體安裝好後,在 PostgreSQL 11 中創建 postgis extension 時失敗,如下: alvindb= ...
  • 一、概述 Hue是一個開源的Apache Hadoop UI系統,最早是由Cloudera Desktop演化而來,由Cloudera貢獻給開源社區,它是基於Python Web框架Django實現的。通過使用Hue我們可以在瀏覽器端的Web控制臺上與Hadoop集群進行交互來分析處理數據,例如操作 ...
  • 一、安裝mysql8.0 ##下載mysql安裝包 http://mirrors.sohu.com/mysql/MySQL-8.0/ wget http://mirrors.sohu.com/mysql/MySQL-8.0/mysql-community-client-8.0.18-1.el7.x8 ...
  • 分享嘉賓:王懷遠 阿裡雲 表格存儲架構師 編輯整理:李瑤 DataFun 出品平臺:DataFunTalk 導讀: 大家好,我是王懷遠,我2015年加入阿裡雲,一直從事表格存儲的研發和架構相關工作,目前擔任表格存儲的架構師。我在存儲和資料庫領域有一些研發和架構方面的經驗。 本次分享的主題是一站式物聯 ...
  • 一、概述 Impala 直接針對存儲在 HDFS、HBase或 Amazon Simple Storage Service (S3)中的 Apache Hadoop 數據提供快速的互動式 SQL 查詢。Impala是一個基於Hive、分散式、大規模並行處理(MPP:Massively Paralle ...
  • 今天我們來認識一位接觸 OpenHarmony 不到一年,便帶領團隊成功開發出一款“啟航 KP“智能開發套件的開發者——軟通動力資深項目經理許北林。 ...
  • 這次更新的設計規範不僅新增了更多應用場景案例,幫助大家高效設計不同類型的業務應用,還通過清晰直觀的案例對比圖,幫助大家有效避坑。 ...
一周排行
    -Advertisement-
    Play Games
  • 什麼是工廠模式 工廠模式是最常用的設計模式之一,屬於創建型模式。 有點: 解耦,可以把對象的創建和過程分開 減少代碼量,易於維護 什麼時候用? 當一個抽象類有多個實現的時候,需要多次實例化的時候,就要考慮使用工廠模式。 比如:登錄的抽象類ILoginBusiness,它有2個實現,一個用用戶名密碼登 ...
  • 這次iNeuOS升級主要升級圖形渲染引擎和增加豐富的圖元信息,可以很快的方案應用。總共增加41個通用和行業領域的圖元應用,增加2154個圖元信息,現在iNeuOS視圖建模功能模塊總共包括5894個行業圖元信息。現在完全支持製作高保真的工藝流程和大屏展示效果。 ...
  • 效果圖先附上: 首先 這是我是參考 教程:使用 SignalR 2 和 MVC 5 實時聊天 | Microsoft Docs 先附上教程: 在“添加新項 - SignalRChat”中,選擇 InstalledVisual> C#>WebSignalR>,然後選擇 SignalR Hub 類 (v ...
  • 一、前言 項目中之前涉及到胎兒心率圖曲線的繪製,最近項目中還需要添加心電曲線和血樣曲線的繪製功能。今天就來分享一下心電曲線的繪製方式; 二、正文 1、胎兒心率曲線的繪製是通過DrawingVisual來實現的,這裡的心電曲線我也是採用差不多相同的方式來實現的,只是兩者曲線的數據有所區別。心電圖的數據 ...
  • 安裝 Redis # 首先安裝依賴gcc, 後面需要使用make編譯redis yum install gcc -y # 進入 /usr/local/src 目錄, 把源碼下載到這裡 cd /usr/local/src # 下載 redis 7.0.2 的源碼,github被牆,可以使用國內的地址 ...
  • Redis 的定義? 百度百科: Redis(Remote Dictionary Server ),即遠程字典服務,是一個開源的使用ANSI C語言編寫、支持網路、可基於記憶體亦可持久化的日誌型、Key-Value資料庫,並提供多種語言的API。 中文官網: Redis是一個開源(BSD許可),記憶體存 ...
  • 事情的起因是收到了一位網友的請求,他的java課設需要設計實現迷宮相關的程式——如標題概括。 我這邊不方便透露相關信息,就只把任務要求寫出來。 演示視頻指路👉: 基於JavaFX圖形界面的迷宮程式演示_嗶哩嗶哩_bilibili 完整代碼鏈接🔎: 網盤:https://pan.baidu.com ...
  • Python中的字典 Python中的字典是另一種可變容器模型,且可存儲任意類型對象。鍵值使用冒號分割,你可以看成是一串json。 常用方法 獲取字典中的值 dict[key] 如果key不存在會報錯,建議使用dict.get(key),不存在返回None 修改和新建字典值 dict[key]=va ...
  • 迎面走來了你的面試官,身穿格子衫,挺著啤酒肚,髮際線嚴重後移的中年男子。 手拿泡著枸杞的保溫杯,胳膊夾著MacBook,MacBook上還貼著公司標語:“加班使我快樂”。 面試官: 看你簡歷上用過MySQL,問你幾個簡單的問題吧。什麼是聚簇索引和非聚簇索引? 這個問題難不住我啊。來之前我看一下一燈M ...
  • tunm二進位協議在python上的實現 tunm是一種對標JSON的二進位協議, 支持JSON的所有類型的動態組合 支持的數據類型 基本支持的類型 "u8", "i8", "u16", "i16", "u32", "i32", "u64", "i64", "varint", "float", "s ...