天天看點

直播新架構更新:全量支撐淘寶雙11直播

淘寶直播最近連續三年直播引導成交大幅增長,2020年以來,有100多種職業轉戰淘寶直播間,無論達人身份還是商家身份,都在新風口的驅動下大量入場。如何應對雙十一這種高峰值使用者直播需求,這無疑對淘寶直播提出了更高的技術要求和挑戰。同時,電商直播有強互動訴求,主播對彈幕的回複越及時,對購買越有促進效果。

通過AB測試驗證,延時對電商直播GMV有正向作用。但正常的HLS、FLV、RTMP等直播格式延時很難再降低,正常直播CDN也已經不再适合更低延時的直播,整個技術體系需要更新。為了降低直播延時,行業上有幾種做法:

直播新架構更新:全量支撐淘寶雙11直播
LHLS、CMAF甚至LLHLS方案的延時,基本都會超過2秒,暫不做比較。綜合考慮,WEBRTC方案相對符合我們的需求。淘系技術部跟阿裡雲一起共建了一張基于WEBRTC低延時多媒體傳輸網。

通信、直播二網合一的低延時傳輸網

直播的延時始終是個老大難問題,很多團隊都在考慮怎麼降低延遲。低延遲傳輸是一個綜合性的問題,要從整體入手,不僅要從設計上考慮,還需要用戶端,伺服器,資料系統緊密配合。最根本的傳輸協定不更新,延遲始終有一個天花闆。

直播新架構更新:全量支撐淘寶雙11直播

RTCP協定頭

對于傳統的rtmp,hls,http-flv基于tcp的協定來講,tcp是可靠傳輸,在弱網下一定會等某些資料到達才能繼續。但是對于音視訊資料而言,有些資料是可以丢的,比如不被參考的幀。此外tcp的擁塞控制在核心層,在擁塞發生時,滑動視窗直接減半,造成資料吞吐量低。同時缺乏應用層控制,對于音視訊場景不靈活,準确度低。還有tcp有重傳聚合的功能,造成資料确認慢,延遲增大。

基于tcp這些原因,傳統的播放器都會有5s以上的buffer來對抗網絡抖動。是以正常的音視訊通信基本都不使用TCP協定來實作,而使用UDP實作。

直播在降低延時後,在傳輸上也有很多跟通信相似的地方,方案上可以一并考慮。基于udp的webrtc半可靠傳輸,技術成熟,更加适合音視訊場景。從信令設計上采用rtcp app私有協定,rtcp标準互動相容,和音視訊傳輸使用一個socket連接配接。建聯協定更加精簡,保證最快1RTT給出媒體資料,快速啟播。

直播新架構更新:全量支撐淘寶雙11直播

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 的碼率調控算法,快上慢下,提高強網帶寬使用率;最後,限制弱網範圍,原生的擁塞控制算法對于延遲的抖動過于敏感,平滑其調控碼率的政策。

直播新架構更新:全量支撐淘寶雙11直播

▐ 系統尋找最優解:自學習的參數優化

正常音視訊傳輸優化,通常是需要專業的人才根據經驗值調優,對人才的要求很高。但我們可以将人才調優的過程,由系統自動來實作。系統性調優 WebRTC 中擁塞控制算法的理論預設值,基于先驗知識的參數範圍梳理,賦能參數配置,基于先驗知識的分批次參數探測,多角度評價算法設計。通過不斷疊代,尋找擁塞控制參數的最優解。參數自學習系統帶來的好處還包括,當環境變化時,系統可以自動更新最優解,而專業人才的經驗,很難這麼快速的适應新的環境。在推流端使用了自學習的參數優化後,推流卡頓率總體下降 40%,延遲下降 12% 。

直播新架構更新:全量支撐淘寶雙11直播

▐ 前沿探索:基于強化學習的擁塞控制

受學術界最新研究方向 Pensieve[1] 的啟發,我們和北京郵電大學合作,定制淘寶直播基于強化學習的擁塞控制算法,自研與傳統擁塞控制算法相結合的政策,在平穩網絡中,保持帶寬使用率不降的情況下,可以降低 20% 的延遲,以及約 25% 的卡頓。

淘寶直播對于該方向的研究成果,已經受到學術界認可,連續兩年在網絡方向頂級會議 MobiCom 上發表論文(Concerto[2], OnRL[3])。

直播新架構更新:全量支撐淘寶雙11直播

[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等。

直播新架構更新:全量支撐淘寶雙11直播

擁塞控制算法從webrtc完整子產品化剝離和重構,性能是webrtc原來實作的2倍以上,針對直播場景深度優化,同時兼顧秒開和延遲,支援GCC和BBR算法,追求最大吞吐率。在網絡小範圍抖動情況下不受影響,最大支援20%丢包和500ms内的抖動。和通信場景追求極低延遲和流暢性的方式還不一樣,直播場景追求高畫質,保證使用者的觀看體驗。整個算法通過線上播放資料AB做回報,系統不斷優化疊代。

▐ 零轉碼的碼率自适應系統

目前業界大多數直播系統,當使用者網絡較差時,使用者可以切換更低的清晰度來保障播放流暢。

低清晰度的直播流需要雲轉碼生成。雲轉碼需要解碼後編碼,編解碼是非常消耗計算資源的,是以會帶來大量的轉碼成本。

通信技術裡不需要轉碼,擁塞控制算法發現帶寬擁塞時,會自動調整發送碼率來緩解擁塞。然而這種擁塞控制算法,在直播系統裡并不适用,因為部分使用者網絡差,會将所有觀看者的品質拉低。是以直播系統的碼控不能直接調整主播編碼碼率。需要分開來看,如果主播上行網絡擁塞,确實需要調整主播編碼碼率,如果是部分觀衆下行網絡擁塞,則不能調整主播編碼碼率,而是在CDN邊緣上實作丢棄一些不重要的資訊,來實作有損降碼率。降碼率的政策包括:SVC、丢GOP、大小流等。

SVC是一種可以丢掉部分視訊内容,雖然降低一點觀看品質,但能保證内容可看的一種技術,适應于相對靜态的場景。這種場景下,由于動作不大,幾乎看不出來,比如直播帶貨等。

SVC又分兩種,空域SVC和時域SVC。空域SVC是指,丢掉一部分視訊内容,幀率不變,但每一幀視訊清晰度降低的技術。時域SVC是指,丢掉一部分視訊内容,幀率下降,但每一幀清晰度跟原幀的清晰度幾乎不變的技術。簡而言之,時域SVC是保證清晰度損失流暢度,空域SVC是保證流暢度損失清晰度。目前行業大部分空域SVC的編碼算法,壓縮率都會下降,甚至效果不如同時編大小流,是以使用得較少。

直播新架構更新:全量支撐淘寶雙11直播

行業上常用的結構是X265的單層金字塔結構。

直播新架構更新:全量支撐淘寶雙11直播

淘寶直播使用S265編碼器,支援多層金字塔結構。好處是參考幀更近,相關性更強。金字塔越上層的幀,優先級越低,在網絡擁塞時丢棄的影響越小。

直播新架構更新:全量支撐淘寶雙11直播

參考幀的選擇很重要,選擇品質更好的參考幀,解出來的品質也越好,選擇越近的參考幀,幀的相似度越高,壓縮的品質也就越好。因為每一層都會有品質損失,參考層級越高,品質越差,是以參考層級越高,越需要縮短參考距離,提升幀的品質。

是以,使用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有些不同。

直播新架構更新:全量支撐淘寶雙11直播

針對直播場景,我們把平滑發送細分三個階段

  • 秒開首幀
    • 主要是首個I幀的資料,在直播中這個通常很大。首個I幀的資料在配置最大速度下,快速發送給播放端。
  • 秒開gop緩存
    • 首個I幀發送完畢後,使用相對比較大的速度發送gop緩存資料。
  • 正常發送
    • 這個時候按照配置速度發送,或者按照擁塞控制給出的帶寬來發送。
直播新架構更新:全量支撐淘寶雙11直播

此外直播場景還有固定時間大的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%。後面淘寶直播團隊還會繼續對該系統進行持續優化和更多創新玩法的探索,輔以電商直播的快速增長需求。

繼續閱讀