音視頻開發常見問題(五):視頻黑屏

来源:https://www.cnblogs.com/zegodeveloper/archive/2023/10/27/17790818.html
-Advertisement-
Play Games

本文介紹了視頻黑屏的可能原因和解決方案。主要原因包括用戶主動關閉視頻、網路問題和渲染問題。解決方案包括優化網路穩定性、確保視頻渲染視圖設置正確、提供清晰的提示、實時監測網路質量、使用詳細的日誌系統、開啟視頻預覽功能、使用視頻流回調、處理編解碼問題、處理許可權問題、自定義視頻渲染邏輯和使用實時反饋系統。... ...


摘要

本文介紹了視頻黑屏的可能原因和解決方案。主要原因包括用戶主動關閉視頻、網路問題和渲染問題。解決方案包括優化網路穩定性、確保視頻渲染視圖設置正確、提供清晰的提示、實時監測網路質量、使用詳細的日誌系統、開啟視頻預覽功能、使用視頻流回調、處理編解碼問題、處理許可權問題、自定義視頻渲染邏輯和使用實時反饋系統。此外,即構 Express SDK 提供了一系列的功能和方法來幫助開發者定位和解決視頻黑屏問題。

一、前言

對於音視頻開發者來說,掌握排查問題的技術技巧方法是非常必要的,排查問題的技術方法也能夠幫助開發者更好地瞭解音視頻技術的原理和工作機制,從而更加深入地理解音視頻開發中遇到的各種問題。

即構基於多年實時互動領域技術的沉澱和客戶服務保障,我們將推出《音視頻技術常見問題FAQ》系列文章,將音視頻技術領域的常見問題和經驗分享出來,同時會針對具體問題附上業務通識和常用解決方案以及案例經驗,希望本系列能成為你手邊的音視頻通識冊子,幫助到開發者們快速定位問題並找到合適的解決方案。

本系列將不定期更新,目前已整理了以下常見問題:

  1. 視頻卡頓
  2. 延時高
  3. 音畫不同步
  4. 視頻花屏、綠屏
  5. 視頻黑屏
  6. 視頻放大或黑邊
  7. 首開慢
  8. 音視頻流控
  9. 視頻模糊
  10. 無法打開攝像頭
  11. 音頻回聲
  12. 音量太小
  13. 音頻雜訊
  14. 無聲
  15. 上下麥音量變化

本文是《音視頻技術常見問題FAQ》系列的第五篇文章。我們將專註於 “視頻黑屏” 這一問題,詳細分析可能導致此問題的原因,用戶主動關閉視頻、網路問題和渲染問題等,併為開發者提供相應的解決方案。希望本文能幫助大家更好地理解和解決實時音視頻中的這一常見問題。

二、視頻黑屏的表現

視頻黑屏是音視頻應用中一個表示視頻無法正常播放或顯示的現象。

視頻黑屏的定義:是指在使用音視頻應用,如直播、視頻會議或音視頻通信時,預期應該顯示視頻圖像的地方,卻只顯示一個純黑的畫面。
視頻黑屏的現象:畫面是黑的,沒有圖像,但是有聲音。

首先,我們需要明白當直播中出現視頻黑屏、花屏、綠屏、閃屏等畫面問題時,問題可能出現在推流端(即視頻來源、主播端)或者拉流端(即播放器、觀眾端)。

常見的視頻黑屏有以下三種情況:

1. 本地預覽視頻黑屏,拉流視頻正常

2. 本地預覽視頻正常,拉流視頻黑屏

3. 本地預覽拉流視頻都黑屏

直播的數據流是單向的,從推流端流向拉流端。如果推流端沒有發送正確的視頻數據,那麼拉流端自然無法正常顯示;反之,如果推流端的數據是正確的,但拉流端出現問題,也可能導致黑屏。

