日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

《直播疑难杂症排查》之三:首开慢

發(fā)布時(shí)間:2024/2/28 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 《直播疑难杂症排查》之三:首开慢 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

本系列會(huì)涵蓋的內(nèi)容包括但不限于如下一些主題:

  • 播放失敗

  • 播放卡頓

  • 首開慢

  • 延時(shí)高

  • 音畫不同步

  • 馬賽克嚴(yán)重

  • 播放黑屏、花屏、綠屏

  • 播放雜音、噪音、回聲

  • 點(diǎn)播拖動(dòng)不準(zhǔn)

  • 直播發(fā)熱問題

  • 其他問題(待續(xù))

本文是 《直播疑難雜癥排查》系列的第三篇文章,我們來看看直播過程中,最重要的一個(gè)性能指標(biāo):首開


首開慢的表現(xiàn)

點(diǎn)擊播放后,需要好幾秒才能顯示播放畫面。

##常見首開慢問題排查

####點(diǎn)擊播放后才從服務(wù)器取播放地址

播放視頻,第一件事就是要拿到播放地址,大多數(shù)直播 App,主播的播放地址是由 App 向服務(wù)端發(fā) HTTP GET 請(qǐng)求才能拿到的,因此,什么時(shí)候去「拿」?這個(gè)播放地址,顯得至關(guān)重要,常見的做法有如下兩種:

####App 拉取正在視頻列表的時(shí)候

用戶點(diǎn)擊某個(gè)視頻,跳轉(zhuǎn)到播放界面之后

顯然,后者的用戶體驗(yàn)明顯會(huì)比前者差,因?yàn)橥ㄟ^ HTTP GET 請(qǐng)求播放地址的過程,無形增加了首開時(shí)間,特別是在弱網(wǎng)下,會(huì)更慢。

####DNS 解析慢

不同的播放域名,DNS 解析有快有慢,再加上 DNS 解析服務(wù)的緩存策略,在本地沒有該域名緩存的情況下,會(huì)逐級(jí)向更高級(jí)的域名服務(wù)器查詢域名,因此,播放域名解析的耗時(shí),會(huì)對(duì)首開產(chǎn)生不小的影響。

為了有效降低 DNS 解析對(duì)首開的影響,我們可以提前完成播放域名->IP 地址的解析,并緩存起來,播放的時(shí)候,直接傳入帶 IP 地址的播放地址,從而省去了 DNS 解析的耗時(shí)。

如果要支持用?IP?地址播放,是需要修改底層 ffmpeg 源碼的,目前我們七牛的?PLDroidPlayer?就支持這樣的播放地址: URL 格式「protocol://ip/path?domain=xxxx.com」

####播放策略原因

播放首開時(shí)間的定義,就是從點(diǎn)擊播放到第一幀畫面顯示出來的耗時(shí),因此,我們需要盡一切可能加快播放進(jìn)度。

很多側(cè)重點(diǎn)播的播放器,為了減少卡頓,會(huì)有一些緩沖策略,當(dāng)緩沖足夠多的數(shù)據(jù)之后 ,再送入解碼播放。

而為了加快首開效果,需要對(duì)播放的緩沖策略做一些調(diào)整,如果第一幀還沒有渲染出來的情況下,不要做任何緩沖,直接送入解碼器解碼播放,這樣就可以保證沒有任何因?yàn)椤钢鲃?dòng)」緩沖帶來的首開延時(shí)。

####播放參數(shù)配置

所有基于 ffmpeg 的播放器,都會(huì)遇到?avformat_find_stream_info??這個(gè)函數(shù)耗時(shí)比較久,從而增大了首開時(shí)間,該函數(shù)主要作用是通過讀取一定字節(jié)的碼流數(shù)據(jù),來分析碼流的基本信息,如編碼信息、時(shí)長(zhǎng)、碼率、幀率等等,它由兩個(gè)參數(shù)來控制其讀取的數(shù)據(jù)量大小和時(shí)長(zhǎng),一個(gè)是 probesize,一個(gè)是 analyzeduration。

減少 probesize 和 analyzeduration 可以有效地減少??avformat_find_stream_info? 的函數(shù)耗時(shí),從而加快首開,但是需要注意的是,設(shè)置地太小可能會(huì)導(dǎo)致讀取的數(shù)據(jù)量不足,從而無法解析出碼流信息,導(dǎo)致播放失敗,或者出現(xiàn)只有音頻沒有視頻,只有視頻沒有音頻的問題。

####服務(wù)端線路原因

當(dāng)播放端的優(yōu)化做到極限后,剩下的首開快慢的決定性因素就是服務(wù)端的線路了,服務(wù)端的線路主要有哪些方面會(huì)影響首開呢?

  • 冷熱流

當(dāng)你去附近的邊緣服務(wù)器節(jié)點(diǎn)拉取某個(gè)流的時(shí)候,如果最近沒有任何人從該服務(wù)器拉過這個(gè)流,那么這臺(tái)服務(wù)器就需要逐級(jí)向源頭拉流,而且該服務(wù)器也沒有任何 GOP 緩存,從而產(chǎn)生比較大的首開延時(shí)。

  • 邊緣節(jié)點(diǎn)的 TTL

同等大小的數(shù)據(jù),客戶端距離服務(wù)器越近,ttl 越小,那么傳輸速度也就越快,首開也會(huì)越快。 服務(wù)器的響應(yīng)速度

影響服務(wù)器響應(yīng)速度的因素,一個(gè)是跟服務(wù)器的協(xié)議層優(yōu)化有關(guān),另一個(gè)就是服務(wù)端的負(fù)載和性能了,服務(wù)器當(dāng)前負(fù)載越大,響應(yīng)自然越慢。

下面給出一張圖,來直觀的感受一下服務(wù)端在加速首開這件事上的關(guān)鍵作用:

七牛的實(shí)時(shí)流網(wǎng)絡(luò) (LiveNet),我們會(huì)根據(jù)網(wǎng)絡(luò)流量、各節(jié)點(diǎn)的連接、負(fù)載狀況及到用戶網(wǎng)絡(luò)的響應(yīng)時(shí)間等綜合信息,實(shí)時(shí)地將用戶的請(qǐng)求調(diào)度到最佳服務(wù)節(jié)點(diǎn)上,同時(shí)可計(jì)算出最佳服務(wù)節(jié)點(diǎn)與視頻源節(jié)點(diǎn)的最佳網(wǎng)絡(luò)路徑,使用戶可以更快速的獲取到視頻內(nèi)容,提高視頻服務(wù)的響應(yīng)速度和用戶體驗(yàn)。

##小結(jié)

關(guān)于首開慢的排查大致就介紹到這里了,下篇我們將對(duì)延遲高這個(gè)話題進(jìn)行探討。


轉(zhuǎn)自:七牛云的個(gè)人空間

總結(jié)

以上是生活随笔為你收集整理的《直播疑难杂症排查》之三:首开慢的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。