SVC和視頻通信

作者 / Alex Eleftheriadis, Ph.D., Chief Scientist of Vidyo

翻譯 / 小極狗

可以說,可伸縮視頻編碼技術(SVC)在視頻會議行業和視頻通信中有著重要的影響。在2008年,當Vidyo公司首次推出SVC時,很少人意識到它背後所蘊含的變革力量。大多數人都認為它僅僅只是一個更好的編解碼器,甚至還有可能存在一些有待完善的錯誤。

與任何新技術一樣,剛開始時,我們都很難完全理解SVC的工作原理,相關係統及功能的實現機制,甚至是它對整個行業的影響。本文旨在提供一些有關SVC的事實和使用感受,介紹如何基於SVC實現各種功能,同時分析一下目前可伸縮視頻編碼在視頻通信領域的定位以及未來的前景所在。

什麼是SVC?

首先,什麼是SVC? 它是H.264 / MPEG-4 Part 10高級視頻編碼標準的擴展,通常稱為AVC。AVC是由國際電信聯盟(ITU)的視頻編碼專家組(VCEG)和國際標準化組織(ISO)的運動圖像專家組(MPEG)共同開發的,合稱聯合視頻組(JVT)。因此,AVC有兩個正式名稱:國際電信聯盟(ITU)命名的H.264和國際標準化組織(ISO)命名的MPEG-4 Part 10。通常,通信領域的人傾向於將AVC稱為H.264,而廣播影音娛樂領域的人則傾向於將其稱為AVC或MPEG-4。毫無疑問AVC一直是非常成功,它幾乎適用於所有現代數字視頻應用標準:從視頻會議和YouTube,到藍光DVD和iTunes商店。

SVC是AVC標準的附錄G。有人卻用AVC這個詞來表示H.264標準和附錄G,這令人費解。在本文中,我們使用AVC來描述H.264的不可伸縮部分,而用SVC來描述可伸縮部分,當不加區分時則使用H.264進行描述。

當Vidyo公司加入JVT時(2005年夏季),它是唯一對可伸縮視頻編碼感興趣的視頻會議公司。事實上,SVC的成果要得益於當時對廣播和移動應用感興趣的公司以及學者不留餘力的推動。Vidyo公司的工程師們非常積極地參與到聯合組的開發中,提供了約18項技術貢獻,創建並提供測試視頻材料,構建了大部分合適的比特流,以及共同編輯了一致性規範,這些都確保了我們的設計符合視頻會議行業的需求。

H.264規範提供了一種方法,允許根據特定的應用領域搭配不同的使用規範,事實上,絕大多數視頻編碼標準都會有基本的使用規範,並且提供可修改的方法,我們稱之為配置文件。配置文件可以說是標準規範所提供的編碼工具的子集,主要適用於特定的應用領域。例如,增加端到端延遲的功能對於廣播視頻而言是可接受的,但對於視頻會議而言則是不可接受的,因此在面向視頻會議的配置文件中則不包括這個功能。H.264的可伸縮特性體現在其配置文件的參數設置中:Scalable Baseline、Scalable High、Scalable Constrained Baseline、Scalable Constrained High和Scalable High Intra。儘管,在高清解析度運行的軟體配置文件中一般包含Scalable High參數,但是針對視頻會議(移動設備)應用的配置文件,一般只包含Scalable Baseline和Scalable Constrained Baseline這兩個參數。

與配置文件相關的是一個名為層級的概念。層級定義了特定配置文件中各種操作參數的限制。例如,它定義了特定解碼器所能夠處理的最大圖片的大小。配置文件和級別是一個相當古老的概念:您的普通舊式DVD播放器中,播放MPEG-2格式的視頻的主要配置文件是在主級解碼器上。您的藍光播放器所包含的H.264 AVC的高配置解碼器則是在4.1級。

AVC和SVC有什麼區別?

SVC和AVC的根本區別在於,前者將視頻信號編碼為一組圖層。各層互相依賴,形成一個層次結構。特定層及其所依賴的層提供了以特定的保真度解碼視頻信號時所必需的信息。這裡的保真度涉及一個或多個空間解析度,時間解析度或信噪比(SNR)1。不依賴於任何其他層的最底層被稱為基本層,並提供最低質量等級的圖像。每個附加層可以通過三個維度(空間,時間或SNR)中任何一個維度提高信號質量。

