淘寶直播最近連續三年直播引導成交大幅增長,2020年以來,有100多種職業轉戰淘寶直播間,無論達人身份還是商家身份,都在新風口的驅動下大量入場,如何應對雙十一這種高峰值用戶直播需求,這無疑對淘寶直播提出了更高的技術要求和挑戰,同時,電商直播有強互動訴求,主播對彈幕的回復越及時,對購買越有促進效果,
通過AB測驗驗證,延時對電商直播GMV有正向作用,但常規的HLS、FLV、RTMP等直播格式延時很難再降低,常規直播CDN也已經不再適合更低延時的直播,整個技術體系需要升級,為了降低直播延時,行業上有幾種做法:
方案對比 | 私有協議 | TCP協議堆疊優化 | QUIC | SRT | WEBRTC |
效果 | 最好 | 一般 | 較好 | 較好 | 好 |
通用性 | 差 | 最佳 | 佳 | 較低 | 良 |
實作難度 | 難 | 可深可淺 | 一般 | 一般 | 難 |
LHLS、CMAF甚至LLHLS方案的延時,基本都會超過2秒,暫不做比較,綜合考慮,WEBRTC方案相對符合我們的需求,淘系技術部跟阿里云一起共建了一張基于WEBRTC低延時多媒體傳輸網,
通信、直播二網合一的低延時傳輸網
直播的延時始終是個老大難問題,很多團隊都在考慮怎么降低延遲,低延遲傳輸是一個綜合性的問題,要從整體入手,不僅要從設計上考慮,還需要客戶端,服務器,資料系統緊密配合,最根本的傳輸協議不升級,延遲始終有一個天花板,
RTCP協議頭
對于傳統的rtmp,hls,http-flv基于tcp的協議來講,tcp是可靠傳輸,在弱網下一定會等某些資料到達才能繼續,但是對于音視頻資料而言,有些資料是可以丟的,比如不被參考的幀,此外tcp的擁塞控制在內核層,在擁塞發生時,滑動視窗直接減半,造成資料吞吐量低,同時缺乏應用層控制,對于音視頻場景不靈活,準確度低,還有tcp有重傳聚合的功能,造成資料確認慢,延遲增大,
基于tcp這些原因,傳統的播放器都會有5s以上的buffer來對抗網路抖動,所以常規的音視頻通信基本都不使用TCP協議來實作,而使用UDP實作,
直播在降低延時后,在傳輸上也有很多跟通信相似的地方,方案上可以一并考慮,基于udp的webrtc半可靠傳輸,技術成熟,更加適合音視頻場景,從信令設計上采用rtcp app私有協議,rtcp標準互動兼容,和音視頻傳輸使用一個socket連接,建聯協議更加精簡,保證最快1RTT給出媒體資料,快速啟播,
GRTN傳輸網路
GRTN的設計理念是用通信的技術來傳遞直播多媒體資料,技術是一個技術,因此自然而然可以實作一張網同時支持音視頻通信和直播兩種業務,
統一架構后,只有一套代碼,一套運維體系,減少維護成本,多種業務放到一起,每種業務的帶寬峰值不同,加起來的整體峰值低于各個業務峰值之和,運營商對我們的帶寬計費通常是看峰值或95峰,多個業務峰值錯開后,成本也會有相應下降,未來規劃點播、檔案分發也都放到這張網里,起到更大的錯峰降成本的效果,
在CDN下行的邊緣節點上,實作協議轉換,轉成RTC協議,也能實作低延時直播,這是目前市面上較先進的系統實作低延時直播的思路,
然而,GRTN不僅僅是下行播放切換成RTC協議,而是全鏈路的RTC協議,全鏈路RTC也能解決主播側的最后一公里質量問題,以及抗服務器間丟包,提升質量,降低了中間協議轉換帶來的損失,從而實作更低的傳輸延時,實作全鏈路RTC后,擁塞控制可以做到端到端,例如端到端的FEC抗丟包、大小流切換、SVC/丟GOP等策略一起配合,提升用戶體驗,而端到端低延時RTC傳輸后,觀眾連麥就變得非常簡單,只需要觀眾側再上行一路流,主播拉下來播放,即可實作連麥,
另外,有同學可能會問,端到端RTC系統,跟傳統的會議系統有什么區別?這里區別在于,傳統會議系統通常部署在中心機房,接入節點少,GRTN直接部署在CDN上,通過全球覆寫提升質量,
GRTN第三個特點是去中心化架構,動態路徑規劃,做直播CDN的同學都會有個很深的印象,小主播很多時,回源帶寬是非常昂貴的,小主播由于命中率低,回源比例高,有些情況需要超過50%的帶寬到L2(中間源)回源,產生大量的成本,
同時,由于L2(中間源)和中心機房的保障比L1(邊緣節點)好,帶寬價格通常高于L1,讓回源帶寬更加昂貴,各個直播CDN都在想方設法降低回源帶寬,包括使用302重定向、建立冷流集群等等,但到L2回源是無法避免的,去中心化架構就是回源路徑可以不經過L2或中心機房,直接從L1出,減少傳輸路徑,不僅大大減少回源成本,還能提升傳輸質量,配合動態路徑規劃,尋找成本、質量之間的最優解,由于音視頻流不是必須經過中心,中心故障帶來的影響也就大大減小了,
GRTN大部分模塊是各個業務相互通用的,但也有一些內容需要各個業務定制,業務定制主要包括三塊:客戶端、擁塞控制及傳輸策略、流媒體編輯,這三塊在設計上都有統一的接入介面設計,跟傳輸質量相關性最大的,主要是擁塞控制及傳輸策略,
適配業務的擁塞控制演算法
? 深度定制:強網推流穩定性
深度強網優化,首先,給出強網判定,針對強網用戶提高推流畫質穩定性,控制碼率避免因偶然的丟包和延遲而降低;另外,優化 AIMD 的碼率調控演算法,快上慢下,提高強網帶寬利用率;最后,限制弱網范圍,原生的擁塞控制演算法對于延遲的抖動過于敏感,平滑其調控碼率的策略,
? 系統尋找最優解:自學習的引數優化
常規音視頻傳輸優化,通常是需要專業的人才根據經驗值調優,對人才的要求很高,但我們可以將人才調優的程序,由系統自動來實作,系統性調優 WebRTC 中擁塞控制演算法的理論默認值,基于先驗知識的引數范圍梳理,賦能引數配置,基于先驗知識的分批次引數探測,多角度評價演算法設計,通過不斷迭代,尋找擁塞控制引數的最優解,引數自學習系統帶來的好處還包括,當環境變化時,系統可以自動更新最優解,而專業人才的經驗,很難這么快速的適應新的環境,在推流端使用了自學習的引數優化后,推流卡頓率總體下降 40%,延遲下降 12% ,
? 前沿探索:基于強化學習的擁塞控制
受學術界最新研究方向 Pensieve[1] 的啟發,我們和北京郵電大學合作,定制淘寶直播基于強化學習的擁塞控制演算法,自研與傳統擁塞控制演算法相結合的策略,在平穩網路中,保持帶寬利用率不降的情況下,可以降低 20% 的延遲,以及約 25% 的卡頓,
淘寶直播對于該方向的研究成果,已經受到學術界認可,連續兩年在網路方向頂級會議 MobiCom 上發表論文(Concerto[2], OnRL[3]),
[1]. Hongzi Mao,Ravi Netravali, and Mohammad Alizadeh. 2017. Neural Adaptive Video Streaming with Pensieve. In Proceedings of the Conference of the ACM Special Interest Group on Data Communication, SIGCOMM 2017, LosAngeles, CA, USA, August 21-25, 2017. 197–210.
[2]. Zhou, Anfu, et al. "Learning to coordinate video codec with transport protocol for mobile video telephony." The 25th Annual International Conference on Mobile Computing and Networking. 2019.
[3]. Zhang, Huanhuan, et al. "OnRL: improving mobile video telephony via online reinforcement learning." Proceedings of the 26th Annual International Conference on Mobile Computing and Networking. 2020.
適合直播的網路傳輸策略
擁塞控制演算法主要反饋網路擁塞情況,并不能直接緩解網路擁塞,要緩解網路擁塞,必須配合網路傳輸策略,包括大小流切換、SVC、丟GOP、平滑發送、FEC、ARQ/NACK等,
擁塞控制演算法從webrtc完整模塊化剝離和重構,性能是webrtc原來實作的2倍以上,針對直播場景深度優化,同時兼顧秒開和延遲,支持GCC和BBR演算法,追求最大吞吐率,在網路小范圍抖動情況下不受影響,最大支持20%丟包和500ms內的抖動,和通信場景追求極低延遲和流暢性的方式還不一樣,直播場景追求高畫質,保證用戶的觀看體驗,整個演算法通過線上播放資料AB做反饋,系統不斷優化迭代,
? 零轉碼的碼率自適應系統
目前業界大多數直播系統,當用戶網路較差時,用戶可以切換更低的清晰度來保障播放流暢,
低清晰度的直播流需要云轉碼生成,云轉碼需要解碼后編碼,編解碼是非常消耗計算資源的,因此會帶來大量的轉碼成本,
通信技術里不需要轉碼,擁塞控制演算法發現帶寬擁塞時,會自動調整發送碼率來緩解擁塞,然而這種擁塞控制演算法,在直播系統里并不適用,因為部分用戶網路差,會將所有觀看者的質量拉低,所以直播系統的碼控不能直接調整主播編碼碼率,需要分開來看,如果主播上行網路擁塞,確實需要調整主播編碼碼率,如果是部分觀眾下行網路擁塞,則不能調整主播編碼碼率,而是在CDN邊緣上實作丟棄一些不重要的資訊,來實作有損降碼率,降碼率的策略包括:SVC、丟GOP、大小流等,
SVC是一種可以丟掉部分視頻內容,雖然降低一點觀看質量,但能保證內容可看的一種技術,適應于相對靜態的場景,這種場景下,由于動作不大,幾乎看不出來,比如直播帶貨等,
SVC又分兩種,空域SVC和時域SVC,空域SVC是指,丟掉一部分視頻內容,幀率不變,但每一幀視頻清晰度降低的技術,時域SVC是指,丟掉一部分視頻內容,幀率下降,但每一幀清晰度跟原幀的清晰度幾乎不變的技術,簡而言之,時域SVC是保證清晰度損失流暢度,空域SVC是保證流暢度損失清晰度,目前行業大部分空域SVC的編碼演算法,壓縮率都會下降,甚至效果不如同時編大小流,因此使用得較少,
平坦結構
行業上常用的結構是X265的單層金字塔結構,
金字塔結構
淘寶直播使用S265編碼器,支持多層金字塔結構,好處是參考幀更近,相關性更強,金字塔越上層的幀,優先級越低,在網路擁塞時丟棄的影響越小,
參考幀選擇時考慮時間、質量、層級
參考幀的選擇很重要,選擇質量更好的參考幀,解出來的質量也越好,選擇越近的參考幀,幀的相似度越高,壓縮的質量也就越好,因為每一層都會有質量損失,參考層級越高,質量越差,因此參考層級越高,越需要縮短參考距離,提升幀的質量,
因此,使用S265的時域SVC技術后,不僅能實作擁塞時在CDN邊緣節點的丟幀降碼率能力,降低卡頓率,還能實作不丟資料時有更高的壓縮率,整體壓縮率提升5~6個百分點,
不過在極度擁塞的情況下,這還是不夠的,需要使用丟gop策略,快速解決擁塞,在一個gop中,需要按照gop緯度統計碼率,如果帶寬不足的情況下,需要丟棄后面的幀,直到I幀為止,這也帶來一個問題,gop中后半程的資料只有音頻,資料不足,擁塞控制帶寬會降的好多,針對這種情況,演算法層面做了一系列調整,
? 對抗丟包的策略
對抗丟包的策略,除了前面講到的降碼率,還包括FEC、ARQ/NACK、平滑發送等等,
FEC是前向糾錯碼,即,在編碼的時候,多編一些冗余,使得解碼側丟失一些資料,仍能恢復出原始資料的一種技術,FEC以往通常用于廣電系統,在單向傳輸系統中發揮了重要作用,后來的音視頻通信技術,FEC也成為了標配,但直播系統即不同于廣電系統,也不同與音視頻通信系統,由于觀眾量巨大,如果編的FEC要對抗每一個觀眾的丟包,則有大量觀眾即使網路好也會收到冗余,帶來帶寬的消耗以及成本提升,如果在CDN邊緣針對每個觀眾重新計算冗余,FEC矩陣計算量比較大,則CDN的計算成本又非常高昂,因此直播系統的FEC,是主播側編入固定的冗余,CDN在邊緣節點針對每個觀眾的網路,選擇透傳多少FEC比例,從而達到既能抗網路丟包,又節約成本的目的,
ARQ或者NACK,都是發現丟包時,請求重傳的技術,但網路擁塞時,請求重傳會加重擁塞情況,需要謹慎使用,
網路上發生卡頓的一大兇手,是網路抖動,例如wifi、4G信號被干擾,可能造成短時間網路中斷,然后瞬間所有資料全部到達,瞬間所有資料全部發送,可能造成網路擁塞,導致卡頓,更嚴重的,如果是超大主播出現發送資料的尖峰,可能直接把CDN節點打滿,造成更大范圍的卡頓,
平滑發送演算法策略防止網路突發,平滑網路流量,尤其是在大量用戶同時進入直播間的情況下,同時針對秒開場景深度定制,并且重新設計發送機制和演算法,發送性能大大提高,是原生webrtc性能1.4倍以上,平滑發送使用了udp多包發送機制sendmmsg,構造新的發送邏輯,大大提高發送效率,直播場景播放側有秒開的需求,在啟播的階段服務器會根據配置發送多余gop資料,這個和通信場景的pacer有些不同,
針對直播場景,我們把平滑發送細分三個階段
秒開首幀
主要是首個I幀的資料,在直播中這個通常很大,首個I幀的資料在配置最大速度下,快速發送給播放端,
秒開gop快取
首個I幀發送完畢后,使用相對比較大的速度發送gop快取資料,
正常發送
這個時候按照配置速度發送,或者按照擁塞控制給出的帶寬來發送,
此外直播場景還有固定時間大的I幀的沖擊,在通信場景中只有pli,fir請求I幀的時候才有大的I幀的發送,資料相對比較平穩,但是直播場景固定2-4s會有I幀的到來,類似下面圖例右邊的場景,大的I幀在網路帶寬不足的情況下,可能會發送200-400ms,由于平滑發送佇列中音視頻同時存在,會阻塞音頻發送,所以我們在秒開階段是音視頻按順序交錯發送,過了秒開階段,優先發送音頻,
總結
電商直播的快速崛起,怎么把直播內容做到高效可靠的傳達,無論是演算法、客戶端、服務端,單點優化已經出現了瓶頸,想要做出突破,需要對直播系統進行整體設計改造,
目前淘寶直播已經開創性的完成了直播新架構的升級,對用戶的第一公里和最后一公里完成RTC鏈路接入,低延時直播讓直播時代從5~7秒延時進入1秒內,這種劃時代的技術創新變革,跟淘寶直播擁塞控制演算法和策略的優化創新,以及淘寶直播和阿里云媒體通信級鏈路GRTN系統的共建密不可分,
針對直播場景擁塞控制演算法定制優化,強網推流穩定性,提高強網帶寬利用率,平滑碼率調控策略;自學習引數優化系統,基于先驗知識的分批次引數探測,多角度評價演算法設計,通過不斷迭代,尋找擁塞控制引數的最優解,在推流端使用了自學習的引數優化后,推流卡頓率總體下降 40%,延遲下降 12%;基于強化學習的擁塞控制,我們和北京郵電大學合作,定制淘寶直播基于強化學習的擁塞控制演算法,自研與傳統擁塞控制演算法相結合的策略,在平穩網路中,保持帶寬利用率不降的情況下,可以降低 20% 的延遲,以及約 25% 的卡頓,淘寶直播對于該方向的研究成果,已經受到學術界認可,連續兩年在網路方向頂級會議 MobiCom 上發表論文,
通信級直播系統的建設,GRTN的設計理念是用通信的技術來傳遞直播多媒體資料,實作一張網同時支持音視頻通信和直播兩種業務,運營商的帶寬計費通常是看峰值或95峰,多個業務峰值錯開后,可以起到很好的錯峰降成本的效果,在CDN下行的邊緣節點上,實作協議轉換,轉成RTC協議,實作低延時直播,然而,GRTN不僅僅是下行播放切換成RTC協議,而是全鏈路的RTC協議,同時GRTN是一個去中心化架構,配合動態路徑規劃,可以尋找成本、質量之間的最優解,在該系統上,實作網路傳輸優化策略,包括大小流切換、SVC、丟GOP、平滑發送、FEC、ARQ/NACK等,
目前淘寶直播雙11已經全量跑在GRTN系統之上,相比去年雙11,秒開率提升32%,卡頓率降低79%,卡頓vv降低44%,后面淘寶直播團隊還會繼續對該系統進行持續優化和更多創新玩法的探索,輔以電商直播的快速增長需求,
? 拓展閱讀
作者|淘系音視頻技術團隊
編輯|橙子君
出品|阿里巴巴新零售淘系技術
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/235585.html
標籤:其他
