一、摘要
本文介紹了影片直播卡頓的四個主要原因,使用者網路問題、使用者裝置效能問題、技術路線的選擇和實現問題。因本文主要闡述影片直播的卡頓,故技術路線的實現指的是: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本身出現問題,直播體驗就會受到嚴重影響。可以關注以下三個核心原因:
- CDN 負載太高。
- 節點覆蓋不全。
- 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重傳率。透過監測這些指標,可以更好地瞭解如何最佳化網路頻寬和效能,確保平穩的影片播放。
總的來說,本文為遇到影片緩衝或卡頓問題的使用者提供了有用且實用的建議。透過按照本文中概述的指南採取積極措施,使用者可以診斷和解決這些問題,確保更流暢和愉快的影片觀看體驗。
關於影片卡頓的問題的排查和解決方案就介紹到這裡了,在下一篇文章中,我們將深入探討“延時高”這個話題。延時高是線上遊戲中常見的問題,可能會導致遊戲體驗變得不流暢。我們將介紹延時高的原因和解決方案,幫助您更好地享受遊戲的樂趣。