圖1表示以不可縮放的方式進行視頻編碼。這就是大多數(如果不是全部的話)AVC兼容視頻編碼器的工作原理。圖中每個正方形表示一張圖片,而底部的數字表示時間實例。第一張圖片為「I」幀,可獨立編碼,無需參考其他任何圖片(「I」取自單詞「intra」的首字母)。其他所有的圖片為「P」幀,需要參考前面的幀畫面進行預測然後編碼。箭頭表示預測的源圖片以及目標圖片。通過觀察可知,只需一層,則可形成一個無止境的圖片鏈。

圖1:非縮放性視頻編碼

1 SNR(信噪比)是壓縮視頻信號相對於其未壓縮版本的失真度量。在信噪比的可伸縮性中,增強層所提供的額外信息既不改變空間解析度,也不改變時間解析度。它減少了壓縮視頻的信號失真,同時增加了信噪比。

圖2表示在時間維度上的可伸縮性視頻編碼。觀察預測箭頭的組織方式,在這個例子中,定義了三個不同的層(L0到L2)。圖中的圖片是垂直偏移的,以便在視覺上分離三層。每一層都需要依賴較低層才能被解碼,但不需要任何較高層。這允許從頂層開始移除圖片,而不影響剩餘圖片的可解碼性。例如,我們假設圖例中顯示的圖層以30 fps的幀速率顯示。如果我們移除所有L2層的圖片,剩下層(L0和L1)仍然可以成功解碼,並且產生一個15fps的視頻。如果我們進一步刪除所有的L1圖像,那麼剩下的L0層依然可以被解碼併產生一個7.5fps的視頻。

圖2:時間可伸縮性

如圖3所示,我們可以通過擴展時間可伸縮性結構同時實現空間可伸縮性編碼。每個圖片現在有兩部分:基礎層解析度圖片的B部分和空間增強層的S部分,這兩個部分結合則可生成全解析度圖像。空間增強層一般為水平和垂直方向上基底解析度的1.5倍或者2倍。這為不同解析度的視頻在進行空間可縮放性編碼時提供了便利,例如VGA和QVGA(比率為2)以及1080p和720p(比率為1.5),都可以進行空間可伸縮性編碼。空間可伸縮性可以與時間可伸縮性(和SNR)以完全獨立的方式相結合。假設在圖示例子的全速率和解析度分別為30fps下的HD高清解析度(720p),那麼我們可以在解析度(HD、1/4HD)和幀速率(30fps、15fps、7.5 fps)之間進行任意組合。

圖3:空間和時間的可伸縮性

值得注意的是,這不是唯一的可伸縮性結構——在構建空間和時間預測結構方面,該標準具有較大的靈活性。

SVC的一個非常重要的方面是基本層符合AVC的設計。換句話說,SVC信號的基本層可通過AVC解碼器進行解碼。這確保SVC信號與AVC向後兼容,儘管在涉及到一個以上的層時,其保真度會低於全信號。但注意,SVC編碼器不需要一直生成分層比特流 - 如果在不需要和不必要進行可伸縮性編碼的環境下運行時,則可以生成傳統的AVC流。

為什麼使用SVC?

SVC提供了一種適應性較強的視頻信號表示方式。換句話說,無需對信號進行解碼、處理和重新編碼,也可以實現自適應。如果我們想要改變圖像解析度或時間幀速率,那麼我們唯一需要做的就是從圖1中的圖表中移除適當的塊。如果將這些塊視為通過網路傳輸的數據包,這就相當於從傳輸的比特流中移除相應的網路數據包。這一點意義非常重大:它為基於多點控制單元(MCU)的傳統視頻會議系統架構提供了新的設計思路。

MCU是一個複雜的設備,它接收多個視頻編碼信號,解碼後合成到一個新的圖像上,重新編碼後,再將編碼信號發送給預定接收者。顯然,從計算的角度來看,這是一個非常複雜的操作。此外,在系統運行中還引起了相當大的延遲,通常為150-200毫秒。為了更好的比較,我們給出一個數據:國際電聯規定長途電話的端到端延遲的上限為180毫秒。超過180毫秒後,延遲會令正在通信的各方用戶產生較差的體驗感受。顯然,與MCU進行互動式多點通信是非常困難的。由於採用了級聯編碼,會導致了質量的損失。值得注意的是,這些問題是架構中固有的,無論投入多少資源都不會消失。例如,提高MCU內部DSP處理器的速度也只能稍微減少延遲。

