融合通訊常見問題2月刊 | 雲信小課堂

網易雲信發表於2022-03-02

「融合通訊常見問題」月刊將在每月末與大家見面,該月刊主要包括錯題集、知識加油站、技術加餐三大板塊,彙集實踐過程中的易錯問題和解題思路,分享融合通訊領域的前沿資訊和技術乾貨,為您的開發提效加速,為您的進階之路添磚加瓦。

本期內容概覽

看這裡!別人踩過的坑快繞開!

邊聽音樂邊溝通的過程中人聲變小。

呼叫離開房間介面後,攝像頭仍處於使用狀態。

觀眾切換至連麥者時,聽到主播的聲音兩次重複播放。

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。

二、知識加油站

為什麼開啟攝像頭失敗?

攝像頭開啟失敗有多種原因,您可以參考如下步驟進行排查:

  1. 確認攝像頭許可權有沒有開啟。Android、iOS/macOS 系統都有許可權管理,請在系統設定中檢查。同時 Android 上有些安全軟體也管理許可權。
  2. 檢查是否有其他應用佔據了攝像頭。關閉其他應用,重啟手機再試。
  3. 攝像頭硬體問題。開啟系統自帶的拍攝視訊程式看是否可以錄影。

如何處理視訊模糊問題?

視訊模糊一般是由視訊位元速率或解析度過低導致。

  1. 確認 SDK 中解析度的設定,您可以通過 setLocalVideoConfig 方法方法來設定視訊相關的屬性。
  2. 嘗試 4G/5G 連線,或者其他 WiFi 訊號排除網路問題。
  3. 接收端接受的是大流還是小流,是小流的話可以呼叫介面申請大流關閉小流。
  4. 如果有視訊前處理,請先關閉前處理進行測試,排除前處理的問題。

為什麼視訊會出現卡頓?

視訊卡頓問題一般由網路、裝置效能等原因造成。

  • 判斷是持續性的還是一次性的卡頓。一次性的卡頓是由網路和裝置的隨機性導致,屬於正常現象。
  • 檢查網路狀態,判斷連線是否正常,是否能夠上網。
  • 如果網路連線正常但依然卡頓,請嘗試更換網路連線,檢查在網路狀態良好的條件下是否依然卡頓。
  • 如果網路良好且條件允許,請嘗試更換裝置。
  • 如果有視訊前處理,例如美顏等,請先關閉前處理,檢查卡頓是否由於前處理導致。

三、技術加餐

資訊|WebRTC M97 更新

內容概述:WebRTC M97 目前在 Chrome 的穩定版中可用,包含 10 多個錯誤修復、增強和穩定性/效能改進。

技術乾貨 | C++ 四大特性之三:concept 特性詳解

內容概述:模板的演進是 C++ 發展史中一條十分重要的線,筆者認為 concept 是這條線中最大的一個特性,本文將詳細解讀 C++ 的 concept 特性,以期對 C++ 有更深入的瞭解。

技術乾貨 | WebRTC ADM 原始碼流程分析

內容概述:本文主要基於 WebRTC release-72 原始碼及雲信音視訊團隊積累的相關經驗而成,主要分析以下問題: ADM(Audio Device Manager)的架構如何?ADM(Audio Device Manager)的啟動流程如何?ADM(Audio Device Manager)的資料流向如何?本文主要是分析相關的核心流程,以便於大家有需求時,能快速地定位到相關的模組。

相關文章