作者 | 火山引擎直播團(tuán)隊
策劃 | 魯冬雪
世界杯已經(jīng)結(jié)束了,梅西帶領(lǐng)阿根廷時隔三十六年之后終于如愿捧杯。抖音直播提供的 4K 超高清超低延遲看播能力給億萬觀眾留下了深刻的印象,決賽的 PCU 達(dá)到 3700w+,在這樣大規(guī)模并發(fā)下,如何能穩(wěn)定流暢地做到更低的延遲,是一個巨大的挑戰(zhàn)。本文主要介紹世界杯期間火山引擎視頻云和相關(guān)團(tuán)隊在低延遲上的工作和優(yōu)化,作為低延遲方向上的總結(jié)。
(相關(guān)資料圖)
本文主要討論生產(chǎn)和傳輸環(huán)節(jié)的延遲。生產(chǎn)環(huán)節(jié)的延遲主要受視頻流供應(yīng)商控制,技術(shù)團(tuán)隊可以實現(xiàn)的是,盡可能準(zhǔn)確地測量出生產(chǎn)的每一個環(huán)節(jié)的實際延遲,并在發(fā)現(xiàn)不合理的情況時推動供應(yīng)商解決。傳輸環(huán)節(jié)的延遲技術(shù)團(tuán)隊更可控,也是本次優(yōu)化的重點。這部分技術(shù)能力可以作為火山引擎視頻云的優(yōu)勢能力積累并對外提供服務(wù)。在優(yōu)化的過程中,一個越來越清晰的認(rèn)知是:降低延遲并不困難,難的是延遲降低之后,怎么通過優(yōu)化保證播放體驗不下降甚至變得更好。
首先簡單介紹下世界杯直播的整個分發(fā)鏈路,還有每個環(huán)節(jié)的延遲的測量方法,讓大家對整體的鏈路有初步的全局認(rèn)識。
測算方法:
拍照 視頻畫面上有時鐘展示的(比如畫面左上角或者右上角的 北京時間或者比賽持續(xù)時間 ,一般精確到秒),可以通過同時拍照兩個播放畫面的方式,記錄同一時刻兩個畫面,然后通過照片中的時鐘 做差來計算。 手動秒表計算 如果視頻畫面中無時鐘相關(guān)內(nèi)容,那么可以從延遲低的視頻畫面中選取 具有標(biāo)志性易識別 的幀啟動秒表,然后觀察延遲高的畫面出現(xiàn)同樣的幀畫面時,停止秒表,記錄秒表結(jié)果為延遲對比結(jié)果。 僅適用演播室推流到抖音播放鏈路 計算方法: 端到端延遲 = 觀眾當(dāng)前系統(tǒng)時間戳 - SEI 中的時間戳,單位 ms。 統(tǒng)計頻度:每 2s 計算一次,每 10s 上報一次當(dāng)前計算結(jié)果。 每個 I 幀前會有一個 SEI,流規(guī)格設(shè)置為 I 幀間隔為 2s,因此每 2s 演播室推流側(cè)會生成一個 SEI 幀。 前置要求: 演播室推流前進(jìn)行 NTP 本地時鐘校準(zhǔn)。延遲測量手冊:
網(wǎng)絡(luò)流信號源在給到抖音之前存在多個環(huán)節(jié),每個環(huán)節(jié)都可能會對最終的延遲有影響,但這一部分技術(shù)團(tuán)隊可以影響的比較少,主要是運營同學(xué)在溝通。
演播室在收到央視的源流之后,需要加上解說和包裝,所以也會引入一定的延遲。這次抖音的多個演播室是由多家第三方公司負(fù)責(zé)的,第三方公司的制作規(guī)格不一,在正式比賽之前經(jīng)過大量的溝通,基本確認(rèn)最重要的兩個演播室的技術(shù)方案和使用的編碼系統(tǒng)是一致的。
不過這次在演播室環(huán)節(jié)引入的延遲仍然偏高,達(dá)到了 1.5s 左右,和供應(yīng)商工程師溝通后,短期內(nèi)為了保證穩(wěn)定,沒有再進(jìn)一步壓縮了,這部分引入的延遲和競品也是一致的。
下圖是一次直播的簡化的流程:
直播的傳輸環(huán)節(jié)里,對延遲影響大的主要是轉(zhuǎn)碼、分發(fā)和播放緩沖,使用實時的轉(zhuǎn)碼模式,轉(zhuǎn)碼器引入的延遲一般在 300ms 以內(nèi)甚至更短。CDN 的分發(fā)環(huán)節(jié)也會帶來一定的延遲,但相對也較短。為了對抗網(wǎng)絡(luò)抖動引入的播放緩沖區(qū)引入的延遲播放緩沖引入的延遲常常會有 5s 甚至更多,所以本文主要討論 怎么在減少播放緩沖的情況下,通過不斷地優(yōu)化延遲降低的同時不影響整體的播放體驗(不僅僅是卡頓) 。在調(diào)優(yōu)過程中,大家對播放體驗也有了更細(xì)致、更深的理解,逐漸弄清楚了哪些 QoS 指標(biāo)可以對關(guān)鍵的 QoE 指標(biāo)產(chǎn)生直接的影響,對以后要優(yōu)化的方向也更明確了。
FLV 是現(xiàn)在國內(nèi)主流直播播放使用的協(xié)議,火山引擎對低延遲直播的探索也是從 FLV 開始的。在百萬英雄、內(nèi)購會等活動中,F(xiàn)LV 低延遲方案也多次得到了驗證。
之前詳細(xì)介紹過 FLV-3s 方案在抖音落地的詳細(xì)實踐過程(細(xì)節(jié)內(nèi)容可跳轉(zhuǎn)到 基于 http-FLV 的抖音直播端到端延遲優(yōu)化實踐 ),同時提出過基于 FLV 方案做更低延遲下探,所面臨的挑戰(zhàn)也會更大:更低延遲的場景對直播全鏈路的傳輸穩(wěn)定性要求苛刻程度會幾何倍數(shù)增加,由于端到端鏈路的整體 buffer 更低,生產(chǎn)環(huán)節(jié)或者觀眾網(wǎng)絡(luò)抖動,就更容易發(fā)生卡頓。只要發(fā)生一次卡頓,延遲就會秒級增加,最終累積延遲會越來越大。而世界杯賽事延遲要求達(dá)到 2s,繼續(xù)延續(xù) FLV-3s 方案顯然達(dá)不到要求,需要配合精細(xì)的追幀或者丟幀策略。
音視頻數(shù)據(jù)流轉(zhuǎn)時序
在展開描述延遲追趕策略方案細(xì)節(jié)前,先簡單介紹播放器音視頻數(shù)據(jù)流轉(zhuǎn)時序:網(wǎng)絡(luò) IO 下載音視頻數(shù)據(jù)到播放器緩存 buffer->解碼器從 buffer 中取數(shù)據(jù)解碼并降解碼后的數(shù)據(jù)存入待播放緩存->音畫同步等播控策略->渲染播放音視頻幀。
數(shù)據(jù)驅(qū)動 QoE & QoS 優(yōu)化
由于進(jìn)一步下探延遲,卡頓也會隨之惡化,反而延遲逐漸累積增加達(dá)不到低延遲的效果,因此延遲下探必須配合延遲追趕播控策略來確保延遲增大后可及時追趕恢復(fù)到低延遲。是否只要在延遲增加后立即倍速追趕就能滿足業(yè)務(wù)的需求呢?對于延遲 QoS 指標(biāo)來說的確是,但對于用戶主觀體驗的 QoE 指標(biāo),這樣的策略反而可能是負(fù)向的。
結(jié)合歷史 AB 實驗以及 DA 詳細(xì)數(shù)據(jù)分析,有以下幾點倍速追趕與 QoE 指標(biāo)之間的關(guān)聯(lián)現(xiàn)象:
倍速追趕帶來的播放速度變化本身就是負(fù)面的體驗 倍速時長超過 2 秒,用戶即可有感知且負(fù)向反饋 倍速速度越大,播放速度前后變化 diff 越大,負(fù)向越嚴(yán)重 倍速與正常速度的切換過于頻繁,會帶來負(fù)向反饋綜上,需要一套精細(xì)的播控策略兼顧延遲與 QoE 指標(biāo)的平衡。詳細(xì)方案設(shè)計如下:
輸入:播放器當(dāng)前 Buffer 時長、歷史 Ns 內(nèi) buffer 抖動方差、歷史 Ns 內(nèi)卡頓信息以及追幀參數(shù)配置。
策略可配置參數(shù)以及含義映射:
輸出:目標(biāo)播放速度。
原理:
基于 buffer 抖動方差 & 歷史卡頓信息,來定性衡量網(wǎng)絡(luò)質(zhì)量,判斷是否可以追趕,只有在網(wǎng)絡(luò)質(zhì)量良好是才能觸發(fā)追趕邏輯避免卡頓。 追幀采用雙閾值,并且支持可配置,可以控制追幀持續(xù)時長不超過 2s,同時也可以保證不頻繁變速。 追幀速度可配置,保證倍速變化不超過一定輻度。(1)收益總結(jié)
FLV 2s 低延遲已在抖音驗證收益:核心 QoE 波動,電商指標(biāo)顯著正向,成本也有一定比例的節(jié)省,目前已全量。 世界杯:雙端 FLV-2s 方案作為世界杯低延遲方案之一,支持了開幕賽到?jīng)Q賽的全部賽事。(2)調(diào)優(yōu)經(jīng)驗總結(jié)
無論播放過程中丟幀方式追趕延遲,還是卡頓后立即丟幀追趕延遲,只要是丟幀,QoE 都是負(fù)向。 iOS 端對倍速負(fù)向沒有 Android 敏感,對倍速容忍度高。 精細(xì)化倍速追幀策略可以滿足 FLV-2s 的延遲需求,但再進(jìn)一步下探延遲,就需要同時配合 卡頓優(yōu)化方案從源頭避免延遲增加。RTM 的方案參考了 WebRTC,可以讓端到端延遲直接進(jìn)入 1s 以內(nèi),已經(jīng)持續(xù)在抖音上打磨了一年多,整體來說遇到的困難很大,在推進(jìn)的過程也不斷地發(fā)現(xiàn)了新的問題,也逐漸認(rèn)識到, 直接把 RTC 在視頻會議上的方案應(yīng)用到直播播放場景的效果并不好,需要做大量的改造才能讓直播的體驗得到抖音用戶的認(rèn)可 。同時評測的同學(xué)也持續(xù)對行業(yè)內(nèi)已經(jīng)上線的類似方案進(jìn)行了跟蹤和測試,經(jīng)過線上測試后,也發(fā)現(xiàn)現(xiàn)有多方案也存在很多問題, 所以一直也沒有停止自研。RTM 優(yōu)化的目標(biāo)是在延遲降低的情況下,用戶核心體驗指標(biāo)對齊或者優(yōu)于大盤的 FLV 方案。但是由于 FLV 低延遲方案的持續(xù)優(yōu)化并拿到結(jié)果,一定程度上 RTM 的優(yōu)化目標(biāo)的 bar 是在不斷提高的 。
每次迭代都要經(jīng)過分析數(shù)據(jù)->找到問題點->提出優(yōu)化方案->完成開發(fā)和測試->AB 實驗->分析數(shù)據(jù)的反復(fù)循環(huán),每一次循環(huán)的都需要至少一個版本甚至多個版本的周期,所以項目整體耗時較長。關(guān)于如何提升實驗的效率,也做了很多思考和探索。最后通過多次的實驗和反復(fù)的問題解決,在核心用戶體驗指標(biāo)基本對齊了 FLV,所以在世界杯的多場比賽中,RTM 方案也承擔(dān)了一定量級的 CDN 容量,核心鍵指標(biāo)上都對齊了大盤,穩(wěn)定性和質(zhì)量得到了充分的驗證。
項目啟動后,將 RTC 實時通信 SDK 直接集成進(jìn)入播放器后首先進(jìn)行線上 AB 測試,初期的實驗效果顯得大跌眼鏡: 除了端到端延遲指標(biāo)符合預(yù)期以外無論是拉流成功率,首屏秒開時間,卡頓等指標(biāo)均與 FLV 差距很大 ;所以 RTC 技術(shù)方案要順利部署到直播場景,還需要配合直播播控策略進(jìn)一步優(yōu)化。
為了讓 RTM 的綜合指標(biāo)對齊 FLV,從若干角度來進(jìn)行 RTM 的播控邏輯定制化,所有的優(yōu)化圍繞著核心用戶體驗指標(biāo)進(jìn)行展開:
DNS 節(jié)點優(yōu)選、SDK 信令預(yù)加載、UDP 連通性預(yù)探測主要解決的拉流成功率相關(guān)問題。 SDP 信令相關(guān)優(yōu)化主要解決信令時間消耗的問題(首幀時間)與成功率問題。 RTC 內(nèi)核播控定制化主要解決播放的卡頓問題。 播放器播控邏輯結(jié)合解決的音畫同步與渲染策略的問題。傳統(tǒng)的 RTC 技術(shù)采用 SDP 信令方式進(jìn)行媒體能力協(xié)商,SDP 信令通過如下圖方式進(jìn)行交互參見下圖:
但是 HTTP SDP 信令交互存在如下方案的弊端:弱網(wǎng)環(huán)境下(如 RTT 較大/網(wǎng)絡(luò)信號不穩(wěn)定),HTTP 信令建聯(lián)成功率不理想;導(dǎo)致播放請求響應(yīng)緩慢或超時(基于信令數(shù)據(jù)包龐大且發(fā)生 TCP 重傳導(dǎo)致信令響應(yīng)速度不理想);另一方面 SDP 交互傳輸 SDP 文本的內(nèi)容很大(通常 3KB~10KB)建聯(lián)的成本較高導(dǎo)致初始化的成本無法忍受;對比 FLV 的 HTTP 請求完成后直接完成建聯(lián)和媒體數(shù)據(jù)直接傳輸,可以采用新的信令模式:MiniSDP 信令。這是一種基于二進(jìn)制編碼的壓縮協(xié)議,提供對標(biāo)準(zhǔn) SDP 協(xié)議進(jìn)行壓縮處理;這種方案可以降低信令交互時間,提高網(wǎng)絡(luò)傳輸效能,降低直播拉流首幀渲染時間,提高拉流秒開率/成功率等 QoS 統(tǒng)計指標(biāo)。其作用原理是將原生 SDP 轉(zhuǎn)換成更小的二進(jìn)制格式(300bytes)通過一個 UDP 包(MTU 限制之內(nèi))完成整個 C/S 交互。
采用 MiniSDP 信令進(jìn)行媒體協(xié)商通信的信令交互流程如下圖所示:采用 MiniSDP 壓縮信令方式利用 UDP 網(wǎng)絡(luò)傳輸;預(yù)期單個 UDP 數(shù)據(jù)包請求即可完成 SDP 完整壓縮信息的傳輸。
當(dāng)前 MiniSDP 信令(UDP)信令上線后觀察后續(xù)的 QoS 指標(biāo)發(fā)現(xiàn),信令建聯(lián)的成功率和首幀時間得到了大幅度的優(yōu)化。
經(jīng)過線上的 AB 實驗發(fā)現(xiàn):RTM 拉流成功率相比 FLV 持續(xù)存在著一定的差距,而且這種差距經(jīng)過觀察得知:用戶的網(wǎng)絡(luò)等級質(zhì)量和用戶的拉流成功率存在一定的正相關(guān)性(UDP 協(xié)議本身特性),即用戶網(wǎng)絡(luò)質(zhì)量越高成功率越高。
拉流網(wǎng)絡(luò)等級篩選
根據(jù)網(wǎng)絡(luò)質(zhì)量預(yù)估信息綜合評估用戶的 TCP/UDP RTT 和數(shù)據(jù)下行吞吐率,得出用戶網(wǎng)絡(luò)等級;選擇網(wǎng)絡(luò)質(zhì)量優(yōu)異的用戶采用 RTM 拉流降低失敗率。
當(dāng)線上 AB 實驗采用網(wǎng)絡(luò)等級漏斗進(jìn)行網(wǎng)絡(luò)篩選以后,選擇用戶網(wǎng)絡(luò)情況相對較好的這一部分的用戶開啟實驗(這部分用戶占全網(wǎng)用戶的絕大部分,剩余的用戶采用默認(rèn) FLV 低延時),原理就是用戶在拉流前綜合權(quán)衡當(dāng)前網(wǎng)絡(luò)狀態(tài),當(dāng)網(wǎng)絡(luò)不適合 RTM 時候通過策略前置回落到 FLV,使得這部分用戶的體驗不受到影響。
UDP 節(jié)點探測
拉流前根據(jù)用戶請求的 URL 所歸屬的對應(yīng) CDN 邊緣節(jié)點,發(fā)起 UDP 探測;一段時間內(nèi)發(fā)送數(shù)據(jù)包觀察對應(yīng) CDN 節(jié)點的數(shù)據(jù) RTT 和丟包率,只有滿足一定條件(如 RTT<80ms 且丟包率<10%)的場景才會認(rèn)為 UDP 傳輸可以保證質(zhì)量和組幀成功率。
信令預(yù)加載
在當(dāng)前點播/直播房間中,預(yù)先加載后一個直播間的信令信息,提前做好 SDP 加載,降低下一個房間的首幀上屏?xí)r間。
內(nèi)核 JitterBuffer 禁用丟幀優(yōu)化
未調(diào)優(yōu)時候經(jīng)過 AB 實驗發(fā)現(xiàn),RTM 的視頻卡頓大幅度上漲,跟預(yù)期不匹配,對此團(tuán)隊分析了線上的大量日志數(shù)據(jù)觀察。當(dāng)前的硬解具有核心用戶體驗指標(biāo)的收益,但卡頓是 FLV 的將近 3 倍,分析了大量線上 badcase,發(fā)現(xiàn)部分機(jī)型網(wǎng)絡(luò)條件較好,但幀率卻極低,類似下表這種:
這種問題在部分高熱機(jī)型上的比例也是很高的,但同樣的機(jī)型,F(xiàn)LV 播放并無這樣的問題,通過對比 FLV 和 RTM 的播控策略,發(fā)現(xiàn)了一個關(guān)鍵不同點——傳統(tǒng)的 RTC 場景優(yōu)先保時延,全鏈路會觸發(fā)各種丟幀(包括但不限于解碼模塊,網(wǎng)絡(luò)模塊),F(xiàn)LV 直播場景會優(yōu)先保證觀播體驗(不丟幀,良好的音畫同步效果)。RTM 要想減少卡頓,取得 QoE 的收益, 播控策略需進(jìn)行定制化, 不影響連麥場景下的邏輯,內(nèi)部采用新的播控策略,最后上線后卡頓顯著減少。
RTC 內(nèi)核 JitterBuffer 平滑出幀優(yōu)化
RTM 網(wǎng)絡(luò)傳輸 SDK 的抽象:將內(nèi)核進(jìn)行改造,復(fù)用引擎中的網(wǎng)絡(luò)傳輸-組包-JitterBuffer/NetEQ 模塊;去掉解碼/渲染等模塊;將音視頻的裸數(shù)據(jù)拋出供播放器 demuxer 集成。
解碼器復(fù)用:降低解碼器重新初始化的時間,降低解碼首幀延時;復(fù)用解碼器-渲染器的播放緩沖區(qū)控速邏輯。
音畫同步的優(yōu)化:RTC 音視頻出幀之后在播放器側(cè)按照 FLV 的播控邏輯進(jìn)行二次音畫同步處理;按照 audio master clock 主時鐘進(jìn)行渲染校準(zhǔn),視頻幀渲染同步到音頻時間軸上。
本次世界杯超高清檔位的分辨率達(dá)到了 4K,對 RTM 方案的性能帶來了很大的挑戰(zhàn),在前期測試時也發(fā)現(xiàn)了一些低分辨率沒有的問題。當(dāng)時時間非常緊,不過在正式比賽之前,還是完成了這些問題的修復(fù),趕上了最后一班車。主要的問題和解決方案如下:
4K 高清檔位卡頓嚴(yán)重卡頓: 優(yōu)化 NACK 策略,保證更大的幀的組幀成功率。 CPU/GPU 內(nèi)存: 優(yōu)化 video 傳輸 pipeline,減少不必要的 raw 數(shù)據(jù)格式轉(zhuǎn)換。最終在性能和效果都通過了測試,RTM 在世界杯期間也順利上線,承擔(dān)了一定的流量,上線后穩(wěn)定性和質(zhì)量都符合預(yù)期。
在實際的世界杯比賽中, 抖音的延遲一直領(lǐng)先于相同信號源的其它產(chǎn)品 30s 左右 。即使最后兩場其它產(chǎn)品在個別直播間上了快速追趕策略比抖音快 0~1s,但追的速度過快且持續(xù)時間超過 15s+,有明顯感知,體驗相對較差, 這種策略在抖音上也曾經(jīng)做過 AB 實驗 ,播放時長是顯著負(fù)向的,所以最后并沒有跟進(jìn)。
未來在 高清、沉浸、互動 的直播場景中,針對高碼率、低延遲的需求,火山引擎視頻云會繼續(xù)打磨現(xiàn)有的適合不同場景的各種低延遲的方案,同時也會不斷地探索新的方案,在 延遲、成本、卡頓和其它播放體驗 上找到適合不同場景的 最佳或者最平衡 的方案。
在我看來,火山引擎視頻云的最大的優(yōu)勢,在于可以把先進(jìn)的技術(shù)放到真實的海量用戶的場景去做線上訓(xùn)練,通過不斷地總結(jié)失敗的教訓(xùn)和成功的經(jīng)驗,對用戶體驗有更深更細(xì)微的理解。下面簡單介紹一下火山引擎視頻云在各個方案上繼續(xù)努力的方向。
在 RTM 方案上,火山引擎視頻云還在不斷地發(fā)掘優(yōu)化點。以下幾點是未來會繼續(xù)探索的幾個方向:
拉流成功率的持續(xù)改進(jìn)
從 SDK 技術(shù)層面共性差異看,RTM 協(xié)議中的 RTP 包組首幀存在成功率短板,后續(xù)的成功率優(yōu)化需要從引擎的調(diào)優(yōu)持續(xù)探索。
RTP 擴(kuò)展特性的持續(xù)迭代
降低首幀時間縮小和 FLV 的差距:RTM 異步回源的深入探索,目前只有一家 CDN 支持,需要推廣至其它 CDN。 進(jìn)一步探索提升 RTM 的拉流成功率(針對用戶網(wǎng)絡(luò)不佳的場景):探測 ICE 多模式啟播能力對成功率的提升,明確各家 CDN 支持 RTM 啟播 TCP/UDP 及混合模式的能力。RTM 是降低延遲的一種全新方案,為了把在海量用戶的業(yè)務(wù)上積累的經(jīng)驗和教訓(xùn)反饋給整個業(yè)界,火山引擎視頻云也聯(lián)合騰訊和阿里發(fā)起了 RTM 行業(yè)標(biāo)準(zhǔn)的制訂,具體可以參考https://www.volcengine.com/docs/6469/103014,未來也會把標(biāo)準(zhǔn)推廣到更多的 CDN,不斷完善的同時,和業(yè)界一起向更低延遲演進(jìn)。
海外的 CDN 基本都只支持切片式的協(xié)議如 HLS/Dash 等,不支持 FLV 這類“過時”的傳輸協(xié)議。但 HLS/Dash 因為切片的存在,而且為了保證視頻的壓縮率,切片一般都是秒級的,且需要切片完全生成才能分發(fā)該分片,并且需要至少兩三個分片都生成完才能分發(fā),所以和流式的協(xié)議相比,延遲上天然有一些劣勢。其實這也是競品使用的方式,如下圖,每個分片 6s,在三個分片生成完后才可以分發(fā),帶來了 23s 的延遲。 世界杯期間,在視頻同源的情況下,其它產(chǎn)品的延遲顯著高于 抖音 ,就是因為使用了類似的 HLS 的切片傳輸方案。
但隨著 Akamai 和 Apple 分別提出了 CMAF 和 LL-HLS,引入了 fmp4 和 chunk 的概念,可以實現(xiàn)分片沒有完全生成的時候就開始分發(fā)分片的部分 chunk,延遲下限有了很大程度的下降。如下圖,延遲可以降到 1s。
火山引擎視頻云在 Apple 提出 LL-HLS 之前就跟進(jìn)了 CMAF,在 CMAF 的延遲和卡頓、拉流成功率上的優(yōu)化上也持續(xù)有不小的投入?,F(xiàn)在回顧 CMAF 的優(yōu)化的過程,可以 發(fā)現(xiàn)其實要解決的問題和 RTM 有很大的相似性,比如 CMAF 也存在拉流成功率、音畫同步、性能問題,優(yōu)化前在核心 體驗指標(biāo) 上同樣顯著差于 FLV。
與 FLV 的流式傳輸不同,CMAF 需要依賴用戶不斷發(fā)起各個分片的請求來獲取音視頻數(shù)據(jù),如果繼續(xù)采用 FLV 的請求模式,即建連->請求->響應(yīng)->斷開連接,會引入大量的建連耗時,造成卡頓,同時導(dǎo)致延遲的增大。做一個簡單的計算,假設(shè)每個切片是 2s,那么平均 1s 就會有一次音頻或視頻請求的建連,這對于網(wǎng)絡(luò)較差,尤其是高 RTT 的用戶來說是不可接受的,如果此時為了低延遲強(qiáng)行降低 buffer 水位,建連時的緩存消耗將導(dǎo)致頻繁的卡頓。
為此,可以在 CMAF 上采用 QUIC 協(xié)議與連接復(fù)用結(jié)合的方式,首先 QUIC 協(xié)議的 0-RTT 建連允許客戶端在服務(wù)端確認(rèn)握手成功之前就發(fā)出 HTTP 請求,而連接復(fù)用直接省去了后續(xù)請求的建連操作,大幅優(yōu)化了建連耗時,維持延遲的穩(wěn)定。但即使如此,每個分片的請求也會引入 1-RTT 的延遲,未來將與服務(wù)端一起探索預(yù)請求模式,進(jìn)一步壓縮延遲、降低卡頓。
CMAF 優(yōu)化的整體難度較大,團(tuán)隊同學(xué)也經(jīng)常需要在半夜和海外的 CDN 的工程師對齊和解決問題。不過經(jīng)過不斷的努力,最近在部分地區(qū)的也已經(jīng)有了階段性的進(jìn)展,在部分場景下核心指標(biāo)已經(jīng)對齊 FLV,團(tuán)隊也有信心在最近一段時間就能去掉機(jī)型和網(wǎng)絡(luò)類型的限制,讓 CMAF 可以承載更多常規(guī)比例的流量。
XR 直播的沉浸感以及高交互性是普通直播無法比擬的,但是這也導(dǎo)致了傳輸層需要承擔(dān)更大的壓力: 分辨率為 8K x 4K 或 8K x 8K, 源流碼率達(dá)到 50M 甚至 120M、非常容易因為擁塞導(dǎo)致卡頓、延遲增大,甚至無法正常解碼播放 ?;鹕揭嬉曨l云的做法是將 8K 的視頻切分成多個塊(tile),只傳輸用戶視角(viewport)內(nèi)的部分超高清塊,其它區(qū)域只傳輸 2K 或 4K 分辨率的縮小后的背景流,在用戶切換視角的時候再去重新請求新的超高清塊。當(dāng)然這里需要把切換延遲盡可能降到更低,經(jīng)過長時間的優(yōu)化,切換延遲已經(jīng)降低到非常低,一般情況下已經(jīng)感受不到切換的過程,未來會持續(xù)優(yōu)化,讓切換延遲更低。
這兩種做法都引入了優(yōu)先級的概念,即用戶視角內(nèi)的數(shù)據(jù)優(yōu)先級高于其他部分,低清數(shù)據(jù)優(yōu)先級高于高清數(shù)據(jù)?;谶@種特性,火山引擎視頻云將探索基于 UDP 的內(nèi)容優(yōu)先級感知的傳輸方案,優(yōu)先保障高優(yōu)數(shù)據(jù)的傳輸,對于低優(yōu)數(shù)據(jù)可選擇非可靠傳輸,即使丟失也無需重傳,保證 XR 直播低延遲的同時不引入過大的視覺失真。經(jīng)過優(yōu)化后,在傳輸 8K x 8K/8K x 4K 的超高清視頻時 對播放端的碼率要求從 120M/50M 降低到 20M/10M 左右甚至更低 ,在用戶側(cè)極大地減少了卡頓發(fā)生的概率,從而也減少了延遲增大的概率。
未來火山引擎視頻云也會持續(xù)優(yōu)化 XR 直播下在更高碼率更高分辨率下的卡頓和延遲,為用戶提供更沉浸的觀看體驗。
標(biāo)簽: 用戶體驗 技術(shù)團(tuán)隊 簡單介紹在實際法律問題情景中,個案情況都有所差異,為了高效解決您的問題,保障合法權(quán)益,建議您直接向?qū)I(yè)律師說明情況,解決您的實際問題。 立即在線咨詢 >
法制網(wǎng),中國知名的
法律咨詢網(wǎng)站,能夠為廣大用戶提供在線
免費法律咨詢服務(wù)。
CopyRight@2003-2022 fazhi.net ALL Rights Reservrd 版權(quán)所有
豫ICP備2022016495號-26
違法和不良信息舉報電話: