溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

蘇寧視頻云直播客戶端的優(yōu)化方案

發(fā)布時間:2020-08-08 08:39:36 來源:ITPUB博客 閱讀:121 作者:蘇寧視頻云 欄目:移動開發(fā)

蘇寧視頻云直播客戶端的優(yōu)化方案

解析優(yōu)化

DNS過程,如下圖:


蘇寧視頻云直播客戶端的優(yōu)化方案

基于可控和容災的需要,移動端代碼一般不會hardcode 推流、播放的服務器IP地址,而選用域名代替。在IP出現(xiàn)宕機或網(wǎng)絡中斷的情況下,還可以通過變更DNS來實現(xiàn)問題IP的剔除。

而域名的解析時間需要幾十毫秒至幾秒不等,對于新生成熱度不高的域名,一般的平均解析延遲在300ms,按上圖的各個環(huán)節(jié)只要有一個通路網(wǎng)絡產(chǎn)生波動或者是設備高負載,會增加至秒級。幾十毫秒的情況是ISP NS這一層在熱度足夠高的情況下會對域名的解析進行緩存。

按我們上面分析的情況,本地延遲大概是15ms左右,那么域名解析最低也可以做到15ms左右。

但由于直播場景的特殊性,推流和播放使用的域名使用的熱度較難達到ISP NS緩存的標準,所以經(jīng)常需要走回Root NS進行查詢的路徑。

那客戶端解析優(yōu)化的原理就出來了:本機緩存域名的解析結(jié)果,對域名進行預解析,每次需要直播推流和播放的時候不再需要再進行DNS過程。此處節(jié)省幾十到幾百毫秒的打開延遲。

播放優(yōu)化

直播播放器的相關技術點有:直播延時、首屏時間(指從開始播放到第一次看到畫面的時間)、音視頻同步、軟解碼、硬解碼。

播放步驟描述以下路徑:

S1. 根據(jù)協(xié)議類型(如RTMP、RTP、RTSP、HTTP等),與服務器建立連接并接收數(shù)據(jù);

S2. 解析二進制數(shù)據(jù),從中找到相關流信息;

S3. 根據(jù)不同的封裝格式(如FLV、TS)解復用(demux);

S4. 分別得到已編碼的H.264視頻數(shù)據(jù)和AAC音頻數(shù)據(jù);

S5. 使用硬解碼(對應系統(tǒng)的API)或軟解碼(FFMpeg)來解壓音視頻數(shù)據(jù);

S6. 經(jīng)過解碼后得到原始的視頻數(shù)據(jù)(YUV)和音頻數(shù)據(jù)(AAC);因為音頻和視頻解碼是分開的,所以我們得把它們同步起來,否則會出現(xiàn)音視頻不同步的現(xiàn)象,比如別人說話會跟口型對不上;

S7. 最后把同步的音頻數(shù)據(jù)送到耳機或外放,視頻數(shù)據(jù)送到屏幕上顯示。

 了解了播放器的播放流程后,我們可以優(yōu)化以下幾點:

首屏時間優(yōu)化

從步驟2入手,通過預設解碼器類型,省去探測文件類型時間;從步驟5入手,縮小視頻數(shù)據(jù)探測范圍,同時也意味著減少了需要下載的數(shù)據(jù)量,特別是在網(wǎng)絡不好的時候,減少下載的數(shù)據(jù)量能為啟動播放節(jié)省大量的時間,當檢測到I幀數(shù)據(jù)后就立馬返回并進入解碼環(huán)節(jié)。

延時優(yōu)化

視頻緩沖區(qū)或叫視頻緩存策略,該策略原理是當網(wǎng)絡卡頓時增加用戶等待時間來緩存一定量的視頻數(shù)據(jù),達到后續(xù)平滑觀看的效果,該技術能有效減少卡頓次數(shù),但是會帶來直播上的內(nèi)容延時,所以該技術主要運用于點播,直播方面已去掉該策略,以此盡可能去掉或縮小內(nèi)容從網(wǎng)絡到屏幕展示過程中的時間;(有利于減少延時)。

下載數(shù)據(jù)探測池技術,當用戶下載速度不足發(fā)生了卡頓,然后網(wǎng)絡突然又順暢了,服務器上之前滯留的數(shù)據(jù)會加速發(fā)下來,這時為了減少之前卡頓造成的延時,播放器會加速播放探測池的視頻數(shù)據(jù)并丟棄當前加速部分的音頻數(shù)據(jù),以此來保證當前觀看內(nèi)容延時穩(wěn)定。

推流優(yōu)化

推流步驟說明:很容易看出推流跟播放其實是逆向的,具體流程如下。

蘇寧視頻云直播客戶端的優(yōu)化方案

 

  • step1:驗證身份信息

    把視頻推到蘇寧視頻云賬戶,需要先通過AccessKey和SecretKey的身份認證

  • step2:初始化推流SDK

    集成推流sdk,調(diào)用sdk的初始化方法初始化sdk

  • step3:獲取蘇寧視頻云的直播推流地址

    調(diào)用蘇寧視頻云服務端sdk來獲取推流地址

  • step4:開始推流

    將獲取到的推流地址設置到推流sdk中開始推流

  • step5:完成推流

    調(diào)用推流sdk中的結(jié)束推流接口完成推流

優(yōu)化一適當?shù)腝os(Quality of Service,服務質(zhì)量)策略。

推流端會根據(jù)當前上行網(wǎng)絡情況控制音視頻數(shù)據(jù)發(fā)包和編碼,在網(wǎng)絡較差的情況下,音視頻數(shù)據(jù)發(fā)送不出去,造成數(shù)據(jù)滯留在本地,這時,會停掉編碼器防止發(fā)送數(shù)據(jù)進一步滯留,同時會根據(jù)網(wǎng)絡情況選擇合適的策略控制音視頻發(fā)送。

比如網(wǎng)絡很差的情況下,推流端會優(yōu)先發(fā)送音頻數(shù)據(jù),保證用戶能聽到聲音,并在一定間隔內(nèi)發(fā)關鍵幀數(shù)據(jù),保證用戶在一定時間間隔之后能看到一些畫面的變化。

優(yōu)化二:合理的關鍵幀配置。

合理控制關鍵幀發(fā)送間隔(建議2秒或1秒一個),這樣可以減少后端處理過程,

為后端的緩沖區(qū)設置更小創(chuàng)造條件。

蘇寧旗下子品牌蘇寧視頻云已累計服務客戶超過2000個;蘇寧視頻云憑借PPTV 十年媒體技術和服務經(jīng)驗,融合流媒體技術、P2P、CDN 分發(fā)、海量存儲、安全策略等構建的專注視頻領域的一站式SaaS 服務平臺。蘇寧視頻云集視頻云直播、云點播、云上傳、云轉(zhuǎn)碼、云存儲、云統(tǒng)計等功能于一體,多平臺全方位支持客戶各種視頻場景的業(yè)務需求。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI