錢洋,龔秋石
〔東南大學網絡空間安全學院,江蘇南京 211189;網絡空間國際治理研究基地(東南大學),江蘇南京211189〕
視頻點播服務(Video on Demand,VoD)是現在網絡流量中的主流,據預測,在2022年網絡中視頻流量將占據總流量80%以上[1]。然而,面對當前如此復雜多變的網絡環境,傳統的視頻傳輸技術難以適應網絡帶寬的抖動,不能充分利用信道的容量,很難保證視頻流的服務質量,這使得用戶體驗質量大大降低。如何在動態網絡環境中實現視頻流的自適應傳輸是當前的研究熱點。動態地調整服務端發送的視頻碼率目前有兩種實現技術。(1)自適應碼率(Adaptive Bitrate,ABR)技術。在服務器端采用非可伸縮性編碼視頻,并存儲多個碼率版本,在用戶帶寬變化的時候傳輸不同碼率的視頻流。(2)可伸縮性視頻編碼(Scalable Video Coding,SVC)技術[2]。可伸縮性編碼視頻僅需要在服務器端存儲一個最高碼率的版本,無需占用額外的存儲空間,同時可伸縮性視頻編碼技術可以通過調整輸出的層次來傳輸不同碼率的視頻流。目前,諸如YouTube等VoD服務商,主要采用自適應碼率ABR方案。ABR技術一方面,同一個視頻需要在服務器端保存多個不同碼率的版本,占用較多的存儲空間。另一方面,ABR技術在服務器端存儲的碼率有限,未必可以完全利用帶寬。與ABR技術相比,SVC技術不存在這幾個方面的缺陷,通過切換輸出層數,SVC視頻流能夠有效地適應網絡動態變化的視頻播放。但是,目前還沒有一種完美的層次自適應選擇策略來最大限度發揮SVC的優勢。
針對動態網絡環境并且考慮到ABR技術的上述缺陷,本文設計了一個采用SVC的視頻傳輸系統,并從用戶體驗質量(Quality of Experience,QoE)的角度出發,利用馬爾可夫決策過程(Markov Decision Process,MDP)理論,設計了一個SVC視頻層次自適應選擇算法,使得系統可以動態地調節SVC視頻的傳輸層次,以提高用戶的體驗質量。
關于SVC技術的研究工作有很多,文獻[3~9]研究了在不同場景中采用SVC技術,并指出相對于H.264/AVC等非可伸縮性編碼,SVC技術可以明顯提升帶寬利用率。文獻[10]提到一種帶寬預測方法,主要依靠每次請求視頻分片所花費的時間來計算當前帶寬。這種算法對帶寬變化比較敏感,一旦帶寬在較短時間內發生變化,就會引起視頻層次的大幅度切換。文獻[11]提出一種應用于SDN網絡的SVC視頻自適應傳輸算法,利用控制器獲取所有交換機的流量信息,并且采用自回歸模型預測未來一段時間內帶寬變化以此來選擇傳輸的視頻層數。以上這些基于測量帶寬的算法都是通過帶寬的歷史測量值來對未來的帶寬進行預測,其預測的信息都不是實時的,甚至還需要引入額外流量。其實,選擇不同層次的目的就是為了控制播放緩存,防止產生溢出,直接根據緩存信息做出調節是一種更優的選擇。文獻[12]提出了一個基于客戶端緩存的SVC視頻層次切換策略,每次決策前該策略通過估計當前緩存的下溢概率來確定本次請求的層次。文獻[13]同樣從客戶端緩存的角度設計層次自適應策略,在最大限度地提高接收質量的同時最小化或防止緩沖區不足。但是,這兩種算法的向上切換策略都過于保守,導致視頻的平均質量不高。
絕大多數自適應機制是確定性的根據感知到的服務器、客戶端或者網絡情況而進行調整,這種機制具有局限性并不適合復雜多變的真實網絡環境。目前已經有研究將強化學習方法應用到SVC視頻層次自適應選擇領域。文獻[14]對在SDN網絡中SVC視頻流的層次和傳輸路由進行聯合決策,構造一個馬爾可夫決策過程模型,然后利用神經元動態規劃(Neuro-Dynamic Programming,NDP)方法構造近似值函數獲得近似最優解。但是,算法在設計回報函數時沒有充分考慮QoE因素。文獻[15]針對DASH系統,考慮了一些影響視頻質量的關鍵因素,提出了一種基于MDP的自適應策略。文獻[16]針對HAS系統,提出了一種基于Q-learning的客戶端自適應策略,通過感知網絡環境動態地調整請求碼率。以上兩種算法都是針對ABR應用場景。
基于SVC的視頻點播系統架構如圖1所示,該系統由流媒體服務器和視頻客戶端組成,二者通過HTTP協議完成通信。
流媒體服務器端設計如圖2所示,由SVC編碼模塊、層數計算模塊、碼流提取模塊和發送模塊組成。其中,SVC編碼模塊首先將服務器存儲的視頻從時間序列上拆分為n個視頻分片,然后將每個分片每16幀封裝為一個圖片組(Group-of-pictures, GOP),并逐GOP進行編碼,產生含有m個層次的最高碼率版本視頻,每個編碼后的分片含有的層次為。層數計算模塊負責根據客戶端的請求信息計算本次請求的層次。碼流提取模塊負責根據層數計算模塊得到的本次請求的層次提取相應版本的分片碼流。發送模塊負責將分片封裝發送。

圖1 系統架構

圖2 服務端架構
客戶端設計如圖3所示,由請求/接收模塊、解碼模塊、緩存模塊和播放模塊組成。其中,請求/接收模塊負責完成HTTP的請求和響應工作。解碼模塊使用SVC解碼工具將分片解碼為YUV序列,然后放入緩存中。除此之外,緩存模塊還需要在每次請求時提供當前的緩存信息幫助服務器端進行決策,由于SVC視頻的特性,所以無法使用傳統的“字節”作為緩存的單位,而是使用“秒”來衡量緩存狀態。每次請求時將當前緩存狀態傳遞給服務器。當緩存中的YUV序列達到一定數量后,播放模塊負責按時間順序播放YUV序列。

圖3 客戶端架構
關于QoE的評價,本文主要考慮視頻質量和緩存溢出風險來設計QoE函數。視頻質量方面,采用峰值信噪比(Peak Signal-to-Noise Ratio,PSNR)作為測度。客戶端接收的層次越高,其解碼得到的視頻質量越高, PSNR值相應越高,其定義如公式(1)所示。

緩存方面考慮緩存的上溢和下溢風險,緩存下溢會導致播放暫停,緩存上溢往往意味著沒有選擇最優的層次,其定義如公式(2)所示,將緩存的數據量映射到大小不等的值。


SVC視頻的特性使得播放過程中可以通過選擇不同的層次達到自適應播放的目的。服務器每次響應請求前都需要決定本次發送的視頻層次,不同層次的視頻帶給用戶端不同的體驗質量。本文將SVC視頻層次自適應選擇問題建模成一個有限狀態的離散馬爾科夫決策過程。一個馬爾可夫決策過程由五元組M=(S,A,P,R,γ)描述,其中,S為有限的狀態集,A為有限的動作集,P為狀態轉移概率,R為回報函數,γ為折扣因子,用來計算累積回報。MDP進行組織的方式為:智能體對初始環境進行感知,按策略實施動作,環境受動作影響進入新的狀態,并反饋給智能體一個獎勵,隨后智能體基于做出新的決策,與環境持續交互。下面依次對SVC視頻服務的MDP的五元組進行構造。
在做出每個決策時,系統都處在一個特定狀態。在本模型中,系統狀態由前次選擇的層次和當前緩存的大小這兩個維度進行定義。層次一共有15種,緩沖區最多存儲30秒視頻,所以狀態空間元素一共465個。
動作是對系統行為的描述,是系統決策的結果。因此本模型中,動作空間就是可選的層次空間,SVC編碼工具一共產生15個層次,動作空間A={a0,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14}。回報函數直接由QoE得到:

表1 狀態空間定義




因為在每個狀態下做出的層次選擇動作都是基于策略Π的,因此找到一個最優策略使得期望總回報最大,這個策略就是SVC視頻層次選擇問題的最優解。所以,該優化問題可以表述成公式(9),對于最優解,任意策略Π都滿足:


將Q-learning算法運用到本文提出的模型當中,得到基于MDP的層次自適應選擇算法。
算法1 基于MDP的層次自適應選擇算法
5:while 所有視頻分片沒有傳輸完成do
9: else
11: end if
13: 提取層數 的碼流,封裝發送
16: end while
本文自行開發的SVC服務器端部署在Ubuntu18.04平臺上,開發的SVC客戶端運行在本地計算機上,實驗環境如圖4所示,服務器和客戶端在同一局域網中,網絡帶寬和流量控制模塊主要使用Linux下的Traffic Control(TC)和Wondershaper工具來實現,這兩個工具部署在服務器端,可以用來在性能良好的局域網中,通過限制網絡接口的傳入和傳出流量模擬出復雜的互聯網傳輸環境,諸如低帶寬、傳輸延遲、丟包等實際情況。實驗采用SFT算法[10]和EBALS算法[12]作為對比。

圖4 實驗環境
首先固定網絡中的丟包率,并觀察用戶端接收到的視頻質量。實驗視頻一共180個分片,每個分片的視頻時長是1s。在丟包率限定為10%的網絡環境下,三種算法的運行情況如圖5所示其中橫軸為請求的分片序號,縱軸為每次決策的層次。

圖5 丟包率10%下三種算法表現情況
從圖5中可以看出本文提出的算法能夠快速收斂到最優的層次,而EBALS算法因為保守的逐級上調機制而收斂較慢,另外SFT算法因為是基于分片的下載速度來測量帶寬,即使網絡抖動不強時,選擇的層次也不夠穩定,這就導致了請求第70和150個分片時層次急劇下降。按照公式(3)計算本次傳輸的平均QoE,取,分別為0.7和0.3,取,分別為0.8和0.5。得到的結果如表2所示,本文提出的算法表現明顯好于另外兩種算法,帶給用戶更好的體驗質量。

表2 三種算法QoE表現情況
實驗二觀察用戶端接收到的視頻質量及緩存狀態。視頻一共200個分片,每個分片的視頻時長是1s,經編碼后產生15個層次。實驗過程中,帶寬在500kbps到1500kbps之間波動。三種算法的表現情況如圖6所示,圖6(a)顯示不同帶寬下選擇的平均層數,而圖6(b)顯示不同帶寬下對應的平均緩存量。圖中可以看出本文提出的算法在不同帶寬下平均每次選擇的層次都要優于另外兩種算法。因為SFT是基于帶寬的算法,具備一定的帶寬跟隨性,但同時較低帶寬時層次大幅減小;而EBALS算法因為其保守的上調機制導致其所選的層數集中在較低的層次。從緩存量上也反映了上述缺陷,SFT和EBALS算法很明顯都沒有充分發揮緩存的潛力,也就導致了它們始終處在較高的緩存占有量上。本文提出的算法在緩存方面表現的更均衡,始終處于一個中間狀態。利用公式(3)來計算QoE,取,分別為0.7和0.3,取,分別為0.8和0.5。得到如圖6(c)所示的QoE表現情況。可以看出本文提出的算法在不同帶寬下的QoE表現都好于另兩種算法,整個實驗過程中本文提出的算法的平均QoE值明顯高于另外兩種算法,給用戶帶來的體驗更好。
本文從提升用戶體驗質量的角度出發,提出了一種基于馬爾可夫決策過程的可伸縮SVC視頻層次自適應選擇算法。將馬爾可夫決策過程應用于SVC視頻層次選擇問題中,通過每次反饋的QoE量化值來進行分析決策。通過仿真實驗,分別比較了在有丟包與帶寬波動的網絡環境下,算法能夠保證較高的視頻質量和均衡的緩存,從而得到更好的QoE。今后的研究工作將側重于對層次切換的幅度和次數進行優化,在抖動強烈的網絡中避免頻繁切換。

圖6 (a) 帶寬波動下層次選擇情況

圖6 (b) 帶寬波動下緩存表現情況

圖6 (c)帶寬波動下QoE表現情況