金肱羽,武霄泳,張志龍,劉丹譜,尹方方
(1.北京郵電大學,先進信息網(wǎng)絡北京實驗室,網(wǎng)絡體系構建與融合北京市重點實驗室,北京 100876;2.上海無線電設備研究所,上海 201109;3.中國傳媒大學媒體融合與傳播國家重點實驗室,北京 100024)
直播作為流媒體技術的重要應用形式,近年來得到快速發(fā)展。相較于傳統(tǒng)的流媒體點播業(yè)務,視頻直播更具挑戰(zhàn)性。直播業(yè)務互動性更強,對于實時性要求更高。因此,為提高直播用戶的體驗質(zhì)量,不僅需要考慮視頻質(zhì)量、平滑度、卡頓等因素,還需盡量降低端到端時延。
碼率自適應算法通過動態(tài)選擇合適的視頻碼率,使業(yè)務適應信道的時變特征,可以有效改善用戶的體驗質(zhì)量。現(xiàn)有的碼率自適應算法多是針對點播場景設計的,并未考慮端到端的時延因素,直接應用在直播場景很難獲得較好的業(yè)務性能。
近年來,已有一些針對流媒體直播的碼率自適應算法被相繼提出。例如,Wang 等人提出了HCA[1],通過前饋反饋機制降低時延;Xie 等人提出了動態(tài)調(diào)整緩沖區(qū)閾值的DTBB[2]避免卡頓;Zhang等人提出以降低時延為目標的LAPAS 算法[3];Peng等人針對直播場景下,提出通過調(diào)整播放速度、增加跳幀等時延控制機制并且選擇合適的碼率,從而達到降低時延的效果[4]。
然而,很多針對直播的碼率自適應算法未能做到在用戶體驗質(zhì)量的影響因素之間做到很好的均衡,例如,DTBB 算法只考慮當前客戶端的緩沖區(qū)容量,而并未考慮到時延機制優(yōu)化。因此,本文提出了基于PID的碼率自適應算法。該算法綜合考慮網(wǎng)絡波動狀況以及緩沖區(qū)占用情況進行穩(wěn)健的碼率決策,同時對直播場景的時延機制進行優(yōu)化。仿真實驗表明,與基線算法相比,本文所提算法可以有效提高用戶體驗質(zhì)量。
基于HTTP 的自適應流媒體(HTTP Adaptive Streaming, HAS)是目前被廣泛采用的流媒體直播技術之一。圖1 展示了使用HAS 的流媒體直播的典型框架[5]。其中,主播端提供直播內(nèi)容并上傳到HTTP服務器,原始視頻被切割成相等時長的視頻切片,同一個視頻切片被編碼為不同的版本,每個版本對應一個視頻碼率。客戶端可向服務器請求合適的下一個視頻切片,以降低時延和卡頓,從而提高用戶體驗質(zhì)量。由內(nèi)容分發(fā)服務器將特定碼率的視頻切片文件發(fā)送到客戶端。
圖1 基于HAS的流媒體直播傳輸系統(tǒng)框架[5]
系統(tǒng)模型由視頻傳輸模型、緩沖區(qū)模型、時延控制模型以及QoE模型組成。
a)視頻傳輸模型
主播端從t= 0 時刻開始采集并上傳視頻內(nèi)容到服務器,服務器對視頻進行編碼和切片處理。在基于HTTP 的動態(tài)自適應流標準(Dynamic Adaptive Streaming over HTTP, DASH)的視頻流媒體架構下,視頻切片的時長通常為2-10 秒,而面向直播場景時,通常使用時長更短的視頻切片。在本文中,視頻切片的時長用L秒進行表示。
假設直播過程中視頻內(nèi)容共分為N個視頻切片。在服務器端,每個視頻切片都有K個不同碼率和分辨率的版本,并且其大小滿足V1<V2<…<VK。K個碼率等級對應的碼率大小用{ }R1,R2,…,RK
表示。用戶在觀看直播時,按照上傳順序從服務器端下載視頻切片。由于視頻內(nèi)容是以視頻切片為單位,用戶在下載每個視頻切片時都可以從K個版本中進行選擇。
相比于視頻點播,直播的主要特點在于其視頻內(nèi)容是實時生成的。為聚焦問題,本文在建立視頻傳輸模型中,不考慮實時視頻封裝以及視頻編碼解碼過程的耗時。第n個視頻切片于t=nL時刻開始生成,由于客戶端無法向服務器請求還未生成的視頻內(nèi)容,所以客戶端開始下載和播放第n個視頻切片時刻tn需滿足以下約束條件:
令τn代表下載第n個視頻切片所用的時間,可以表示為:
其中,Sn(Rn)表示第n個視頻切片對應碼率為Rn的視頻大小,Cn表示下載過程中網(wǎng)絡平均吞吐量。當?shù)趎個視頻切片于時刻完成下載,而第n+ 1個視頻切片還未完全生成時,即<(n+ 1)L情況下,用戶無法從服務器端獲取視頻數(shù)據(jù),需要等待Δtn方可進行下一個視頻切片的下載;≥(n+ 1)L時,第n+ 1個視頻切片需從t=tn+τn時刻開始下載。Δtn可以表示為:
b)緩沖區(qū)模型
緩沖區(qū)位于客戶端,其狀態(tài)示意圖如圖2所示,視頻切片從服務器端下載后會先存儲到客戶端的緩沖區(qū)中,用戶播放視頻時從緩沖區(qū)取出視頻內(nèi)容進行觀看。
圖2 緩沖區(qū)狀態(tài)示意圖
緩沖區(qū)占用大小由視頻填充速率和播放速率共同決定。設B(t)表示t時刻緩沖區(qū)的占用大小,以視頻切片為單位,當下載完成一個視頻切片并開始下載下一個切片時,緩沖區(qū)大小增加一個視頻切片的時長,并且減去下載視頻切片過程以及等待時間中客戶端播放的視頻時長。緩沖區(qū)占用量不能小于0,開始下載第n+ 1個視頻切片tn+1時緩沖區(qū)占用量用Bn+1可以表示為:
其中,λn代表著第n個視頻的播放速度。在直播場景下,為避免卡頓以及降低時延,引入播放速度控制機制。播放速度會根據(jù)需求改變,播放速度的選擇會在下一節(jié)時延控制模型中進行說明。
在下載過程t∈(nL,nL+τn]中,可以對緩沖區(qū)占用量進行求導得到視頻填充速率。在下載第n個視頻切片過程中,求導過程可以表述為:
其中,Cn代表下載第n個視頻切片過程中的平均吞吐量,Rn代表第n個視頻切片對應的碼率。
c)時延控制模型
本文所考慮的端到端的時延由兩部分構成,一部分為直播用戶緩沖區(qū)中已經(jīng)緩沖的視頻時長,一部分為存儲到服務器端但尚未下載的部分。
時延控制機制由兩部分構成:調(diào)整視頻播放速度以及跳幀機制。調(diào)整視頻播放速度通過加快或減緩客戶端播放視頻的速度,達到降低時延及減少卡頓的目的。通過調(diào)整播放速度降低時延的能力有限,當時延比較大時,執(zhí)行跳幀操作,即超過時延閾值時,客戶端跳過當前正在進行的下載,直接請求下載下一個關鍵幀,從而降低時延。
首先,對視頻播放速度進行調(diào)整。最基本的方法是通過比較實際緩沖區(qū)的占用情況和預設的緩沖區(qū)閾值來控制播放速度。 假設閾值為(Bmin,Btarget,Bmax),其中Btarget代表目標緩沖區(qū)水平,Bmin和Bmax分別代表緩沖區(qū)閾值的上限和下限。緩沖區(qū)閾值需要滿足Bmin<Btarget<Bmax。緩沖區(qū)占用量大于Bmax,加快視頻播放速度,播放速度為正常播放速度的rfast倍;緩沖區(qū)占用量小于Bmin,減緩視頻播放速度,播放速度為正常播放速度的rslow倍;其他情況則選擇正常的播放速度。
綜上所述,第n個視頻切片的播放速度λn可以表示為:
其次,對跳幀的閾值進行選擇。對于第n個視頻切片執(zhí)行跳幀的時延閾值表示為ln,即當Ln>ln時,客戶端向服務器請求新的關鍵幀,跳過的幀數(shù)表示為Sn。通常情況下將ln設置為常數(shù),即每一個視頻切片觸發(fā)跳幀的時延閾值都相同。
d)QoE模型
碼率自適應算法以提高QoE 為目標[6],為了明確視頻流媒體直播QoE 與其影響因素之間的定量關系,需要對QoE 進行客觀評價??梢詫oE 映射為數(shù)值,為之后設計碼率自適應算法并且進行性能優(yōu)化和比較建立基礎。在評價視頻點播業(yè)務的性能時,文獻[7]提出將各個QoE 指標進行加權平均,得到的數(shù)值作為QoE 估計值。面向直播場景時,QoE 不僅需要考慮視頻質(zhì)量、碼率切換頻次、卡頓時長等影響因素以外,還需計算端到端的時延以及跳幀時長對QoE 數(shù)值的影響。因此,本文建立如下直播QoE 模型:
其中,N代表該直播視頻總共由N個視頻切片組成,QoEtotal表示N個視頻切片的QoE 數(shù)值的總和,Rn表示第n個視頻切片的碼率大??;f(Rn)為計算視頻質(zhì)量的函數(shù),通常可以計算視頻切片中每幀的視頻質(zhì)量并進行求和,表示為:f(Rn)=RnτframeFn。其中,τframe表示每幀的時長,由視頻畫面每秒傳輸?shù)膸瑪?shù)決定,F(xiàn)n代表第n個視頻切片所包含的幀數(shù),f(Rn)隨著碼率增加而增大;Tn表示由于緩沖區(qū)耗盡而造成的卡頓時長;Ln代表端到端的時延;Sn表示跳幀的時長;|Rn+1-Rn|代表碼率切換的幅度;θq、θr、θd、θs、θa分別代表各個指標的權重指數(shù),由于不同的用戶對于視頻觀看有著不同的偏好,可以根據(jù)不同的用戶需求以及應用場景設置不同的參數(shù)。
該模型不僅體現(xiàn)了服務質(zhì)量,還體現(xiàn)用戶對于不同影響因素的偏好,可用于評價視頻流媒體直播的QoE。
本文的設計目標為最大化用戶在直播會話過程中的QoE,同時盡量減少卡頓以及端到端的時延。
PID 控制即比例(Proportional)、積分(Integral)、微分(Derivative)控制,是一種常見的閉環(huán)控制算法,由于其結構簡單、魯棒性強,常用于工業(yè)控制中。PID控制結構示意圖如圖3所示。
圖3 PID控制結構示意圖
PID 控制器利用實際輸出值c(t)作為反饋信號,將根據(jù)所給定的目標值r(t)以及c(t)所構成偏差值e(t)=r(t)-c(t),將偏差值進行比例、積分、微分運算,并將計算結果通過線性組合構成控制量u(t)對受控對象進行控制。u(t)可以表示為:
其中,u(t) 表示PID 控制器的輸出值,其中Kp、Ki、Kd分別為比例、積分、微分系數(shù)。
PID控制的各部分作用如下:
(1)比例部分:比例部分直接通過偏差值對被控對象進行控制;
(2)積分部分:單純使用比例部分進行控制時,由于存在靜態(tài)誤差,通過積分對過去偏差值的累積即可消除靜態(tài)誤差;
(3)微分部分:微分控制的主要作用是減少超調(diào)量,避免因為實際輸出值變化過快而超過目標值,從而增加系統(tǒng)的穩(wěn)定性。
在觀看視頻直播的過程中,當緩沖區(qū)占用量過大時,說明當前所選擇的視頻切片碼率較小,支持選擇更高碼率的版本,且端到端的時延也會增加;而當緩沖區(qū)占用量較小時,說明當前所選擇的視頻切片碼率較大,緩沖區(qū)即將耗盡,面臨卡頓的風險。因此,可通過緩沖區(qū)占用情況作為反饋信號,選擇合適的目標緩沖區(qū)閾值作為目標給定值,結合PID控制器,并且利用預估網(wǎng)絡吞吐量一起對視頻切片的碼率進行選擇。
基于PID 控制的碼率自適應算法原理框圖如圖4所示,該算法由以下幾部分組成:
圖4 基于PID的碼率自適應算法的結構框圖
(1)目標緩沖區(qū)選擇
根據(jù)2.2節(jié)中提到的時延控制模型,提供兩種目標緩沖區(qū)水平供以選擇,決策集合為t arg et_buffern={0 ,1} ,所對應的目標緩沖區(qū)水平分別為當t arg et_buffern=0時,偏向于減小時延,但有卡頓風險;t arg et_buffern=1時,偏向于避免卡頓,同時會增加一定時延。因此,需要在卡頓和時延之間進行權衡,選擇合適的目標緩沖區(qū)水平從而提高整體用戶體驗質(zhì)量。目標緩沖區(qū)的選擇使用文獻[4]提出的目標緩沖區(qū)選擇方法,第n個視頻切片的目標緩沖區(qū)水平可利用以下公式進行決策:
(2)PID控制器
PID控制器的輸入分別為:目標緩沖區(qū)Btarget以及現(xiàn)有緩沖區(qū)占用大小B(t),則偏差值e(t)可以表示為:
根據(jù)PID控制模型,PID控制器的輸出量u(t)如下:
由于在實際情況中,視頻播放過程或以視頻幀為單位或以視頻切片為單位進行播放,e(t)實際上是離散變量。本文中以視頻切片為單位,并且考慮過去五個視頻切片的偏差值,將u(t)離散化表示為:
其中,e(n)代表第n個視頻切片開始下載時刻的偏差值表示第n個視頻切片的目標緩沖區(qū)水平,Bn代表第n個視頻切片開始下載時刻的緩沖區(qū)占用量。
(3)吞吐量預測
利用平均值法即通過計算前5個視頻切片的平均網(wǎng)絡吞吐量對未來網(wǎng)絡吞吐量進行預測。預測的第n個視頻切片的平均網(wǎng)絡吞吐量可表示為:
(4)碼率選擇
碼率選擇是PID模型中的控制進程部分。引入PID控制器的目標是為了通過控制碼率的選擇使緩沖區(qū)的占用水平接近目標緩沖區(qū),避免因緩沖區(qū)過大或過小造成的QoE下降。開始下載第n個視頻切片時,對視頻切片n的碼率進行決策,目的是使Bn+1=Btarget,此時緩沖區(qū)的占用量為Bn。
在t=nL時刻,偏差值為e(n)=Btarget-Bn。在本文中,PID控制器的輸出值表示為u(n)。下載時間過長會導致下載時間內(nèi)緩沖區(qū)耗盡,引起卡頓。為便于分析,令τn=L,根據(jù)第2節(jié)緩沖區(qū)模型中公式(5)對緩沖區(qū)占用量進行求導,可以表示為:
第n個視頻切片的碼率選擇不超過Rtarget的最大碼率,表示為:
同時,需要考慮到跳幀機制對用戶體驗的影響。一方面,跳幀可以減少端到端時延,對QoE產(chǎn)生積極影響;另一方面,跳幀會導致用戶跳過部分畫面,視頻觀看的連續(xù)性下降,對QoE產(chǎn)生消極影響。為提高QoE,本文采用文獻[4]所提方法,自適應性調(diào)整觸發(fā)跳幀的延遲閾值。具體的,在客戶端下載第n個視頻切片時,如果端到端的時延高于ln,則觸發(fā)跳幀且跳幀數(shù)量為Sn。用QoEsp和QoEsn分別表示QoE的積極和消極影響,并采用如下模型:
其中,ηln用于估計不觸發(fā)跳幀情況時的平均時延,τframe表示視頻幀的時長,當QoEsp>QoEsn觸發(fā)跳幀。ln可以設置為:
碼率自適應過程的算法如表1所示:
表1 碼率自適應算法
本文采用的仿真環(huán)境源于2019年ACM Multimedia的為提高用戶體驗質(zhì)量而進行的流媒體直播競賽的仿真環(huán)境[8]。在仿真過程中,選擇不同直播場景以及網(wǎng)絡環(huán)境的數(shù)據(jù)集,其中每種網(wǎng)絡都有20個數(shù)據(jù)文件,對應20種網(wǎng)絡條件。根據(jù)公式(8)計算用戶QoE,平均后最后得到該網(wǎng)絡下用戶的平均QoE。
為了驗證所提算法的性能,將所提算法與HYSA[4]、HCA[1]進行性能對比。
HYSA算法引入播放速度控制機制,選擇合適的目標緩沖區(qū),控制視頻播放速度;估計跳幀的影響,調(diào)整跳幀閾值;估計下一個視頻切片的時延,選擇使時延最小的碼率。
HCA算法同時采用前饋和反饋機制,通過混合控制使碼率決策更精確。其中,前饋是指利用預測的網(wǎng)絡吞吐量來優(yōu)化QoE,以適應網(wǎng)絡變化,同時利用緩沖區(qū)占用情況作為反饋信號。HCA 算法通過前饋控制對網(wǎng)絡吞吐量變化做出快速反應,同時借助反饋機制抵抗錯誤預測的影響。
圖5 所示為三種算法的平均QoE 的CDF 曲線圖,從圖中可以看出所提算法相比于HYSA、HCA 能達到更高的QoE,總體性能比較好。
圖5 三種算法的平均QoE的CDF曲線
圖6 展示了三種算法在不同場景下的平均QoE。通過游戲直播、體育直播以及室內(nèi)直播三種直播場景的視頻序列進行比較,所提算法的平均QoE在三種場景下都達到最高。
圖6 不同直播場景下三種算法的平均QoE
圖7展示了三種算法在四種不同網(wǎng)絡環(huán)境的平均QoE,通過比較可以看出所提算法在四種網(wǎng)絡環(huán)境(復雜、強網(wǎng)、中網(wǎng)、弱網(wǎng))下,與HYSA、HCA 算法比較,所提算法的平均QoE均達到最高。
圖7 不同網(wǎng)絡環(huán)境下三種算法的平均QoE
為驗證算法在QoE細分指標方面的表現(xiàn),選擇視頻質(zhì)量、卡頓時長以及平均時延3個指標進行仿真和分析。
表2展示了三種算法在以上三個方面的表現(xiàn)。其中視頻質(zhì)量用平均碼率表示。總體QoE比HCA算法提高13.1%,比HYSA算法提高6.5%。從細分指標上看,在視頻質(zhì)量方面,所提算法的平均碼率最高,視頻質(zhì)量最高,比HYSA算法提高5%??D方面,HYSA、HCA算法偏向于選擇較小的碼率,所提算法卡頓時長有所增加。在端到端的時延方面,三種算法的時延都比較低,體現(xiàn)針對直播場景實時性要求而設計的特點,所提算法三種算法平均時延最小。從各項指標可以看出,每種算法都有其優(yōu)勢所在,若想達到平均QoE最佳,需要算法在進行碼率決策時對QoE的影響因素進行均衡,以HYSA為例,在碼率決策時關注的重心在于降低時延,視頻質(zhì)量較低,而所提算法兼顧了視頻質(zhì)量與平均時延,總體的QoE比以上兩種算法更高。
表2 不同算法各項指標比較
本文以提高用戶體驗質(zhì)量為目標,引入PID 控制模型,通過權衡直播場景下影響用戶體驗質(zhì)量的關鍵指標,選擇合適的切片碼率從而提高用戶體驗質(zhì)量。仿真結果表明,所提算法與基線算法相比,整體性能更好,能夠有效提高用戶的體驗質(zhì)量。