AVC不如SVC有效嗎?

SVC的高效有一定的代價。如果SVC和AVC編碼器產生的相似質量的比特流,那麼SVC將比AVC需要大約10-15%的比特位(這取決於編碼器的成熟性)。認識到這種「開銷」對我們來說非常重要。儘管有額外的開銷,但是我們將獲得端到端的低延遲和穩健的容錯性 - 僅AVC就無法實現這一點。事實上,如果我們考慮丟包造成的質量損失,我們很快會發現,因為AVC編碼的質量下降得很快,所以它的效率是遠低於SVC。額外的開銷帶來的回報是,我們的伺服器可以輕鬆擴展至100位用戶,以及所有高端視頻會議系統功能,如個性化布局和速率匹配。

只關注壓縮效率是一個非常狹隘的觀點,因為它忽略了完整系統中真正發生的情況。通過共同考慮壓縮效率和網路傳輸,人們可以設計解決方案平衡這兩個方面的消耗,解決系統級問題。

牢記SVC是AVC的擴展也很重要。這意味著,當條件允許時,換句話說,當網路具有極高的可靠性時,所有端點都具有類似於網路的訪問速度,同時所有端點都具有類似的編碼和解碼能力時,SVC系統就可以恢復使用普通AVC。然而,當考察企業的全體用戶時,我們很少能夠訪問這樣一個非常可靠的網路,而且實際上我們也從未有過相同的接入網路或端點。

就像普通汽車和四輪驅動汽車一樣,雖然四輪驅動汽車確實會燃燒更多的燃料,但是誰願意在結冰的面上冒險行駛普通汽車呢? 另外,您可以在不需要時關閉它。實際情況是,在全球互聯網中,數據包走的「道路」總是「結冰」和危險的。

可伸縮性和下一代的編解碼器

作為視頻編碼標準的SVC已於2007年11月完成定稿並出版。在上文中提到,Vidyo公司在標準化過程中非常活躍,並領導了視頻會議應用領域的工作。我們還共同開發了用於SVC的RFC 6190的RTP有效載荷格式。

由於SVC在實時應用方面的優越性,在H.264之後的所有編解碼器,將全面支持可伸縮性。H.265或高效視頻編碼(HEVC)在版本1(2013)中包含時間可伸縮性,在Vidyo公司提供的版本2(2014)中包含了空間可伸縮性。VP8和VP9格式在發布之初就具有時間可伸縮性,而通過Vidyo公司和Google之間的聯合開發,VP9實現了空間可伸縮性。Vidyo公司為所有這些編解碼器的RTP有效載荷格式的定義做出了貢獻。

由於大家對SVC有著極大的興趣,促進了行業組織進一步細化核心規範以確保能夠協同工作。國際多媒體電信聯盟(IMTC)已經發布了兩個規範,一個用於H.264而另一個用於H.265,詳細說明了適用於統一通信應用的可伸縮性編碼器的配置。同時,確保不同供應商產品能夠高效進行協同工作的認證程序仍在開發當中。該工作由Vidyo,Polycom和Avaya共同領導的可伸縮性和聯播視頻活動小組(SSV AG)負責。

可伸縮性、聯播和SFUs

對於單一視頻信號,同時提供多個不同表示的簡單方法就是產生多個編碼。與可伸縮編碼相反,這不需要任何新的編碼工具:您只需以不同的解析度來多次運行編碼器即可。這將產生多個獨立的比特流,並且比可伸縮編碼佔用更多比特位(通常比單個高解析度流高50%)。由於兩個流之間缺乏依賴關係導致了較差的健壯性。這種方案被稱為「聯播」(源自「同時廣播」),並且可以被認為是可伸縮性編碼的一個個別案例。

圖6:聯播架構

隱藏在聯播背後的是,您可以使用一個與VidyoRouter類似的伺服器而不是可伸縮編碼:終端將高解析度和低解析度的流一同傳輸到伺服器端,然後再由伺服器選擇將流傳輸到不同的接收端。聯播將其開銷放置在糟糕的節點上:從傳輸端點到伺服器的上行網路。這往往是最成問題的,例如,ADSL線路。聯播技術的一個優點是最高解析度比特流可以由傳統(非伸縮性)解碼器進行解碼。因此,對於那些部署了大量無法升級的硬體解碼器的公司來說,這更具有吸引力的。

