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

来源: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 微服務框架,幫助我們輕鬆構建和管理微服務應用。 本框架不僅支持 Consul 服務註 ...
  • 先看一下效果吧: 如果不會寫動畫或者懶得寫動畫,就直接交給Blend來做吧; 其實Blend操作起來很簡單,有點類似於在操作PS,我們只需要設置關鍵幀,滑鼠點來點去就可以了,Blend會自動幫我們生成我們想要的動畫效果. 第一步:要創建一個空的WPF項目 第二步:右鍵我們的項目,在最下方有一個,在B ...
  • Prism:框架介紹與安裝 什麼是Prism? Prism是一個用於在 WPF、Xamarin Form、Uno 平臺和 WinUI 中構建鬆散耦合、可維護和可測試的 XAML 應用程式框架 Github https://github.com/PrismLibrary/Prism NuGet htt ...
  • 在WPF中,屏幕上的所有內容,都是通過畫筆(Brush)畫上去的。如按鈕的背景色,邊框,文本框的前景和形狀填充。藉助畫筆,可以繪製頁面上的所有UI對象。不同畫筆具有不同類型的輸出( 如:某些畫筆使用純色繪製區域,其他畫筆使用漸變、圖案、圖像或繪圖)。 ...
  • 前言 嗨,大家好!推薦一個基於 .NET 8 的高併發微服務電商系統,涵蓋了商品、訂單、會員、服務、財務等50多種實用功能。 項目不僅使用了 .NET 8 的最新特性,還集成了AutoFac、DotLiquid、HangFire、Nlog、Jwt、LayUIAdmin、SqlSugar、MySQL、 ...
  • 本文主要介紹攝像頭(相機)如何採集數據,用於類似攝像頭本地顯示軟體,以及流媒體數據傳輸場景如傳屏、視訊會議等。 攝像頭採集有多種方案,如AForge.NET、WPFMediaKit、OpenCvSharp、EmguCv、DirectShow.NET、MediaCaptre(UWP),網上一些文章以及 ...
  • 前言 Seal-Report 是一款.NET 開源報表工具,擁有 1.4K Star。它提供了一個完整的框架,使用 C# 編寫,最新的版本採用的是 .NET 8.0 。 它能夠高效地從各種資料庫或 NoSQL 數據源生成日常報表,並支持執行複雜的報表任務。 其簡單易用的安裝過程和直觀的設計界面,我們 ...
  • 背景需求: 系統需要對接到XXX官方的API,但因此官方對接以及管理都十分嚴格。而本人部門的系統中包含諸多子系統,系統間為了穩定,程式間多數固定Token+特殊驗證進行調用,且後期還要提供給其他兄弟部門系統共同調用。 原則上:每套系統都必須單獨接入到官方,但官方的接入複雜,還要官方指定機構認證的證書 ...
  • 本文介紹下電腦設備關機的情況下如何通過網路喚醒設備,之前電源S狀態 電腦Power電源狀態- 唐宋元明清2188 - 博客園 (cnblogs.com) 有介紹過遠程喚醒設備,後面這倆天瞭解多了點所以單獨加個隨筆 設備關機的情況下,使用網路喚醒的前提條件: 1. 被喚醒設備需要支持這WakeOnL ...
  • 前言 大家好,推薦一個.NET 8.0 為核心,結合前端 Vue 框架,實現了前後端完全分離的設計理念。它不僅提供了強大的基礎功能支持,如許可權管理、代碼生成器等,還通過採用主流技術和最佳實踐,顯著降低了開發難度,加快了項目交付速度。 如果你需要一個高效的開發解決方案,本框架能幫助大家輕鬆應對挑戰,實 ...