隨著5G和AI的發展,內容表達視頻化成為了當今的主流,很多行業對視頻分發有非常旺盛的需求。我們非常榮幸地請到了華為云的資深視頻架構師黃挺,為大家介紹基于互聯網的實時音視頻服務所面臨的挑戰,分享華為云原生媒體網絡全方位保障實時音視頻服務體驗的實踐。
大家好,我是來自華為云的黃挺,目前負責華為云視頻架構設計的相關工作。今天我會給大家分享華為云原生媒體網絡是如何保障實時音視頻服務體驗的實踐。
我會從以上幾個部分進行分享,首先,解釋一下我們為什么需要一張媒體網絡;其次,會介紹一下華為云原生媒體網絡的整體架構設計,最后,會分享我們在如何改善實時音視頻體驗方面的實踐。
#01
為什么需要一張媒體網絡
1.1 內容表達視頻化,各個行業都有視頻分發的需求
為什么我們需要一張媒體網絡呢?我主要總結了三大原因。第一個原因,我們看到內容表達視頻化是目前一個很明顯的趨勢,有很多行業都對視頻分發有非常旺盛的需求。舉一個我親身經歷的小例子,在今年過年的時候,我的家人想把手上帶了多年的戒指取下來,因為戴的時間比較久了,手指變粗了不少,取不下來。
最開始我們第一反應是去商場找營業員幫忙取下來,后來我抱著試一試的心態,在抖音上搜索“取戒指”三個字。在搜索結果中找到了一個非常簡單的辦法,視頻時間不長,照著做很快就把戒指取下來了,而且對戒指沒有損害,手指也不痛。大家感興趣可以去搜索看看。
這其實就是知識內容表達視頻化的一個表現,這個趨勢在很多領域都已經出現了,除了短視頻,比如現在的電商直播,在線教育,云游戲等行業也都出現了內容表達視頻化發展趨勢。
1.2 新媒體表達形式出現,對音視頻技術要求越來越高
第二個原因,我們看到未來會出現很多新的媒體表達形式。比如VR和最近比較火熱的自由視角,這些新的表達形式的出現,都會給用戶帶來更加沉浸式的體驗。但它對音視頻技術的要求是全方位的提升,主要包括帶寬、時延、渲染復雜度等等。
可以看到左邊這張圖,以VR為例,如果帶上VR頭盔去觀看視頻,要做到極致的視網膜體驗,需要的碼率非常大,通過簡單的測算大概需要達到2Gbps的碼率。而且影響VR體驗的因素相較于平面視頻也變得更多了:刷新率、視場角、分辨率、MTP低時延、姿態跟蹤、眼動跟蹤等等。
1.3 互聯網對用戶沒有承諾服務質量
我們一般會從需求側和供給側兩個維度來進行分析一個產品。前面兩個算是需求側的分析,接下來我們看一下供給側的分析。實時音視頻服務一個非常重要的供給側就是互聯網的基礎設施。我們都知道互聯網對用戶的服務質量基本上是沒有承諾的。
怎么理解呢?首先,建設互聯網的成本非常昂貴,比如,需要在海底拉光纜,這個鋪設成本是非常昂貴的,這里包括人力的,物力的,另外一部分是無線頻譜的成本,比如3G、4G、5G的頻譜。所以互聯網的建設一定是需要考慮共享,共享就需要使用復用和交換技術。
怎么理解交換呢?
看下下面這個簡單的示意圖。假設我們要建4個網絡節點A、B、C、D;如果沒有交換,兩兩互聯需要6根線。但是如果使用了交換,則只需要4根線就可以了。所以從成本考慮,需要交換的技術;
我們知道交換一般有兩類技術,一類是Circuit switching ,另一類是Packet switching,Circuit switching的特點是容量預留,但是資源存在浪費,因為一旦預留,就算沒有數據傳輸,帶寬資源也是被占用。
而Packet switching技術則是鏈路資源共享的,所以可以做到更低成本的交換。而當時互聯網設計考慮到成本的因素,選擇了Packet switching這個技術進行演進;因為選擇了Packet switching,再加上best effort盡力而為的轉發模式,所以帶來了一系列丟包、重復報文、時延、亂序等問題。所以我們總結,丟包、重復、時延、亂序是這一代互聯網的固有屬性。
這里大家可以思考一個問題,為什么互聯網在最開始設計的時候,并沒有考慮在網絡層解決這個問題。或者換一個更大的問題,如果今天重新設計互聯網,我們會怎么做?會不會嘗試讓互聯網去解決這些問題。第二個思考的問題就是,在大家的日常應用開發過程中是怎么解決丟包、重復、時延、亂序的問題。
1.4 對我們的啟發
通過前面的分析帶給我們一些啟發,首先我們認為需要構建一張媒體網絡,通過這張網絡來彌補供給側和需求側之間的鴻溝,供給側就是互聯網的基礎設施,需求側就是飛速發展的音視頻業務。第二點:通過這張網絡來滿足不同行業對音視頻分發的旺盛需求。第三點,通過這張網絡來應對未來出現的新技術的挑戰。
#02
華為云原生媒體網絡架構介紹
前面解釋了為什么我們需要一張媒體網絡。接下來我會介紹一下華為云原生媒體網絡架構。
2.1 華為云原生媒體網絡
大家可以認為華為云原生媒體網絡是云原生視頻服務的一個技術底座,基于這張云原生的媒體網絡會構建上面一系列從生產到處理到分發到播放的云原生視頻服務,比如CDN、直播、RTC等等,通過這些云原生的視頻服務來支撐上面千行百業的客戶。我們這張云原生媒體網絡主要包括7大特點:扁平化、Mesh化、智能化、低時延、靈活性、多樣性和端邊云協同。
2.2 廣覆蓋:支持多種接入方式,實現全球互聯互通
接下來我會介紹一下華為云原生媒體網絡,三個比較重要的架構設計目標。因為我們的服務對象遍布全球,所以首先就要是一張全球部署的網絡。這張網絡主要解決三大問題:第一就是需要支持多種接入方式,其次是節點的互聯互通;第三是要考慮一個高可用設計冗余覆蓋。
首先,因為我們是一個paas類服務,所以客戶很多,來自不同的行業,以云會議為例,很多客戶對云會議的安全性和質量要求非常高,所以他希望能夠從他的企業園區通過專線來接入這張網絡。但有的客戶,希望他的用戶能夠隨時隨地的接入這張網絡來分發業務,比如一些互聯網客戶,這個時候就需要支持互聯網的接入方式。
另外,因為我們大量業務的流量在邊緣終結所以國內我們主要通過電信、聯通、移動單線接入,節省服務帶寬成本;國內通過三線機房或者BGP資源,解決跨運營商網絡資源交換的問題;在海外,我們會優先選擇網絡資源比較豐富的IXP節點接入;
通過華為云基礎網絡設施或者優質的互聯網資源實現跨國的互聯。另外我們在部署規劃的時候就要考慮高可用設計,高可用設計常見的手段是增加冗余,我們在規劃的時候考慮了站點冗余和帶寬冗余。我們會保證覆蓋區域用戶至少有3個站點可以提供對應質量要求的服務。
另外,我們在做資源規劃的時候,會按照業務需要的帶寬的2倍以上進行規劃,應對部分突發。
2.3 全行業:滿足娛樂、通信、行業視頻等不同業務要求
因為我們是一個Paas類服務,我們不能因為滿足了一類客戶的需求,就影響其他客戶的特性,而且要盡量快速的滿足不同客戶的需求。
這對技術提出了3個方面的要求:首先因為需要滿足不同行業的不同業務需求,所以業務應用開發的敏捷性就非常重要,我們需要讓新功能能快速上線到全球任意邊緣節點,同時為了降低新特性上線的風險,我們需要支持新特性在不同edge的灰度上線。我們把這種開發方式叫做Living on the edge。
第二個技術要求,也是我們非常重要的設計原則——Edge Services是獨立自治的。Edge Services就是我們圍繞著媒體網絡的網絡節點,部署的一系列微服務,我們統稱為Edge Services。每個Edge Services都必須是獨立自治的,因為我們是一張分布式的媒體網絡,肯定不希望某一個節點故障(比如網絡故障),就會對我們造成全網業務的影響。
所以每個Edge Services必須是獨立。什么是自治呢?當邊緣和控制中心網絡出現一些暫時的故障,那我的架構上一定要保證Edge Services內部能夠自治,也就是說它本地的服務還是可以提供的。
我們可以看到左邊簡單列了四個微服務,其中局部調度就是為了減少對全局調度的依賴,當邊緣和控制中心網絡出現一些暫時的故障,邊緣依舊可以提供服務。另外,我們在Edge Services內部的架構主要采用微服務進行劃分。
它的核心目的是幫助我們能夠快速靈活的上線一些特性,例如我們在edge service內部有協議適配的微服務,這樣當我們需要支持新的終端,適配一些協議的時候,可以快速上線一個新協議的適配微服務,這樣可以快速上線,而且不會影響已經上線的終端的支持。
第三個技術要求是Overlay網絡需要能夠靈活的定義它的路由。舉個例子,例如華為云會議,它需要支持大量高規格的政府級會議,而這個對安全性和質量要求就非常高,我們需要讓進入我們媒體網絡的這張會議的所有報文都走我們華為云的骨干網,避免使用互聯網資源傳輸。
還有一些客戶對價格比較敏感,對于這類客戶我們就會盡量使用性價比較高的網絡資源來轉發他的報文。這就需要有一個可編程的overlay網絡實現靈活的網絡路由和轉發。
2.4 全流程:提供媒體生產、處理、分發、播放全流程服務
第三個比較重要的設計目標是,我們的架構需要能夠提供端到端的,從生產到處理到分發到播放的全流程服務。我們把客戶主要分為兩類,一類是云原生,很多互聯網客戶,在誕生之初,就是在云上的,所以可以很方便的使用我們的云上服務。
但是有些客戶,需要從傳統的線下轉型到線上,為了服務于這樣的客戶,我們的生產和處理系統是基于華為統一的Huawei Cloud Stack統一技術棧,支持在線上線下靈活、快速部署,同時我們還提供了方便的SDK,它能夠跨終端、低功耗的來幫助客戶覆蓋更多的終端。
最后一個技術要求是整個實時媒體處理流水線是能夠做到靈活編排,動態管理的。舉個例子,我們去年和斗魚聯合創新的項目,幫助斗魚把在端側的特效算法上移到了Edge services。這樣直接給斗魚帶來了三個好處,第一個好處是開發工作量變少了,原來的特效算法需要適配不同的終端,不同的芯片。
第二個好處是特效算法的迭代速度變快了,只需要把特效算法在Edge services更新部署,客戶就能夠體驗到。第三好處是覆蓋的終端機型變多了,因為傳統在端側去開發的特效,其實有很多低端機是沒法體驗到的,如果把它放在我們的Edge services上,就可以快速去滿足很多低端機型的要求。
2.5 架構分層設計:適應互聯網的特征
最后分享一下我們一個非常重要的的架構分層的設計思想。我們借鑒了計算機網絡系統的設計思想。可以想象一下,如果沒有現在這套計算機網絡分層系統,我們的應用開發是怎樣的體驗。可能我需要去list整個網絡拓撲的節點,需要去尋找最優的路徑,把我的消息從a發到目的地b,在這個過程中還要去處理各種網絡的異常,比如丟包、重傳、亂序等等,這顯然是對應用開發非常不友好的。
計算機網絡系統設計就是解決這些問題。首先就是layering分層的思想,底層有鏈路層,屏蔽不同鏈路傳輸技術的差異性,比如我們支持5G之后上層的應用是不用修改的。在往上就是網絡層,它主要有2大功能,轉發和路由,所以不需要每個應用自己去定義轉發路徑。在往上是End to End layer。這是對上面傳輸層、表達層。應用層的一個統稱。而分層的目的就是模塊化,降低耦合度,每一層聚焦解決每一層的問題。
而我們云原生媒體網絡架構分層也是借鑒了這個思想,我們在網絡層進行增強設計,改善報文轉發的時延和到達率。我們通過在End to End layer的自研實時傳輸協議來讓上層的實時音視頻應用開發更加簡單。這樣我們的應用開發就可以更加聚焦業務邏輯。同時我們抽象出媒體處理模塊,這樣音視頻相關的編解碼技術,前后處理技術,就可以獨立演進,快速創新。
2.6 架構分層設計-Network Layer
在介紹我們在網絡層和End to End layer的一些關鍵設計之前,首先來看一下網絡層有什么問題。互聯網在設計之初有一個非常重要的質量屬性,就是互聯互通的高可用性,我們知道互聯網是由上萬個ISP組成的,任何一個ISP故障,網絡還是可以正常的通信。
其中BGP協議就是一個非常重要的設計,他主要考慮了聯通性,但是并沒有去做一些服務質量的感知。我們可以看到左邊這個圖,用戶A要發一個消息給用戶B,跨運營商,它很有可能會經過互聯網穿越很多個不同的ISP,這就會帶來很多問題。
比如會加重丟包重傳,而且這些關鍵問題很多是非技術因素,比如很多運營商針對某一個網絡的網絡策略不一定是質量最優,它可能是成本最優,比如有一些冷土豆或熱土豆的路由策略。
第二個原因,有可能運營商今天晚上要做一個設備升級,需要運維人員操作一些配置變更,而配置變更過程中有可能出現人為出錯造成鏈路故障,還有可能就是這些區域有一個熱門事件,可能會造成擁塞。
為了解決這個問題,我們決定對網絡層進行增強,這里我們主要有2個技術手段;一個是underlay,一個是overlay。
1)首先是underlay,我們通過華為云全球網絡基礎設施,改善網絡的接入和互聯質量,一旦進入我們的underlay網絡就可以避免和互聯網其他流量競爭帶寬,既改善了質量,又保障了安全性。
2)其次是overlay部分,我們除了自建骨干網,還會部署一些overlay的節點,實現基于不同Qos目標優化報文傳輸路徑和高效轉發,而不是讓報文任意轉發。我們在網絡層的設計原則也是非常經典的控制面與數據面分離的設計思想,簡單來說,控制面負責路由,控制整個網絡的運行,數據面負責轉發。
我們為了讓數據轉發能夠更加簡單,也采用了網絡中非常經典的一個設計思想:源路由算法的思想,核心目的也是為了降低轉發設備的復雜度。具體來說,就是當一個報文進入我們網路的第一轉發節點的時候,系統就會把報文要經過的所有轉發節點信息,包括目的節點都封裝在報文頭中,這樣每個轉發節點收到報文后,只需要解析報文頭,就知道下一跳要發送到哪里,這樣可以大大降低轉發設備的復雜度。
另外還有1個非常重要的設計原則,就是我們對網絡層不做可靠性承諾要求,雖然我們不保障可靠性,但是我們依舊會利用冗余糾錯、多路徑傳輸等技術改善報文轉發的時延和到達率。這也是我們為什么把這層叫做網絡層的原因,他依舊關注的是路由和轉發。只是做了一些增強。
2.7 架構分層設計-End to End layer
網絡層的增強能夠幫助我們去實現更低時延的轉發以及更高的到達率。再往上是我們的End to End layer,這里大家可以先思考一個問題,前文提到互聯網有這么多固有屬性,丟包,亂序,重傳,看上去對開發者非常不友好。但是互聯網的發展卻非常的繁榮,有一代代互聯網的應用email、web、IM、audio、video各類業務出現,這又是什么原因?
這里分享下我的思考,非常重要的一點就是協議,在End to End Layer出現了很多重要的協議,大大降低了我們應用開發者的技術的門檻,比如我們從TCP到HTTP到QUIC等,每一代的互聯網的應用發展背后都有一個協議的出現。End to End layer核心設計目標就是要定義一個好的協議和開發框架,讓應用開發變得簡單。
怎么做到這一點呢?可以看到左邊這個圖,中間部分是我們的自研實時傳輸協議大致的功能圖,我們會在它的北向提供一個統一的接口。通過這一套北向接口可以讓我們既能夠開發實時音視頻業務,又能開發可靠的消息類的業務,同時我們再看一下它的南向,通過協議棧屏蔽了底層使用UDP或是ADNP協議的差異性,這樣應用開發也會變得更加簡單。
協議棧設計的目的是為了讓應用開發變得簡單。所以我們還抽象了兩個模塊,NQE和QOS,通過這兩個模塊提供回調的方法把網絡的信息能夠快速反饋給上層應用,比如編碼模塊。編碼模塊就可以快速的自適應網絡的條件,來調整它的編碼參數。
另外一個非常重要的設計原則就是高效。因為我們知道,前面提到了在未來有很多的端是IoT端,IoT端有一個很大的特性,就是對功耗的要求非常高,我們希望在協議棧設計之初就要考慮這個問題。所以我們不希望輕易的在這一層去增加額外的一些沒必要的拷貝,這里遵循的是ALF的設計原則,這個原則也是非常經典的。RTP當時設計的時候也是遵循了這個設計原則。
另外,我們的協議棧設計也參考了quic的設計思想。支持多路復用、網絡多路徑、華為LinkTurbo、優先級管理等功能。這里分享一下我們的一個小經驗,就是在開發自由視角和VR這類業務,對帶寬的要求非常高,這個時候我們就會開啟多路徑的功能,可以獲得比較大的體驗上的改進。
2.8 華為云原生媒體網絡目標架構
最后我對整個媒體網絡的目標架構做一個簡單的總結。
1)簡單來講就是把復雜問題簡單化,分而治之,通過分層的設計來讓每一層能夠相互解耦,快速演進;
2)每一個Edge services都是獨立自治的,來提高整個服務的可用性;
3)通過把Edge services按照微服務進行劃分,能夠讓到我們更加靈活的去適應客戶的需求,實現按照微服務級別的快速上線。
#03
實時音視頻服務質量保障實踐
第三部分我會分享一下我們在實時音視頻服務質量保障上的一些實踐,這里主要是一些算法設計上的思考,前文主要是架構上的一些思考。
3.1 視頻、音頻、網絡是影響體驗的關鍵系統因素
如上圖所示,我們做了一個影響體驗的相關維度的分析。從客觀指標到主觀指標,再到QoE的關系做了一個簡單的映射圖。我們通過分析,發現影響實時音視頻服務體驗質量核心的三個系統性因素是視頻,音頻和網絡,接下來我就分別針對這三部分的算法實踐進行介紹。
3.2 視頻編碼技術
首先我們來看一下視頻編碼。我們把視頻編碼技術按照設計目標進行了一個簡單的分類,第一類,它的設計目標是如何科學的減少視頻編碼的冗余,降低編碼失真對人眼主觀感受造成影響。因為我們的實時音視頻業務還是主要面向人的,所以有一些非常經典的優化思路,比如:從人出發,分析人眼的視覺特點,基于這些特點來優化編碼算法,圖中簡單列了幾大類和編碼相關度比較高的人眼視覺特點。
還有一種優化思路,就是從源出發,也就是從內容出發,我們會分析不同場景內容的特點優化編碼算法,比如計算機生成圖像的特點有低噪、大平坦區域等等。
第二個設計目標是如何科學的增加冗余來抵抗弱網傳輸對人員主觀感知的影響。這邊簡單列了幾類增加冗余的編碼,比如極端的全I幀編碼、幀內刷新的模式以及長期參考幀和SVC編碼。
在一些空間視頻的業務里面,我們為了改善在空間定位的時延,會使用一些全I幀編碼結合一些普通編碼來使用,減少空間定位的時延。我們在云游戲里為了減少大I幀的突發,會采用幀內刷新的編碼方式。在實時音視頻服務中,長期參考幀和SVC是比較常見的編碼方式。
3.3 PVC感知編碼
下面介紹一下我們具體的一些編碼技術。我們云視頻團隊聯合華為2012中央媒體技術院,從分析人眼視覺系統出發,改進了PVC感知編碼算法。我們的算法經歷了幾輪迭代。最新的感知編碼2.0算法實現了1Mbps碼率提供了1080P 30幀高清畫質的體驗;
算法的主要改進思路是:首先通過預分析和編碼反饋信息,對場景和區域進行區分,實時通話場景主要的高敏感區域包括:人臉區域和靜態區域。針對不同場景和區域,采用不同的編碼參數和碼率分配策略,例如非高敏感區域分配較低的碼率;
2.0算法在1.0的基礎上,我們在碼控方面加入了AI的技術,相較于之前,固定的碼率和分辨率組合,新的方法,我們基于AI的感知碼控,獲取不同場景下最優的碼率和分辨率組合,達到低帶寬下更優的主觀效果。
3.4 SCC編碼
第二編碼技術是SCC編碼,它主要應用于計算機生成圖像的編碼,比如在教育或者會議里的屏幕共享場景,我們的算法相較于x265 ultrafast檔位,它編碼的壓縮性能提升了65%,在相同的計算資源的情況下,我們的編碼速度提升了50%。
針對屏幕共享的場景,我們也解決了它特有的一些問題。在共享的時候,經常會共享一些圖文,比如word或者ppt。這一類相對是比較靜止的,這個時候編碼參數一般會采用低幀率,盡量保證它畫質的編碼方式,但很多時候共享圖文之后會切換到共享視頻。如果不能很好的去感知這一點,我們觀看視頻的體驗就是不連續的畫面,類似于gif。
為了解決這一問題,我們采用了基于視頻時空域的復雜度分析,來自適應視頻編碼幀率的辦法。這樣在靜態的圖文畫面下能夠有一個高品質的圖像,切換到視頻共享時,也能夠保證流暢性。
我們解決的第二個問題是從YUV444下采樣到YUV420場景帶來的色彩度的失真問題,因為我們知道很多時候屏幕共享靜態的圖文,對色彩度的要求是比較高的。
但是把它從YUV444下采樣到YUV420的時候,UV域的信號會出現很大的衰減,左圖是沒有使用新算法之前的效果,右圖是應用了新算法之后的效果,明顯可以看到右圖字體會更加清晰,色彩度的失真會更加小,這里的核心是使用了低復雜度色彩校正的算法。
3.5 自適應長期參考幀編碼
前面兩個編碼技術是降冗余,而自適應長期參考幀編碼技術是科學的提升冗余。為了更好的理解,我們先把復雜問題簡單化,理解一下什么是固定長期參考幀,我們看到左邊上面的圖,紅色的是I幀,綠色是長期參考幀,藍色是正常的P幀。
通過這樣的一個參考幀的方式,打斷了原來正常的Ipppp前向參考的依賴關系,這樣當它的P2或者P3丟失的時候,后面P5的解碼是不會受影響的,還是可以繼續解碼,這就會改善它的流暢性。
但是還是有不足的,比如這種綠色的長期參考幀P5丟失了,因為之后的P幀都依賴它,所以都無法解碼。第二個問題就是固定,因為長參考幀的關系,它會帶來一定的冗余,就會導致相同帶寬下的質量會有所下降,所以我們希望在網絡好的時候,能夠盡量讓冗余變小一點,來改善畫質,所以我們就提出了自適應長期參考幀的辦法。
自適應長期參考幀的核心思路就是兩點,第一個是增加反饋機制,在解碼端增加一個反饋機制,告訴編碼端這個長期參考幀我收到了,編碼端知道這個幀收到之后,后面就參考這幀進行編碼。第二個是增加一個動態mark長期參考幀的機制,也就是我會根據網絡的QOS情況去動態優化長期參考幀編碼的步長,在網絡好的時候步長調短一點,網絡差的時候調長一點。
但是在增加反饋機制之后會帶來一個問題,當在一些網絡模型RTT比較長的時候,我的反饋周期會比較長。而且反饋報文還可能會丟失,需要再次反饋,這樣就會導致長期參考幀的步長變得非常長。
一旦步長變長之后,它的編碼質量就會進行下降,甚至會下降到業務無法接受的地步,在我們優化算法的時候也考慮到這一點,當長期參考幀的步長太長,我們會強制P幀去參考離它最近的長期參考幀,而不會完全去依靠反饋機制。這樣做會帶來兩個比較好的優化效果,一個是在突發丟包場景下它的畫面流暢性變好了,同時它有一個比較好的網絡自適應的能力,能夠兼顧流暢性和畫質。
3.6 網絡傳輸技術:求互動性與質量的最優解
前面是視頻編碼技術的一些分享,接下來看一下我們在網絡傳輸上的實踐。我們對網絡傳輸的定義,核心目標就是要求互動性和質量的最優解。我們知道網絡傳輸技術,主要抵抗丟包,抵抗時延,抵抗抖動。常見的技術比如ARQ、FEC、不對等保護,還有抖動估計、緩存伸縮等等。
除了做到抗抖動抗丟包,還需要有擁塞控制,擁塞控制的核心目的就是讓 “發送速率”盡可能去逼近“可用速率“,同時盡可能保持低延遲,如果發送速率和網絡可用帶寬不匹配,會造成丟包、抖動或者帶寬利用率低。
還有一個非常重要的就是信源信道聯動,我們前面看到的動態長期參考幀就是通過信道的信息動態調整編碼參數的一種實現方式,基于這個聯動,才能夠更好的去改善我們的體驗。
3.7 基于強化學習,提升帶寬預測精度,改進QoE體驗質量
無論是擁塞控制,還是信源信道聯動,在這個過程中帶寬預測的算法都是非常重要的。傳統的做法是利用人工的經驗,通過一些決策樹算法,針對不同網絡模型下的帶寬做一些預測,但是在復雜場景下,這種做法的效果不是特別理想,所以我們希望通過強化學習的方式來改進這一點。
主要思路是基于接收端反饋的網絡QoS,主要反饋四個信息:接收速率、發送速率、丟包率和時延抖動,基于這些信息,通過強化學習的方法來提高帶寬的預測準確率。算法優化后,我們的高清占比得到了30%的提升,卡頓率下降了20%。
3.8 音頻3A技術:改善音頻清晰度
最后我會分享一下在音頻方面的技術實踐。好的3A算法對于語音清晰度體驗至關重要。我們把AI技術應用到3A算法中來改善語音的體驗。
首先,我們把AI應用在回聲消除上,回聲消除是整個3A里非常重要的一個步驟。傳統算法在穩態的環境下做的回聲消除,已經比較成熟,一般都處理的比較好。
但是當環境出現一些變化,比如我拿著手機免提打電話,在家里,從房間走到陽臺,這個時候環境出現了變化,回聲消除就會遇到很多挑戰,通過AI的方式能夠比較好的處理這些問題。特別是針對雙講的場景,我們新的算法很好的解決了漏回聲和丟字的問題。
其次就是降噪,傳統的噪聲,比如像風扇、空調這種穩態的噪聲,相對來說比較好抑制,而我們基于AI的降噪算法不僅能較好的處理平穩噪聲,在應對例如鍵盤、鼠標敲擊的聲音或者是喝水、咳嗽這種突發的噪聲的場景下,我們也可以快速的進行噪聲抑制。
另外一個3A中比較重要的環節就是自動增益,在通話場景下,自動增益主要是通過基于對人聲的識別來進行增益。這個時候,對人聲的檢測VAD是非常重要的,這一塊我們也是通過AI的技術來提升了人聲檢測的精確度,改善自動增益的效果。
3.9 音頻丟包恢復技術:降低丟包對音頻體驗的影響
另一個和視頻技術有些差異的是音頻的丟包恢復的技術,左邊這個圖也是一個比較經典的丟包恢復的技術地圖,它主要分為兩類,一類是基于主動的丟包恢復,一類是基于被動的丟包恢復。
主動丟包恢復技術主要包括常見的FEC、ARQ等。被動恢復主要有三種方法,插值法,插入法還有重新生成法。算法優化思路和視頻一樣,都是從研究人出發,視頻是研究人眼到視覺特點,那么音頻是研究人的發聲機制,基頻的信息一定程度反映了聲帶的振動頻率情況。
而包絡的信息,則一定程度反映了嘴型的情況,基于這兩個信息結合AI的聲碼器技術可以做到100毫秒左右的音頻報文丟失的恢復水平。我們知道一個中文字的發聲一般是150毫秒到200毫秒,傳統的PLC基于信號的恢復方式,一般可以做到50ms音頻信號的恢復,現在我們基于AI的方式是可以做到100ms音頻信號的恢復。
3.10 案例1:華為暢連,全球首款全場景音視頻通話產品
最后分享兩個案例。我們的產品不僅要服務外部客戶,也要對內支撐華為很多其他的產品服務。我一直開玩笑說,支持內部客戶其實是更難的,而且比支持內部客戶更難的是支持華為的內部客戶,他們的要求是非常高的。
現在我們支持了華為手機的暢連服務,暢連是全球首款全場景(除了支持手機,還會支持華為的大屏、華為的平板、華為的筆記本、手表、手環的通信)的實時音視頻通話類產品,我們幫助暢連實現了在1Mbps碼率條件下,提供高品質1080p30幀的通話效果。
3.11 案例2:網絡研討會:會議+直播融合體驗,開大會更簡單
比支持一個華為內部客戶更難的是支持兩個。我們支持的第二個內部客戶就是華為云會議,華為云會議的網絡研討會的場景也是基于我們的實時音視頻服務開發的,我們現在可以做到的單場網絡研討會同時支持三千方的觀眾,其中有一百方是互動的,在今年下半年我們的云會議產品會做到單場網絡研討會同時支持一萬方的觀眾,五百方互動。
#04
總結
最后我對今天分享的內容做一個總結。首先,我們可以明顯的看到視頻業務正在驅動整個互聯網技術發展,包括音視頻編碼/傳輸技術,以及邊緣計算和邊緣網絡等技術。所以我們需要一個服務或者系統來彌補互聯網基礎設施(供給側)和快速發展的視頻業務(需求側)之間的鴻溝。
第二點,今天的分享僅僅只是開始,隨著實時音視頻技術應用場景的增加,數據的驅動,會使得我們的云原生媒體網絡架構和各類算法持續優化。
最后,希望華為云原生視頻服務能夠和大家一起,攜手走進視頻“新時代”。
謝謝大家。
編輯:jq
-
AI
+關注
關注
87文章
30728瀏覽量
268891 -
計算機網絡
+關注
關注
3文章
337瀏覽量
22156 -
5G
+關注
關注
1354文章
48436瀏覽量
563969
原文標題:解密華為云原生媒體網絡如何保障實時音視頻服務質量
文章出處:【微信號:livevideostack,微信公眾號:LiveVideoStack】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論