搞音視頻開(kāi)發(fā)好些年,分享過(guò)許多博客文章,比如:前幾年發(fā)布的《FFmpeg Tips》系列,《Android 音頻開(kāi)發(fā)》系列,《直播疑難雜癥排查》系列等等。最近想把多年來(lái)開(kāi)發(fā)和優(yōu)化播放器的經(jīng)驗(yàn)也分享出來(lái),希望能幫助到音視頻領(lǐng)域的初學(xué)者。第一期文章要推出的內(nèi)容主要涉及到播放器比較核心的幾個(gè)技術(shù)點(diǎn),大概的目錄如下:
創(chuàng)新互聯(lián)主營(yíng)殷都網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,app軟件開(kāi)發(fā),殷都h5成都微信小程序搭建,殷都網(wǎng)站營(yíng)銷(xiāo)推廣歡迎殷都等地區(qū)企業(yè)咨詢1. 播放器技術(shù)分享(1):架構(gòu)設(shè)計(jì)
2. 播放器技術(shù)分享(2):緩沖區(qū)管理
3. 播放器技術(shù)分享(3):音畫(huà)同步
4. 播放器技術(shù)分享(4):首開(kāi)時(shí)間
5. 播放器技術(shù)分享(5):延時(shí)優(yōu)化
本篇是系列文章的第五篇,主要聊一聊如何優(yōu)化播放延時(shí)。由于播放的延時(shí),是需要從 “視頻的生產(chǎn) -> 分發(fā) -> 播放” 各個(gè)環(huán)節(jié)聯(lián)合優(yōu)化的,并不是單一靠播放器就可以搞定的,因此,本文會(huì)更多地介紹一些整體上的延時(shí)原因和優(yōu)化思路,而不是單講播放器本身如何解決延時(shí)問(wèn)題。
播放一般分為 2 種,一種是實(shí)時(shí)流的直播,如:網(wǎng)紅直播、賽事直播、沖頂大會(huì)、安防攝像頭監(jiān)控等,另一種是視頻文件的在線點(diǎn)播,如:在線電影電視劇,教育培訓(xùn)視頻,直播回放等。只有面對(duì)直播的場(chǎng)景,才有對(duì)降低延時(shí)的訴求。
1 延時(shí)的測(cè)量
要優(yōu)化播放延時(shí),首先要知道如何測(cè)量延時(shí),目前行業(yè)內(nèi)有多種方法,簡(jiǎn)單介紹如下:
1.1 在線秒表
主播端對(duì)著北京時(shí)間/秒表,然后對(duì)比播放器畫(huà)面中顯示的時(shí)間與北京時(shí)間/秒表的差值,這是最常用的測(cè)量手法。
1.2 SEI 幀
SEI 全稱是補(bǔ)充增強(qiáng)信息(Supplemental Enhancement Information),提供了一種向視頻碼流中加入額外信息的方法,是 H.264/H.265 等視頻壓縮標(biāo)準(zhǔn)的特性之一。
如圖所示,我們可以在流媒體服務(wù)器端(或者主播端),定時(shí)插入一些 SEI 幀,里面記錄當(dāng)前的 NTP 標(biāo)準(zhǔn)時(shí)間,當(dāng)播放器收到 SEI 幀之后,提取出 SEI 幀的時(shí)間,跟當(dāng)前的系統(tǒng)時(shí)間對(duì)比,即可得到延時(shí)差。
1.3 音頻波形
如圖所示,主播端和播放器端,在同一個(gè)時(shí)刻開(kāi)始把音頻數(shù)據(jù)寫(xiě)入文件中,然后對(duì)比兩份文件的音頻波形,即可測(cè)量出延時(shí)差。這個(gè) “同一時(shí)刻”,可以是通過(guò)消息通知的方式,也可以約定一個(gè)共同的 NTP 時(shí)刻,或者是借助 SEI 幀作為觸發(fā)的起始。
2 延時(shí)是怎么產(chǎn)生的
影響播放延時(shí)的因素很多,這里簡(jiǎn)單列出來(lái)幾個(gè):
1. 帶寬和傳輸距離
2. 網(wǎng)絡(luò)抖動(dòng)和擁塞控制
3. 服務(wù)端的 GOP 緩存
4. 各個(gè)環(huán)節(jié)的緩沖區(qū)
5. HLS 協(xié)議的切片大小
6. 數(shù)據(jù)處理性能:如美顏、剪裁拉伸、編碼解碼、視頻渲染等
2.1 網(wǎng)絡(luò)帶寬和傳輸距離
這是一個(gè)基礎(chǔ)概念,帶寬和傳輸距離對(duì)延時(shí)的影響至關(guān)重要,特別是國(guó)內(nèi)跨省和跨運(yùn)營(yíng)商的出口帶寬限制等原因,會(huì)導(dǎo)致延時(shí)更大。這也是為啥近幾年邊緣存儲(chǔ)、邊緣計(jì)算等概念被提及得比較多,特別是在智能安防監(jiān)控場(chǎng)景,由于監(jiān)控視頻的消費(fèi)大都數(shù)在局部地區(qū),如果把視頻的存儲(chǔ)和多媒體/智能處理均放在邊緣,可極大地提升效率和體驗(yàn)。
2.2 網(wǎng)絡(luò)抖動(dòng)和擁塞控制
基于 TCP 協(xié)議的流媒體傳輸,對(duì)延時(shí)很不友好,因?yàn)?TCP 協(xié)議的很多特性導(dǎo)致延時(shí)不可避免地增大,比如:三次握手、丟包重傳、某些擁塞控制策略等,因此在網(wǎng)絡(luò)頻繁抖動(dòng)的弱網(wǎng)下,延時(shí)會(huì)比較大。
2.3 GOP 緩存
如圖,上一篇講首開(kāi)優(yōu)化的時(shí)候,我們提到要在服務(wù)端緩存一個(gè) GOP 數(shù)據(jù),當(dāng)播放器申請(qǐng)碼流的時(shí)候,快速下發(fā)這個(gè)緩存的 GOP,以實(shí)現(xiàn)秒開(kāi)。
但是,播放器拿到的這段 GOP 數(shù)據(jù),是一段歷史的 GOP 數(shù)據(jù),而不是實(shí)時(shí)的數(shù)據(jù),要播放完這段 GOP 緩存數(shù)據(jù)是需要一段時(shí)間的,假設(shè)該直播的 GOP 大小是 5s,則直接會(huì)導(dǎo)致播放器的延時(shí)至少達(dá)到 5s
2.4 緩沖區(qū)
無(wú)論是推流端、還是分發(fā)端或者是播放器本身,都是會(huì)存在一些緩沖區(qū)的,以應(yīng)對(duì)如網(wǎng)絡(luò)、性能等抖動(dòng)帶來(lái)的問(wèn)題。
假設(shè)視頻的幀率是 30fps,那么,每緩沖 30 幀,相當(dāng)于帶來(lái)了 1s 的延時(shí)。由此可見(jiàn),緩沖區(qū)帶來(lái)的延時(shí)是比較大的,是導(dǎo)致延時(shí)的大因素之一。
2.5 HLS 切片
如果播放使用的是 HLS 協(xié)議,如圖所示,假設(shè)服務(wù)端按照 3~10s 為單位來(lái)切片生成 ts 文件,則會(huì)直接導(dǎo)致播放的延時(shí)會(huì)達(dá)到 3~10s,這是該協(xié)議在延時(shí)方面的硬傷,如果對(duì)直播延時(shí)敏感,一般改用 RTMP 或者 HTTP-FLV 協(xié)議來(lái)拉直播流。
3 如何優(yōu)化播放延時(shí)呢 ?
與首開(kāi)優(yōu)化的思路類似,要優(yōu)化播放延時(shí),關(guān)鍵就是從影響延時(shí)的各個(gè)因素入手,基本思路列表如下;
1. 網(wǎng)絡(luò)線路優(yōu)化
選擇優(yōu)質(zhì)的 CDN 加速服務(wù),保障傳輸?shù)木W(wǎng)絡(luò)帶寬和線路資源
測(cè)速選線,動(dòng)態(tài)監(jiān)測(cè),智能調(diào)度,確保每一路流的傳輸質(zhì)量
2. 降緩沖區(qū)
生產(chǎn)端減小 GOP 大小,從而減少服務(wù)端 GOP 緩存的大小
生產(chǎn)端根據(jù)發(fā)送緩沖區(qū)情況,動(dòng)態(tài)調(diào)整幀率、碼率
播放端主動(dòng)丟幀/追幀/倍數(shù)播放,加快緩沖區(qū)的消耗
3. 協(xié)議/傳輸優(yōu)化
Based on TCP -> Based on UDP,如:QUIC,RTP/RTCP
傳輸策略優(yōu)化:前向糾錯(cuò),丟包重傳策略,擁塞控制優(yōu)化,關(guān)鍵幀請(qǐng)求等
4. 處理性能優(yōu)化
硬件編解碼/美顏/渲染等處理
算法性能調(diào)優(yōu)
由于這里的每一項(xiàng)優(yōu)化,都需要較大的篇幅來(lái)闡述,網(wǎng)上也有許多相關(guān)的討論和文章,我就不展開(kāi)講了,后面有機(jī)會(huì)再做深度分享。
4 總結(jié)
播放器的延時(shí)優(yōu)化,就分享到這里了,如有疑問(wèn)的小伙伴歡迎來(lái)信 lujun.hust@gmail.com 交流。另外,也歡迎大家關(guān)注我的新浪微博 @盧_俊 或者 微信公眾號(hào) @Jhuster 獲取最新的文章和資訊。
當(dāng)前名稱:播放器技術(shù)分享(5):延時(shí)優(yōu)化-創(chuàng)新互聯(lián)
新聞來(lái)源:http://muchs.cn/article2/phhoc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供域名注冊(cè)、網(wǎng)站導(dǎo)航、網(wǎng)站策劃、網(wǎng)站改版、全網(wǎng)營(yíng)銷(xiāo)推廣、小程序開(kāi)發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)