如何簡單快速地判斷問題出現在哪一端?

  • 使用第三方工具觀看: 可以使用VLC、ffplay等第三方播放器嘗試拉流。如果在第三方播放器上可以正常播放,那麼問題可能出在拉流端的播放器上;反之,那麼問題更有可能出在推流端。
  • 查看推流端預覽: 在開始推流之前,主播通常可以在本地預覽視頻。如果預覽正常,但拉流端黑屏,那麼問題可能與推流的編碼或網路傳輸有關;如果預覽也是黑屏,問題可能與攝像頭或其他採集環節有關。

通過上述方法,通常可以初步判斷問題出現的環節,從而更有針對性地進行進一步的診斷和解決。

三、視頻黑屏產生的原因和排查辦法

產生的原因

出現黑屏的原因有很多,常見原因有:

- 網路問題:如果本地網路連接很差或者中斷,就會看不到其他用戶的視頻。如果通話中有一方的網路出現問題,其他人也看不到這個用戶的視頻。

- 渲染問題: 渲染視圖設置不正確或者生命周期異常也會導致黑屏。

- 另外,如果用戶主動關閉視頻,也會出現黑屏,包括但不限於沒有許可權、主動禁用、切後臺等情況。

如何自行排查

1 本地預覽視頻黑屏,拉流視頻正常

這種情況一般是攝像頭故障或者被占用等原因導致本地視頻採集出現問題,請按以下步驟排查:

  • 檢查推流質量參數,查看採集幀率、渲染幀率是否正常。(這個排查方法的前提需要基於開發者前期打點才可統計到數據)
    • 如果採集幀率為零,請檢查用戶是否禁用本地視頻。或者設置錯誤的採集/編碼解析度。
    • 如果上述配置正常,可能為攝像頭硬體問題。打開系統自帶的拍攝視頻程式看是否可以錄像,如果不行,需要更換攝像頭。
    • 如果攝像頭沒有問題,需要確認是否開啟攝像頭許可權。Android 和 iOS 系統都有許可權管理,請在系統設置中檢查。
  • 檢查是否有其他應用占據攝像頭。關閉其他應用然後打開自己的應用進行測試。Windows 平臺請檢查是否有虛擬攝像頭占用物理攝像頭。
  • 如果採集幀率不為零,渲染幀率為零,請參考第三種情況“本地預覽拉流視頻都黑屏”中的步驟進行排查。
  • 如果是自定義視頻採集,需要確認自定義視頻採集數據是否有問題,請註意時間戳的單位。

2 本地預覽視頻正常,拉流視頻黑屏

這種情況可能是遠端採集/推流問題或者本地下行網路原因導致,請參考以下步驟排查:

  • 檢查用戶是否禁用拉取遠端視頻。如果沒有禁用拉取遠端視頻,檢查拉流質量參數,查看網路幀率、解碼幀率、渲染幀率是否正常。如果網路幀率為零,建議更換網路查看是否還存在問題來排除網路原因,同時檢查遠端視頻攝像頭狀態。
  • 如果遠端視頻攝像頭狀態正常,檢查遠端用戶能否在自己的設備上看到自己的畫面。如果看不到,則是遠端用戶的視頻問題。請參考第一種情況“本地視頻黑屏,遠端視頻正常”中的步驟來進行排查。如果網路幀率不為零,渲染幀率為零,請參考第三種情況“本地預覽拉流視頻都黑屏”中的步驟進行排查。

3 本地預覽拉流視頻都黑屏

這種情況可能是渲染出現問題或者沒有啟用視頻,請參考以下步驟排查:

  • 檢查是否有禁用本地攝像頭及禁用拉取遠端視頻。如果是自定義視頻渲染,需要排查渲染模塊。檢查是否使用純音頻 SDK,而沒有使用視頻 SDK。
  • 檢查本地預覽和拉流渲染視圖是否設置正確。比如視圖的寬高是否均不為 0,視圖生命周期是否正常,視圖是否被其他黑色視圖覆蓋。

四、視頻黑屏的解決方案

原因1:網路問題

網路穩定性是音視頻通信中最關鍵的因素之一。不穩定的網路連接會導致數據包的延遲、丟失或錯亂,這些都可能導致視頻畫面黑屏或卡頓。

  • 延遲:音視頻數據包需要在一定時間內到達對方設備,如果網路延遲過大,數據包可能會被視為過期並被丟棄,導致黑屏。
  • 數據丟失:關鍵幀丟失是視頻黑屏的常見原因。沒有關鍵幀,解碼器無法正確解碼其他幀。
  • 錯亂:數據包的接收順序與發送順序不一致,可能導致解碼錯誤和視頻黑屏。

解決方法:

  • 對於網路不穩定的情況,通常的做法是採用丟幀策略,只保留關鍵幀,同時優化編解碼演算法來應對網路波動。
  • 使用前向糾錯、自適應碼率等技術來適應不同的網路環境。

原因2:渲染問題

在音視頻應用中,視頻數據經過解碼後需要渲染到屏幕上。如果渲染環節出現問題,即使視頻數據正常,用戶也無法看到畫面。

  • 視圖設置問題:視頻渲染視圖可能被其他視圖遮擋,或者視圖尺寸、位置設置錯誤。
  • 生命周期異常:如果應用的生命周期管理存在問題,如在某些狀態下未正確處理視頻渲染,也可能導致黑屏。

解決方法:

  • 確保視頻渲染視圖的設置正確,並且始終處於可見狀態。
  • 仔細管理應用的生命周期,確保在所有狀態下都正確處理視頻渲染。

原因3:用戶主動關閉視頻

某些場景下,用戶可能會主動關閉視頻或者由於許可權問題而無法開啟視頻。

解決方法:

  • 應用應該提供清晰的提示,讓用戶知道他們的視頻為何處於關閉狀態。
  • 對於許可權問題,應用應該在用戶嘗試開啟視頻時提醒並引導用戶授予許可權。

五、第三方音視頻解決方案- ZEGO 即構 Express SDK

即構 Express SDK 是音視頻廠商即構推出的一款提供實時音視頻通信能力的軟體開發工具包。 當遇到視頻黑屏問題時,ZEGO Express SDK 提供了一系列的功能和方法來幫助開發者定位和解決問題。以下從 Express SDK的功能點角度闡述如何解決視頻黑屏問題:

解決策略一:推流質量回調

  • 功能描述: 當主播進行推流時,ZEGO Express SDK 提供實時的推流質量回調,包括視頻幀率、碼率、延遲等關鍵指標。

  • 如何解決黑屏問題: 通過實時監測推流的質量,開發者可以迅速發現潛在的問題。例如,如果視頻幀率突然降低或為零,這可能是導致黑屏的原因。同時,根據碼率和延遲的情況,可以判斷網路的穩定性。對於不穩定的網路,可考慮降低推流的視頻質量或提示主播。

解決策略二:拉流質量回調

  • 功能描述: 當用戶拉取直播流時,ZEGO Express SDK 提供實時的拉流質量回調,如視頻緩衝次數、幀率、碼率等。

  • 如何解決黑屏問題: 黑屏可能是由於拉流的質量問題。例如,如果觀眾頻繁經歷視頻緩衝,可能是由於網路不穩定或者CDN問題導致的。通過拉流質量回調,開發者可以診斷問題並做出相應的處理,如切換備用的流地址、調整拉流的質量或給出用戶提示。

解決策略三:星圖音視頻質量運營平臺

  • 功能描述: 星圖是即構的實時網路質量可視化工具,能夠詳細展示推流和拉流的網路狀態、設備信息等。
  • 如何解決黑屏問題: 利用星圖,開發者可以更直觀地看到每個用戶的網路狀況、設備型號、系統版本等信息。對於黑屏問題,星圖可以幫助開發者快速找出可能的原因,比如某些特定的設備或網路環境與SDK不相容。

解決策略四:質量跟蹤

  • 功能描述: 即構提供了一個完整的質量跟蹤系統,可以跟蹤每一次的音視頻通話,記錄各種質量相關的參數。
  • 如何解決黑屏問題: 當出現黑屏問題時,開發者可以查閱相關的質量報告,找出問題的模式和規律。例如,某一天的某個時間段出現了大量的黑屏報告,可能是伺服器或CDN出現問題。或者某個特定地區的用戶報告黑屏,可能是網路環境導致的。

