「融合通訊常見問題」月刊將在每月末與大家見面,該月刊主要包括錯題集、知識加油站、技術加餐三大板塊,彙集實踐過程中的易錯問題和解題思路,分享融合通訊領域的前沿資訊和技術乾貨,為您的開發提效加速,為您的進階之路添磚加瓦。
本期內容概覽
看這裡!別人踩過的坑快繞開!
邊聽音樂邊溝通的過程中人聲變小。
呼叫離開房間介面後,攝像頭仍處於使用狀態。
觀眾切換至連麥者時,聽到主播的聲音兩次重複播放。
Web 端旁路推流之後,拉流端拉不到流。
關閉攝像頭後重新開啟,攝像頭被切換無法保持。
使用 Web 端純音訊通話場景時,聽不到聲音。
這些知識點你知道嗎?
為什麼開啟攝像頭失敗?
如何處理視訊模糊問題?
為什麼視訊會出現卡頓?
一、錯題集
語聊房
疑難問題1: 語聊房伴音場景,邊聽音樂邊溝通的過程中人聲變小。
易錯等級: ⭐⭐⭐⭐
錯題原因:
伴音音量和人聲音量設定不合理,導致接收端的音訊效果較差。
解題思路:
(1)setAudioMixingPlaybackVolume 的音量建議設定不超過 25,超過之後可能伴音過程中語音溝通的體驗會受到影響;
(2)adjustRecordingSignalVolume 該介面預設音量為 100,建議不要調整。
疑難問題2: 呼叫離開房間介面後,攝像頭仍處於使用狀態。
易錯等級: ⭐⭐⭐
錯題原因:
使用 nertc-web-sdk 時,部分介面出現重複呼叫。Stream.init(初始化音視訊流物件)被重複兩次呼叫的情況下,本地被建立了兩條不同的視訊流,同時使用攝像頭裝置。在 Client.leave(離開音視訊房間)時,只有一條流的裝置使用被結束,致使攝像頭仍在被使用狀態。
解題思路:
業務中,需管理 Stream.init 呼叫次數及 Stream 物件的生命週期,每個 Stream 只需初始化一次,以確保音視訊正常使用。
互動直播
疑難問題3: 觀眾切換至連麥者時,聽到主播的聲音兩次重複播放。
易錯等級: ⭐⭐⭐
錯題原因:
互動直播應用中,觀眾及連麥者的切換,涉及播放器從 CDN 拉流切換至加入 RTC 房間訂閱主播音視訊。在觀眾連麥成功後,未停止播放器播放而直接加入音視訊房間並訂閱主播音視訊,致使主播音訊同時從播放器以及音視訊房間中重複播放。
解題思路:
互動直播中,連麥者上麥的標準實現流程:
(1)連麥成功
(2)退出播放,釋放播放器例項和資源 mLivePlayer.release();
(3)初始化音視訊並進入音視訊房間
(4)訂閱遠端音視訊
疑難問題4: Web 端旁路推流之後,偶現拉流端拉不到流。
易錯等級: ⭐⭐⭐
錯題原因:
推旁路流(addTasks 或者 updateTasks)和推 RTC 房間流(publish)的時序錯誤,導致互動直播混流時缺少資料來源
解題思路:
推旁路流之前確保對應的流已在 RTC 房間釋出成功,所以需要再 publish 成功之後再去呼叫 addTasks;
如果旁路佈局中還包含其他使用者的流,那得收到對應使用者的 stream-added/stream-subscribed 流回撥之後再去呼叫 addTasks 或者 updateTasks。
通用問題
疑難問題5: 使用音視訊時,關閉攝像頭後重新開啟,攝像頭被切換無法保持。
易錯等級: ⭐⭐⭐
錯題原因:
開關視訊使用 NERtc#enableLocalVideo() 介面,此時開啟前置或者後置攝像頭是由上一次呼叫 setLocalVideoConfig 中傳入的 frontCamera 引數決定的,如果在呼叫 enableLocalVideo 之後重新設定了 setLocalVideoConfig 介面中的 frontCamera 引數,那就以這個引數為準去開啟對應的攝像頭。
解題思路:
setLocalVideoConfig 為全量引數配置介面,重複呼叫此介面時,SDK 會重新整理此前的所有引數配置,以最新的傳參為準。所以每次修改配置時都需要設定所有引數,未設定的引數將取預設值。
音訊通話
疑難問題6:
使用 Web 端純音訊通話場景時,在接收到到訂閱的遠端視訊流之後,聽不到聲音。
易錯等級: ⭐
錯題原因:
Web 端接收到訂閱的遠端音訊之後需要呼叫 play 方法播放。
解題思路:
在 stream-subscribed 回撥(表示訂閱遠端的音/視訊流成功)裡面,呼叫 play 去播放遠端的音視訊流,此時 audio 和 video 推薦均設定為 true。
二、知識加油站
為什麼開啟攝像頭失敗?
攝像頭開啟失敗有多種原因,您可以參考如下步驟進行排查:
- 確認攝像頭許可權有沒有開啟。Android、iOS/macOS 系統都有許可權管理,請在系統設定中檢查。同時 Android 上有些安全軟體也管理許可權。
- 檢查是否有其他應用佔據了攝像頭。關閉其他應用,重啟手機再試。
- 攝像頭硬體問題。開啟系統自帶的拍攝視訊程式看是否可以錄影。
如何處理視訊模糊問題?
視訊模糊一般是由視訊位元速率或解析度過低導致。
- 確認 SDK 中解析度的設定,您可以通過 setLocalVideoConfig 方法方法來設定視訊相關的屬性。
- 嘗試 4G/5G 連線,或者其他 WiFi 訊號排除網路問題。
- 接收端接受的是大流還是小流,是小流的話可以呼叫介面申請大流關閉小流。
- 如果有視訊前處理,請先關閉前處理進行測試,排除前處理的問題。
為什麼視訊會出現卡頓?
視訊卡頓問題一般由網路、裝置效能等原因造成。
- 判斷是持續性的還是一次性的卡頓。一次性的卡頓是由網路和裝置的隨機性導致,屬於正常現象。
- 檢查網路狀態,判斷連線是否正常,是否能夠上網。
- 如果網路連線正常但依然卡頓,請嘗試更換網路連線,檢查在網路狀態良好的條件下是否依然卡頓。
- 如果網路良好且條件允許,請嘗試更換裝置。
- 如果有視訊前處理,例如美顏等,請先關閉前處理,檢查卡頓是否由於前處理導致。
三、技術加餐
內容概述:WebRTC M97 目前在 Chrome 的穩定版中可用,包含 10 多個錯誤修復、增強和穩定性/效能改進。
技術乾貨 | C++ 四大特性之三:concept 特性詳解
內容概述:模板的演進是 C++ 發展史中一條十分重要的線,筆者認為 concept 是這條線中最大的一個特性,本文將詳細解讀 C++ 的 concept 特性,以期對 C++ 有更深入的瞭解。
內容概述:本文主要基於 WebRTC release-72 原始碼及雲信音視訊團隊積累的相關經驗而成,主要分析以下問題: ADM(Audio Device Manager)的架構如何?ADM(Audio Device Manager)的啟動流程如何?ADM(Audio Device Manager)的資料流向如何?本文主要是分析相關的核心流程,以便於大家有需求時,能快速地定位到相關的模組。