在2008年VidyoRouter推出時,其操作原理非常新穎。事實上,和VidyoRouter同時發布的「RTP拓撲結構」RFC(RFC 5117)提供了一個可以用RTP實現的各種實時通信架構的調查,但沒有預見到它。2013年10月,我創造了「選擇性轉發單元」(SFU)來描述選擇性轉發伺服器的操作,不管它是否用於可伸縮視頻或聯播。在2015年11月發布的RFC 5117修訂版(RFC 7667)中,該術語已被採納,現在詳細描述其操作。

目前兩個用於實時視頻通信的最大公共部署系統,谷歌Hangouts和微軟的Skype和商業版Skype,都使用了可伸縮編碼與聯播。

可伸縮性、聯播和WebRTC

作為基於瀏覽器和移動終端的首選架構,在業內WebRTC已經獲得良好的發展勢頭。隨著用戶和供應商深入了解WebRTC,很顯然,SFU型伺服器體系結構已經成為高質量多點視頻的必選。事實上,由於WebRTC設計時確實是多流的,即端點接收多個視頻和音頻流而不是單個視頻流,這一點與SFU的設計完美匹配。因此,聯播已被納入WebRTC 1.0規範的範圍,而可伸縮性將成為WebRTC-NV(「下一個版本」)的一部分。在ORTC中已經支持可伸縮性,該API最初被併入微軟的Edge瀏覽器,現在已經被併入WebRTC 1.0的主要規範中。就編解碼器配置而言,現在WebRTC API本身幾乎不支持,但我們預計會有所改變,以後可能會允許使用SFUs。

為什麼SVC會成功?

任何新技術都必須在市場上競爭,贏得用戶的心。我認為,SVC和VidyoRouter / SFU獲得成功的原因有兩個。首先,它們首次將視頻會議系統的複雜性降低到與其他網路應用相同的水平。這對於將視頻會議能夠擴展成為個人應用程序非常重要。其次,即使在公共互聯網上運行時,用戶的體驗質量也達到了非常出色的水平 - 技術變得透明。今天的用戶將不會容忍任何事情。這兩項功能使視頻會議最終真正實現在任何時間、任何地點、任何設備上使用。事實上,如果舊的技術,也就是MCU足夠好的話,我們就不會看到視頻會議只是一個小眾應用。如今SVC的巧設計,高質量和易用性以及更豐富的部署選項(例如通過API和雲)使更多的應用程序能夠集成視頻,使得更多用戶能夠享受這種美妙的通信工具。

ZEGO Meetup活動預告

視頻直播一路走來,經歷了怎樣的變革?

在線抓娃娃、直播答題、小程序直播、AI等風口又會怎樣推動直播技術的發展?

活動正在火熱報名中,點擊鏈接:huodongxing.com/event/5 即可快速報名!

時間:2018年3月17日 13:00-17:30

地點:北京市海淀區海淀大街3號鼎好大廈A座3層太庫孵化器(中關村地鐵站E口出)

3月17日,即構科技主辦的ZEGO Meetup,將攜手直播行業的4位技術大咖,和大家一起暢談視頻直播的技術與未來。這裡有:

《視頻直播的這十年》

《連麥互動直播 X 微信小程序》

《秀色直播的技術實踐之路》

《AI賦能直播:反欺詐技術為直播平台保駕護航》

乾貨滿滿,就等你來!

關於即構科技

即構科技於2015年由QQ前總經理林友堯創立,A輪獲得IDG投資,核心團隊來自騰訊QQ,匯聚了來自YY和華為等廠商的頂尖語音視頻人才。即構ZEGO致力於提供全球最清晰最穩定的實時語音視頻雲服務,助力企業業務創新,改變用戶線上溝通方式。即構ZEGO深耕視頻直播、視頻社交、遊戲語音、線上抓娃娃和在線教育等領域,贏得了映客、花椒直播、一直播、喜馬拉雅FM、陌陌遊戲、自由之戰2、和好未來等頂級廠商託付和信賴。

推薦閱讀:

音視頻編解碼基礎
戳破謠言:關於無損檔與無損壓縮檔的區別

TAG:視頻編碼格式 | 音頻編碼格式 | 通信 |