## 一、摘要 本文介紹了視頻直播卡頓的四個主要原因,用戶網路問題、用戶設備性能問題、技術路線的選擇和實現問題。因本文主要闡述視頻直播的卡頓,故技術路線的實現指的是:CDN供應商的實現問題,包含CDN性能不足、CDN地區覆蓋不足。對於每個原因,提供了初步判斷和進一步診斷的方法和技術工具,併列出了關鍵 ...
一、摘要
本文介紹了視頻直播卡頓的四個主要原因,用戶網路問題、用戶設備性能問題、技術路線的選擇和實現問題。因本文主要闡述視頻直播的卡頓,故技術路線的實現指的是:CDN供應商的實現問題,包含CDN性能不足、CDN地區覆蓋不足。對於每個原因,提供了初步判斷和進一步診斷的方法和技術工具,併列出了關鍵性能指標以幫助診斷和解決問題。
二、視頻直播常見問題系列
對於音視頻開發者來說,掌握排查問題的技術技巧方法是非常必要的,排查問題的技術方法也能夠幫助開發者更好地瞭解音視頻技術的原理和工作機制,從而更加深入地理解音視頻開發中遇到的各種問題。
即構基於多年實時互動領域技術的沉澱和客戶服務保障,我們將推出《視頻直播技術FAQ》系列文章,將實時互動技術領域的常見問題和經驗分享出來,同時會針對具體問題附上業務通識和常用解決方案以及案例經驗,希望本系列能成為你手邊的音視頻通識冊子,幫助到開發者們快速定位問題並找到合適的解決方案。
本系列將每周持續更新,目前已整理了以下常見問題:
- 視頻卡頓
- 延時高
- 音畫不同步
- 視頻花屏、綠屏
- 視頻黑屏
- 視頻放大或黑邊
- 首開慢
- 音視頻流控
- 視頻模糊
- 無法打開攝像頭
- 音頻回聲
- 音量太小
- 音頻雜訊
- 無聲
- 上下麥音量變化
本文是本系列的第一篇文章《視頻直播卡頓》,視頻卡頓是音視頻開發者最為關註的問題之一。希望通過本文向開發者們介紹實時音視頻中視頻卡頓問題的相關技術,包括問題表現、常見場景、問題定位排查和解決方案,同時提供實際案例和預防措施,幫助開發者更好的解決這一問題。
三、視頻直播卡頓問題處理
根據研究,降低播放卡頓率和縮短卡頓時長不僅可以改善用戶體驗,還有助於提升用戶觀看時長和留存率,進而為平臺或APP帶來更多的價值和收益。
行業內通用的FAQ處理辦法一般分為四個步驟,發現問題,定位問題,排查問題,並提供相應的解決方案。視頻直播卡頓問題我們將按照該解決思路進行剖析,核心在於定位卡頓問題產生的模塊,排查產生模塊的具體原因。
四、視頻直播卡頓問題表現
卡頓是影響視頻觀看體驗的常見問題,它會讓用戶感到不適和沮喪。在視頻直播場景下,卡頓的判斷主要依靠觀眾和主播的感受,因此它是一個相對主觀的問題。
一般是指實時音視頻傳輸過程中,因網路條件、設備性能受限等原因,引起的視頻播放斷斷續續、不流暢、甚至定格等現象。行業內並沒有統一的標準來定義卡頓,但一些第三方音視頻廠商已經對卡頓進行了明確的定義,
其中即構科技就是一個很好的例子。即構科技認為:卡頓在代碼層面是指實時音視頻通話過程中,視頻幀率設置不低於 5 fps 時,連續渲染的兩幀視頻之間間隔超過 500 ms,即記為一次視頻卡頓。
我們通常能感受到的卡頓表現形式為:
1. 視頻卡頓或停頓。
2. 音頻聲音異常或延遲。
3. 視頻和音頻不同步。
4. 直播流中斷或丟失。
五、視頻卡頓問題排查定位
以下是一些可能導致直播卡頓的原因:
1. 用戶網路問題(含主播端和用戶端)
2. 用戶設備性能問題 (含主播端和用戶端)
3. CDN供應商的問題(含CDN性能不足、CDN地區覆蓋不足)
六、原因一:用戶網路問題
一個完整的直播應用的數據流通常涉及多個環節。首先,主播推流將內容傳輸至直播伺服器。然後,直播伺服器需要將內容傳輸至CDN伺服器。最後,用戶可以通過拉流觀看直播。因此,整個數據流過程包括以下幾個步驟:
1. 主播推流並將內容傳輸至直播伺服器。
2. 直播伺服器將內容傳輸至CDN伺服器。
3. 用戶通過拉流觀看直播。
對於實時音視頻流的服務來說,網路環境對用戶體驗有著至關重要的影響。當直播流出現卡頓時,通常涉及到主播端、觀眾端和CDN傳輸三個主要部分。需要分別判斷是主播端卡頓還是用戶端卡頓。
如何判斷主播端或觀眾端網路問題
全局觀察,通過對比分析可以初步判斷卡頓問題更可能出現在哪個環節。
判斷主播端卡頓:如果發現所有的觀眾都出現頻繁卡頓,那麼問題可能出在主播端或中間的傳輸網路。
判斷用戶端卡頓:如果不是大面積的觀眾出現卡頓,那麼問題可能出在觀眾端或特定的網路環境。
技術手段判斷,為了更準確判斷主播端卡頓,通常會使用技術手段來判斷網路問題,自研監控系統和使用第三方SDK自帶的監控平臺操作步驟大同小異,分為這6步。定義監控目標--> 選擇監控工具--> 部署監控點--> 實時收集數據--> 生成日誌--> 監控與優化。
監控音視頻的本質:數據的生產和消費,從音視頻播放器中實時收集、發送、存儲、分析到展示關於音視頻流狀態的關鍵數據的整個流程。這個流程為監控人員或系統提供了實時的信息來檢測、定位和解決潛在的播放問題。
-
定義監控目標:確定你希望從監控中得到什麼信息。這可能包括視頻的播放質量、緩衝次數、延遲、觀眾的設備和地理位置等。
-
選擇監控工具:使用Wireshark、iperf、ping或FFprobe等線上帶寬測試工具檢查主播的上傳速度。主播端的上傳速度應該比直播的碼率高出一定的餘量。觀眾端的下載速度應該至少與直播的碼率相匹配。上述專業的網路監控工具使用門檻較高,需要主播和觀眾具備一定的技術背景。許多直播軟體和第三方音視頻服務SDK提供實時的上傳幀率、丟幀數和其他關鍵指標。這可以幫助判斷是否是主播端的問題。如即構科技的星圖監控平臺(https://www.zego.im/product/prism)。
-
部署監控點:音視頻應用在運行過程中,會實時收集各種數據併發送到伺服器,例如發送和接收的數據包數量、丟包率、延遲等。這些數據可以用來實時監控網路狀態,併在出現問題時及時進行調整。
主播端打點數據指標:
- 推流的實時幀率:如果幀率較低,可能是網路帶寬不足導致的。
- 推流的丟包率:丟包率較高可能是網路不穩定或質量較差。
- 上行帶寬:如果帶寬較小且不足以支持當前的推流質量,可能會導致卡頓。
觀眾端打點數據指標:
- 緩衝時間:頻繁緩衝或緩衝時間過長可能是網路不足導致的。
- 下行帶寬:如果帶寬較小且無法滿足當前的播放質量,可能會導致卡頓。
- 觀眾端設備的性能數據,如CPU使用率、記憶體使用率等:如果設備性能較差,可能無法流暢播放高質量的直播流。
-
生成日誌分析:音視頻應用通常會生成詳細的日誌,其中包含了關於網路狀態、音視頻數據流、播放器狀態等各種信息。通過分析這些日誌,可以獲取到網路狀況的詳細信息,例如網路延遲,丟包率等。
-
問題定位與解決:當檢測到異常的卡頓事件時,進一步深入分析數據,確定問題的根本原因,這可能涉及到網路質量、伺服器性能、內容編碼等。使用第三方服務的監控平臺則能更快速定位問題,如ZEGO即構星圖的質量分析模塊幫助開發者低門檻、高效地發現問題併進行定位歸因,輸出解決方案。還可以根據回調給用戶提示,如讓用戶切換網路環境,或降低推流解析度。
-
實時監控與反饋:根據長期的卡頓監控數據,不斷優化流媒體的傳輸和播放設置,以減少未來的卡頓事件。即構ZEGO星圖的業務運營跟蹤和監控告警功能:提供豐富的大盤數據幫助開發者觀察業務運營態勢,如用戶體驗、用戶人數、推拉流規模、服務狀況多維度全方位監控業務運轉。
音視頻服務商監測平臺:
即構ZEGO星圖 (https://www.zego.im/product/prism )星圖平臺是一個音視頻質量運營平臺,可全面監測音視頻服務,低門檻高效地定位排查問題。質量分析模塊支持網路、設備、用戶行為等多視角多維度排查音視頻問題,可獲取到實時的網路質量數據。
解決方案:用戶網路問題
針對網路帶寬不足的解決方案,不管是主播端還是觀眾端,解決方案都是進行網路優化,提示用戶檢查網路或嘗試重新鏈接或切換至更好的網路環境。
如果在確認了主播端和觀看端沒有網路問題之後,視頻緩衝或卡頓問題仍然存在,下一步就是評估用戶設備的性能是否是根本原因。設備性能不足也可能會影響直播體驗,導致用戶不滿意。
七、原因二、用戶設備性能問題 (含主播端和用戶端)
如何判斷用戶設備問題
初步判斷:如果視頻直播在各種網路環境下都出現卡頓問題,那麼可以考慮是否是由於設備性能跟視頻流暢度播放所需的視頻參數不匹配。
直播的完整數據流包括:採集、前處理、編碼、傳輸、解碼、後處理、渲染。在這個過程中,卡頓問題可能出現在不同的階段,並且可能是由於主播端或觀眾端的設備問題引起的。以下幾個因素是導致設備性能問題進而導致視頻緩衝或卡頓。
1. 採集光線要求:手機在昏暗的場景下採集視頻可能導致採集幀率下降,這是由攝像頭的自動曝光策略決定的。雖然昏暗的場景下的低幀率不一定直接導致傳統意義上的"網路卡頓",但它確實可能影響到視頻的流暢性和用戶體驗。
2. 編解碼要求:編解碼過程是一個計算密集型任務,都需要大量的計算能力。如果用戶的設備性能不足,可能導致編解碼延遲,從而引起卡頓。
3. 記憶體要求:高質量的視頻流也需要更多的記憶體來緩存和處理。如果設備的記憶體有限,尤其是當多個應用同時運行時,設備可能無法為視頻播放提供足夠的記憶體,導致卡頓。
4. 渲染能力:除瞭解碼,設備還需要渲染視頻。低端設備的圖形處理單元(GPU)可能無法快速渲染高清視頻幀,導致視頻播放不流暢。
5. 視頻參數:像幀率、碼率和解析度這樣的視頻參數,決定了視頻的質量和播放的流暢性。例如,一個高幀率和高碼率的1080p視頻在頂級設備上播放得很流暢,但在老舊或低端設備上可能會遇到問題。
如何判斷主播端或觀眾端設備問題
判斷主播端設備問題:如果發現所有的觀眾都出現頻繁卡頓,排除主播端網路帶寬不足,那麼檢查主播端設備性能問題。檢查主播端CPU、GPU和記憶體使用情況,高的資源使用率可能導致直播軟體性能降低。例:主播端在直播數據流過程中,晶元的性能、使用的美顏演算法、編碼格式都是需要消耗設備性能。
判斷用戶端設備問題:如果不是大面積的觀眾出現卡頓,排除用戶端網路帶寬不足,那麼問題可能出在觀眾端設備性能問題。古老或低端的設備可能無法流暢地播放高質量的視頻流。詢問用戶他們的設備型號和版本信息可以提供一些線索。
為了進一步診斷具體的問題,可以使用各種工具和技術。如網路質量檢測、設備性能監控和日誌分析。
1. 媒體信息查看工具:如MediaInfo或ffprobe等工具,可以查看視頻文件的詳細參數,包括解析度和碼率。
2. 性能分析工具:對於判斷設備解碼性能是否足夠,可以使用設備自帶的性能監視工具,如Android的"開發者選項"中的"GPU呈現分析",或者專門的性能分析軟體如Perfetto等。
解決方案:用戶設備問題
主播端解決方案:
1. 使用補光燈:通過補光,可以使攝像頭在明亮的環境中工作,保持穩定的高幀率,或者在後端進行視頻處理改善畫質。從而避免視頻的"卡頓"現象。**
2. 更換設備:不僅僅是手機,攝像頭和麥克風的選擇也十分關鍵。高質量的設備可以提供更好的音視頻信號,特別是在高清晰度的直播中。
3. 降低解析度:這確實是一個常見的技巧,特別是當直播間的觀眾數量增加,或網路環境不穩定時。降低解析度可以有效減輕編碼的壓力,同時保證流暢性。
4. 使用硬體編碼:大部分現代設備都支持硬體加速的編碼方法,它使用專門的硬體組件進行視頻編碼,比起傳統的軟體編碼,對CPU的負載較小。
觀眾端解決方案:
1. 轉碼:這一方案主要集中在伺服器端。伺服器接收到主播的流後,可以對其進行實時轉碼,生成不同的質量選項(例如,高、中、低),觀眾可以根據自己的網路環境和設備性能選擇合適的質量觀看。
2. 大小流策略:這是一個與轉碼相似但更為靈活的解決方案。主播可以同時推送不同的視頻流,例如高清流和標清流。觀眾端應用則可以根據當前的網路狀況自動選擇最佳的流,或允許用戶手動切換。
如果排除了主播端和觀眾端的網路和設備問題,那麼很有可能是CDN供應商的原因。CDN的性能也會影響到直播的質量。例如,如果CDN性能不足、地區覆蓋不足可能導致直播的卡頓。因此,也需要收集和分析這些環節的數據,如CDN的緩存命中率等。
八、原因三:CDN供應商問題
大多數直播應用都選擇使用現有的CDN供應商,因為搭建和維護自己的CDN網路需要巨大的投資、專業的技術團隊和時間。選擇CDN供應商不僅為直播應用提供了即插即用的解決方案,而且提供了全球範圍內的節點,使內容可以快速、穩定地傳輸到任何地方。
CDN (Content Delivery Network) 的作用是通過在各地部署節點,使用戶可以就近取得所需的內容,而不必每次都從源伺服器上拉取,從而大大提高了內容的訪問速度和效率。但是,當CDN本身出現問題,直播體驗就會受到嚴重影響。可以關註以下三個核心原因:
1. CDN 負載太高。
2. 節點覆蓋不全。
3. CDN 接入方式是單運營商還是多運營商。
如何判斷CDN供應商問題
1. 時間段對比:如果在網路高峰期(如晚上),出現了大量的卡頓問題,而在非高峰期(如凌晨)卡頓問題顯著減少,這可能是CDN性能不足導致負載太高的原因。
2. 多地域觀察:CDN的性能可能會因地域而異。如果在某些特定地域的用戶反饋視頻卡頓問題特別嚴重,這可能意味著CDN節點覆蓋不全的原因。
3. 多網路環境測試:如果在不同的網路環境(例如Wi-Fi,4G,不同ISP等)下,用戶都出現了視頻卡頓的問題,那麼這可能與CDN的傳輸效率有關,這可能是CDN的接入方式的原因。
經過上述的初步判斷方法,以下通過進一步的技術工具進行判斷CDN供應商問題。
1. 第三方測試工具:使用如WebPageTest、FastOrSlow、GTmetrix等線上工具來測試CDN供應的資源的載入速度和性能。這些工具提供了全球各地的測試點,可以從不同地理位置和網路環境來檢測CDN的性能。使用LoadRunner、JMeter 等工具,可以模擬大量用戶訪問,看伺服器在高負載情況下的表現。可以模擬大量用戶訪問,看伺服器在高負載情況下的表現。
2. CDN廠商提供的監控工具:大多數CDN供應商都會提供一個控制面板或者API來讓用戶實時監控CDN的性能,如響應時間、帶寬使用、請求次數等。例即構ZEGO視頻雲星圖平臺為開發者提供了實時監控系統、日誌系統、網路診斷工具。幫助開發者實時查看用戶觀看質量、記錄每次直播過程中的詳細信息、測量網路的帶寬、延遲、丟包率等信息,可以通過這些日誌找到問題的原因,這些數據可以幫助您識別可能的性能瓶頸或故障點。
解決方案:CDN供應商問題
CDN負載太高
- 與CDN供應商合作,監控流量高峰,並根據實際流量進行擴容。
- 使用多CDN策略。通過將流量分散到多個CDN供應商上,既可以提高冗餘性,又可以減輕每個CDN的負擔。
CDN節點覆蓋不全
- 根據業務的地理分佈和用戶群體選擇CDN供應商。
- 使用多CDN策略,確保至少有一個CDN供應商在目標地區有良好的服務。
CDN接入方式
- 瞭解目標用戶主要使用哪些運營商,選擇與這些運營商關係良好的CDN供應商。如即構科技的CDN服務。
- 與CDN供應商合作,優化接入策略,例如,建立直接的對等連接或租用更多的帶寬。
九、第三方CDN廠商
當直播或實時通訊應用出現卡頓等問題時,通常會涉及到多個原因,如網路、設備、編碼/解碼、伺服器、CDN等。為了簡化開發和排查過程,許多開發者選擇使用第三方的服務。即構科技提供了一系列的解決方案:
1. 即構RTC服務 (https://www.zego.im/product/realtime-video)
**基於低延遲、高併發、高可靠的私有協議,保障流暢的音視頻通信體驗。**支持多人會議、屏幕共用、錄製、實時消息傳輸等功能。提供實時音視頻通信,適用於多種場景,如直播、線上教育、遠程辦公等。
2. 即構CDN服務-暢直播服務(https://www.zego.im/product/livestreaming)
自研的流媒體協議,智能適應各種網路環境,包括弱網和網路擁堵情況。使用CDN網路將視頻內容高效分發到全球各地,保證用戶無論身在何處都可以流暢觀看。海外CDN優化,確保全球用戶都能獲得高質量的直播體驗。提供多種直播服務,如超低延遲直播、CDN Plus直播、CDN直播,滿足不同業務需求。
在解決卡頓問題的過程中,開發者也可以考慮使用第三方的服務來簡化這個過程,而不是構建自己的伺服器。
比如ZEGO即構提供的RTC(實時通信)和CDN 暢直播(內容傳遞網路)服務就是其中之一。這些服務已經被測試和證明可以處理數百萬或數十億日活用戶和數十億分鐘的音視頻交互。
RTC 服務可以幫助開發者輕鬆地將實時音視頻通信集成到他們的應用程式中,提供屏幕共用、錄製和直播等功能。
CDN 服務使用一組伺服器將視頻內容分發給全球用戶,減輕原始伺服器的負載,提高傳遞速度和質量,並包括動態流媒體功能和防止未經授權訪問視頻內容的熱鏈接保護功能等。**
選擇即構這些服務可以快速實現直播和實時通訊功能,並確保穩定、高質量的用戶體驗。同時,利用即構提供的技術支持和監控工具,開發者可以快速定位和解決出現的各種問題,保障業務的穩定運行。
十、結語
本文全面介紹了導致視頻直播卡頓問題的三個主要原因:用戶網路帶寬不足、用戶性能不佳、CDN供應商問題。
為了幫助開發者解決這些問題,還提供了初步診斷和高級技術工具和技術,可以用來識別和解決各種問題。其中一些工具包括Ping、Traceroute和MTR等網路診斷工具,提供實時監控和網路診斷工具的CDN監控系統,像New Relic和Datadog這樣的第三方監控服務,客戶端日誌分析,以及像LoadRunner和JMeter這樣的負載測試工具。
開發者還需關註視頻卡頓問題的一些關鍵性能指標,例如帶寬、延遲、數據包丟失、抖動和TCP重傳率。通過監測這些指標,可以更好地瞭解如何優化網路帶寬和性能,確保平穩的視頻播放。
總的來說,本文為遇到視頻緩衝或卡頓問題的用戶提供了有用且實用的建議。通過按照本文中概述的指南採取積極措施,用戶可以診斷和解決這些問題,確保更流暢和愉快的視頻觀看體驗。
關於視頻卡頓的問題的排查和解決方案就介紹到這裡了,在下一篇文章中,我們將深入探討“延時高”這個話題。延時高是線上游戲中常見的問題,可能會導致游戲體驗變得不流暢。我們將介紹延時高的原因和解決方案,幫助您更好地享受游戲的樂趣。
音視頻場景解決方案分享,更多詳情可搜索官網(https://zegoguanwang.datasink.sensorsdata.cn/t/pB)