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