中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

播放器技術分享(5):延時優化

發布時間:2020-07-07 20:33:10 來源:網絡 閱讀:2616 作者:Jhuster 欄目:軟件技術

搞音視頻開發好些年,分享過許多博客文章,比如:前幾年發布的《FFmpeg Tips》系列,《Android 音頻開發》系列,《直播疑難雜癥排查》系列等等。最近想把多年來開發和優化播放器的經驗也分享出來,希望能幫助到音視頻領域的初學者。第一期文章要推出的內容主要涉及到播放器比較核心的幾個技術點,大概的目錄如下:

1.  播放器技術分享(1):架構設計

2. 播放器技術分享(2):緩沖區管理

3. 播放器技術分享(3):音畫同步

4. 播放器技術分享(4):首開時間

5. 播放器技術分享(5):延時優化

本篇是系列文章的第五篇,主要聊一聊如何優化播放延時。由于播放的延時,是需要從 “視頻的生產 -> 分發 -> 播放” 各個環節聯合優化的,并不是單一靠播放器就可以搞定的,因此,本文會更多地介紹一些整體上的延時原因和優化思路,而不是單講播放器本身如何解決延時問題。

播放一般分為 2 種,一種是實時流的直播,如:網紅直播、賽事直播、沖頂大會、安防攝像頭監控等,另一種是視頻文件的在線點播,如:在線電影電視劇,教育培訓視頻,直播回放等。只有面對直播的場景,才有對降低延時的訴求。

1 延時的測量

要優化播放延時,首先要知道如何測量延時,目前行業內有多種方法,簡單介紹如下:

1.1 在線秒表

播放器技術分享(5):延時優化

主播端對著北京時間/秒表,然后對比播放器畫面中顯示的時間與北京時間/秒表的差值,這是最常用的測量手法。

1.2 SEI 幀

播放器技術分享(5):延時優化

SEI 全稱是補充增強信息(Supplemental Enhancement Information),提供了一種向視頻碼流中加入額外信息的方法,是 H.264/H.265 等視頻壓縮標準的特性之一。

如圖所示,我們可以在流媒體服務器端(或者主播端),定時插入一些 SEI 幀,里面記錄當前的 NTP 標準時間,當播放器收到 SEI 幀之后,提取出 SEI 幀的時間,跟當前的系統時間對比,即可得到延時差。

1.3 音頻波形

播放器技術分享(5):延時優化

如圖所示,主播端和播放器端,在同一個時刻開始把音頻數據寫入文件中,然后對比兩份文件的音頻波形,即可測量出延時差。這個 “同一時刻”,可以是通過消息通知的方式,也可以約定一個共同的 NTP 時刻,或者是借助 SEI 幀作為觸發的起始。

2 延時是怎么產生的

影響播放延時的因素很多,這里簡單列出來幾個:

1. 帶寬和傳輸距離

2. 網絡抖動和擁塞控制

3. 服務端的 GOP 緩存

4. 各個環節的緩沖區

5. HLS 協議的切片大小

6. 數據處理性能:如美顏、剪裁拉伸、編碼解碼、視頻渲染等

2.1 網絡帶寬和傳輸距離

這是一個基礎概念,帶寬和傳輸距離對延時的影響至關重要,特別是國內跨省和跨運營商的出口帶寬限制等原因,會導致延時更大。這也是為啥近幾年邊緣存儲、邊緣計算等概念被提及得比較多,特別是在智能安防監控場景,由于監控視頻的消費大都數在局部地區,如果把視頻的存儲和多媒體/智能處理均放在邊緣,可極大地提升效率和體驗。

2.2 網絡抖動和擁塞控制

基于 TCP 協議的流媒體傳輸,對延時很不友好,因為 TCP 協議的很多特性導致延時不可避免地增大,比如:三次握手、丟包重傳、某些擁塞控制策略等,因此在網絡頻繁抖動的弱網下,延時會比較大。

2.3 GOP 緩存

播放器技術分享(5):延時優化

如圖,上一篇講首開優化的時候,我們提到要在服務端緩存一個 GOP 數據,當播放器申請碼流的時候,快速下發這個緩存的 GOP,以實現秒開。

但是,播放器拿到的這段 GOP 數據,是一段歷史的 GOP 數據,而不是實時的數據,要播放完這段 GOP 緩存數據是需要一段時間的,假設該直播的 GOP 大小是 5s,則直接會導致播放器的延時至少達到 5s

2.4 緩沖區

播放器技術分享(5):延時優化

無論是推流端、還是分發端或者是播放器本身,都是會存在一些緩沖區的,以應對如網絡、性能等抖動帶來的問題。

假設視頻的幀率是 30fps,那么,每緩沖 30 幀,相當于帶來了 1s 的延時。由此可見,緩沖區帶來的延時是比較大的,是導致延時的最大因素之一。

2.5 HLS 切片

播放器技術分享(5):延時優化

如果播放使用的是 HLS 協議,如圖所示,假設服務端按照 3~10s 為單位來切片生成 ts 文件,則會直接導致播放的延時會達到 3~10s,這是該協議在延時方面的硬傷,如果對直播延時敏感,一般改用 RTMP 或者 HTTP-FLV 協議來拉直播流。

3 如何優化播放延時呢 ?

與首開優化的思路類似,要優化播放延時,關鍵就是從影響延時的各個因素入手,基本思路列表如下;

1. 網絡線路優化

    • 選擇優質的 CDN 加速服務,保障傳輸的網絡帶寬和線路資源

    • 測速選線,動態監測,智能調度,確保每一路流的傳輸質量

2. 降緩沖區

    • 生產端減小 GOP 大小,從而減少服務端 GOP 緩存的大小

    • 生產端根據發送緩沖區情況,動態調整幀率、碼率

    • 播放端主動丟幀/追幀/倍數播放,加快緩沖區的消耗

3. 協議/傳輸優化

    • Based on TCP -> Based on UDP,如:QUIC,RTP/RTCP

    • 傳輸策略優化:前向糾錯,丟包重傳策略,擁塞控制優化,關鍵幀請求等

4. 處理性能優化

    • 硬件編解碼/美顏/渲染等處理

    • 算法性能調優

由于這里的每一項優化,都需要較大的篇幅來闡述,網上也有許多相關的討論和文章,我就不展開講了,后面有機會再做深度分享。

4 總結

播放器的延時優化,就分享到這里了,如有疑問的小伙伴歡迎來信 lujun.hust@gmail.com 交流。另外,也歡迎大家關注我的新浪微博 @盧_俊 或者 微信公眾號 @Jhuster 獲取最新的文章和資訊。

播放器技術分享(5):延時優化

向AI問一下細節

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

AI

明水县| 洛宁县| 镇坪县| 马鞍山市| 苍梧县| 措美县| 察雅县| 元朗区| 信宜市| 祁门县| 台中市| 太湖县| 彩票| 凤凰县| 灯塔市| 八宿县| 陵川县| 兴宁市| 宝兴县| 廊坊市| 绥化市| 贵港市| 梓潼县| 汉中市| 贺兰县| 公主岭市| 汝南县| 高要市| 余庆县| 双流县| 隆回县| 安阳县| 建德市| 沁阳市| 四会市| 莱西市| 深圳市| 芜湖市| 威远县| 尚义县| 喀什市|