即構通過其Express SDK為開發者提供了全方位的工具和功能來幫助定位和解決視頻黑屏問題。但也需要開發者結合實際應用場景,仔細檢查和調整相關設置,確保音視頻通信的穩定性和質量。

六、總結

最後,我們來總結:視頻黑屏問題的排查和解決方案,首先我們先分析導致視頻黑屏的原因,包括用戶主動關閉視頻、網路問題、渲染問題等。針對上述四種情況分別都有對應的解決方案。

對於網路問題,建議採用丟幀策略、前向糾錯和自適應碼率等技術來適應不同的網路環境。對於渲染問題,需要確保視頻渲染視圖設置正確,並正確處理應用的生命周期。對於用戶主動關閉視頻或許可權問題,應提供清晰的提示和引導。

此外, ZEGO Express SDK 提供的解決方案,包括推流質量回調、拉流質量回調、星圖和質量跟蹤等功能。能夠幫助開發者快速定位和解決視頻黑屏問題,提高音視頻通信的穩定性和質量。

綜上所述,開發者通過理解可能導致視頻黑屏的原因並採取相應的解決方法,能夠有效解決視頻黑屏問題,提供穩定和高質量的音視頻通信體驗。

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

-Advertisement-
Play Games
更多相關文章
  • 來源:https://www.cnblogs.com/liuboren/p/17017421.html 0.前言 本篇文章是<<代碼整潔之道>>的學習總結, 通過這篇文章你將瞭解到整潔的代碼對項目、公司和你的重要性,以及如何書寫整潔的代碼. 通過命名、類、函數、測試這四個章節,使我們的代碼變得整潔. ...
  • MDI窗體的相關學習使用 1、設置MDI父窗體 在屬性中找到IsMdiContainer選項,設置為True 2、添加MDI子窗體,在項目中依次選擇添加->窗體,然後一直預設即可 添加後的項目目錄(Form1為父視窗,Form2、Form3為子視窗) 3、在Form1.cs中,創建對應MDI子視窗的 ...
  • 【學習課程】:【【小白入門 通俗易懂】2021韓順平 一周學會Linux】 https://www.bilibili.com/video/BV1Sv411r7vd/?p=14&share_source=copy_web&vd_source=2c07d62293f5003c919b2df9b2e054 ...
  • 電腦數據的表示 1. 數值數據的表示 1.1 各種進位數的表示 二進位 (Binary) :以 0b 或 0B 開頭,字元僅含0和1. 用下標2或者數字後面加B表示。如 $(1011)_2$ 或 $1011B$ 八進位 (Octal) :以 0o 或 0O 開頭,字元含0-7. 用下標8或者數字後 ...
  • 1. 圖論 1.1. 起源於萊昂哈德·歐拉在1736年發表的一篇關於“哥尼斯堡七橋問題”的論文 1.2. 要解決這個問題,該圖需要零個或兩個具有奇數連接的節點 1.3. 任何滿足這一條件的圖都被稱為歐拉圖 1.4. 如果路徑只訪問每條邊一次,則該圖具有歐拉路徑 1.5. 如果路徑起點和終點相同,則該 ...
  • 天下武功,無堅不摧,唯快不破!我的名字叫 Redis,全稱是 Remote Dictionary Server。 有人說,組 CP,除了要瞭解她外,還要給機會讓她瞭解你。 那麼,作為開發工程師的你,是否願意認真閱讀此心法抓住機會來瞭解我,運用到你的系統中提升性能。 我遵守 BSD 協議,由義大利人 ...
  • 一、背景 公元2023-10-12(周四)上午,組內的亞梅反饋,用戶生成標簽報死鎖異常 二、排查異常日誌 查到當時報錯的日誌 具體異常信息如下 server-provider-info-2023-10-12.0.log:2023-10-12 09:40:50.593 [TID:bf623bded18 ...
  • 在資料庫中,對象的創建者將成為該對象的所有者,具有對該對象進行查詢、修改和刪除等操作的許可權。同時,系統管理員也擁有與所有者相同的許可權。 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...