直播間新手常見技術問題解答--首開慢
首開慢的表現:點擊播放后,需要好幾秒才能顯示播放畫面。
1 點擊播放后才從服務器取播放地址
播放視頻,第一件事就是獲取播放地址,大多數直播 App,主播的播放地址是由 App 向服務端發 HTTP GET 請求才能拿到的,獲取播放地址有2種方法:
1)App 拉取正在視頻列表的時候
2)用戶點擊某個視頻,跳轉到播放界面之后--http get請求太慢,體驗差
2 DNS 解析慢
不同的播放域名,DNS 解析有快有慢,再加上 DNS 解析服務的緩存策略,在本地沒有該域名緩存的情況下,會逐級向更高級的域名服務器查詢域名,因此,播放域名解析的耗時,會對首開產生不小的影響。
為了有效降低 DNS 解析對首開的影響,我們可以提前完成播放域名->IP 地址的解析,并緩存起來,播放的時候,直接傳入帶 IP 地址的播放地址,從而省去了 DNS 解析的耗時。
3 播放策略原因
播放首開時間的定義,就是從點擊播放到第一幀畫面顯示出來的耗時,因此,我們需要盡一切可能加快播放進度。很多側重點播的播放器,為了減少卡頓,會有一些緩沖策略,當緩沖足夠多的數據之后 ,再送入解碼播放。
而為了加快首開效果,需要對播放的緩沖策略做一些調整,如果第一幀還沒有渲染出來的情況下,不要做任何緩沖,直接送入解碼器解碼播放,這樣就可以保證沒有任何因為「主動」緩沖帶來的首開延時。
4 播放參數配置
所有基于 ffmpeg 的播放器,都會遇到 avformat_find_stream_info 這個函數耗時比較久,從而增大了首開時間,該函數主要作用是通過讀取一定字節的碼流數據,來分析碼流的基本信息,如編碼信息、時長、碼率、幀率等等,它由兩個參數來控制其讀取的數據量大小和時長,一個是 probesize,一個是 analyzeduration。
減少 probesize 和 analyzeduration 可以有效地減少 avformat_find_stream_info 的函數耗時,從而加快首開,但是需要注意的是,設置地太小可能會導致讀取的數據量不足,從而無法解析出碼流信息,導致播放失敗,或者出現只有音頻沒有視頻,只有視頻沒有音頻的問題。
5 服務端原因
當播放端的優化做到極限后,剩下的首開快慢的決定性因素就是服務端了,服務端主要有哪些方面會影響首開呢?
1) 冷熱流
當你去附近的邊緣服務器節點拉取某個流的時候,如果最近沒有任何人從該服務器拉過這個流,那么這臺服務器就需要逐級向源頭拉流,而且該服務器還需要進行 GOP 緩存,從而產生比較大的首開延時。
2) 邊緣節點的距離
同等大小的數據,客戶端距離服務器越近,那么傳輸也就越快,首開也會越快。
3) 服務器的響應速度
影響服務器響應速度的因素,一個是跟服務器的協議層優化有關,另一個就是服務端的負載和性能了,服務器當前負載越大,響應自然越慢。
————————————————
版權聲明:本文為CSDN博主「步基」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/wangbuji/article/details/121661187
================================
【新聞】
中國e直播帶貨供應鏈金融13306003307(V同),
一件代發共享云倉:主播減去了自己先采購囤貨的問題,可以無壓力的開播賣貨。主播只要選定生廠商的抖音小店產品鏈接或快手小店產品鏈接,在自己直播間上了鏈接就可以賣,賣完由廠家小店訂單結算,廠家網店直接收款;直播帶貨主播直接分傭金;MCN機構直接分管理費。
中國E直播帶貨供應鏈機構協調廠家按規則48小時內一件代發!