京東雲端到端多媒體關鍵技術揭祕

 

 

 

 

 

從帶來更高編碼效率、更好的用戶體驗的京享高清,到直播架構與網絡演進優化,從而爲用戶帶來更流暢的觀看體驗,以及運維繫統的異常自動修復和高彈性的多媒體存儲架構,一層一層展現出複雜而有序的多媒體技術框架。本文是對在LiveVideoStackCon 2019北京的京東雲技術專場的內容回顧。

 

文 / LiveVideoStack算法

 

AI和5G分別正在和即將改變着多媒體技術生態,固然這會給用戶帶來更好的甚至是全新的體驗。8月23日,在LiveVideoStackCon 2019北京的京東雲技術專場上,四名來自京東雲的技術專家分享了京東雲在多媒體技術的積累與技術突破,以及對將來5G+AI時代的展望。後端

 

 

 

 

複雜網絡下底層編碼技術優化提高用戶體驗數組

複雜網絡條件下如何爲用戶帶來更優質的視頻觀看體驗,這個問題一直是音視頻技術領域中的關鍵和難點。對此京東雲從4個方面着手提高用戶體驗:從底層視頻編碼,「京享超清」技術提供了高質量、低成本的視頻轉碼效果;針對複雜網絡,端到端多碼率切換技術保障直播、點播視頻作到無卡頓、無黑屏;溫馨音頻讓用戶在多場景頻繁切換中保持平和的聽覺過渡,提高總體觀看體驗;並從文件預處理作好質量檢測,減小無效轉碼,提早預知視頻缺陷。安全

「京享超清」服務器

張樹軍認爲在當下視頻清晰度不斷提高和網絡複雜度致使的卡頓、丟包的狀況下,如何作到保證相同觀看質量的同時儘可能下降碼率是音視頻技術發展的趨勢和關鍵。針對於高質量、低成本的視頻轉碼,京東雲在5個方面作了技術優化:圖像和視頻級的去噪、銳化,針對低碼率視頻的插幀處理,針對用戶感興趣區域的畫質加強,分類場景的編碼優化以及與AI結合的視頻編解碼處理。網絡

特別一提的是,通用的去噪都是針對於圖像級和空域級,是在YUV和RGB上作處理,其實這種處理是對全部塊都適用的,然而視頻是有塊屬性和運動屬性的,所以京東雲對指定的幀類型或宏塊類型的區域,結合現有的單通、雙通、DCT等去噪算法作優化,實現對某一幀或宏塊類型的自適應去噪。除此之外,京東雲還結合AI技術,識別、分析視頻場景和用戶感興趣區域,針對不一樣場景和區域採起不一樣的編碼和碼率控制策略,達到在同等質量和觀看體驗的前提下,爲用戶和客戶下降帶寬成本。架構

 

 

 

 

 

多碼率切換框架

面對國內用戶複雜的觀看網絡條件和設備多樣化,尤爲是用戶在不一樣網絡間切換出現的網絡抖動狀況,很難採用統一的轉碼策略知足全部用戶的觀看體驗需求。張樹軍表示京東雲目前採用端到端的多碼率切換技術來解決這一痛點,包括點播和直播場景的多碼率切換對齊。運維

常規的多碼率切換對齊方式主要有Segment、GOP和幀級三種:Segment相對而言是最簡單的IDR對齊方式,在客戶端和Server端的處理最爲方便,但同時也是切換速度最慢的;相對於Segment,GOP則能夠作到更精細,切換速度也更快,但因爲GOP固定,有人爲因素干預編碼,從而致使最終質量降低;幀級切換鑑因而逐幀編碼,切換速度最快,但同時對用戶終端和網絡要求也會更高。所以京東雲針對點播和直播場景作了優化。異步

對於點播通常會作2-pass編碼,第一pass數據會給第二pass數據作參考使用,而若是作多檔轉碼輸出——經過一檔的mbtree數據指導其餘檔2-pass轉碼輸出實現各檔次幀類型和時間戳對齊,但因爲是基於參考檔1-pass指導2-pass轉碼輸出,所以實際輸出質量並不高。京東雲在此基礎上,增長了下圖紫色模塊(特定YUV)保證lookahead輸出的每一幀數據在多檔輸出統一一致。

 

 

 

 

 

對於直播場景能夠借鑑點播的邏輯,但因爲不一樣用戶的拉流時間點不一樣,所以只能在場景切換後的多檔直播流作到對齊,不過針對某些場景切換特別長的狀況,相應對齊部分也被拉長,直接影響了用戶觀看體驗。京東雲在直播對齊中引入了一些同步機制,在拉流過程當中將同步信息加入到流中,這一操做並不會對轉碼效果產生影響,但收到同步信息的每條轉碼流能夠在一個時間點插入I幀對齊,在體驗和功能知足性上獲得提高。

 

 

 

 

 

溫馨音頻

咱們常常能夠在體育賽事或者演唱會中遇到一種狀況:多個不一樣環境下的場景頻繁切換致使音量忽高忽低,對於用戶的聽覺體驗形成極大影響。針對這種狀況,單項增益和常規均衡化會致使原聲失真、低音效果差和失去本來聲音高低效果。京東雲對於多場景切換的音頻,首先會作音頻的總體分析,並根據自定義的溫馨區判斷音頻是否須要動態調整使其達到較好的收聽體驗。

 

 

 

 

 

 

以存儲爲中心提高高性能、高可用、低成本直播服務

伴隨視頻畫質和需求的不斷提高,視頻容量、數量的增多以及容量和帶寬的彈性擴展成爲視頻雲服務廠商面臨的一大挑戰。與此同時,用戶對於高畫質、高流暢、無卡頓的觀看需求的提高,也對低延時在線上傳以及高吞吐的離線處理性能提出了更高要求,而由此帶來的數據成本與數據安全問題也不容忽視。

海量視頻存儲系統

針對上面提到的挑戰,京東雲是如何作到百P級別存儲服務的?對於一個經典模型——一箇中央節點組成大目錄樹,下面是不少數據節點存儲數據,相似於HDFS,實際上這個架構就能夠知足視頻存儲的基本需求——視頻上傳、下載,可是在所承載的文件數量和容量上還是沒法知足,同時這種樹形結構在磁盤訪問、擴展性和中央節點管理磁盤能力上的表現並很差。所以,京東雲構建了一套基於KV結構的視頻存儲系統,對NameNode從功能上作簡化,將目錄拉平——每個文件名對應文件數據位置,用Meta Service管理文件名到文件數據位置的映射,由此能夠看做爲一個有效數組存儲在多個集羣中,元數據經過Meta調取不一樣集羣中的數據,這種結構也更易於擴展。而在Data Service中,每一個集羣中的每一個數據都對應惟一的ID(這個ID存儲在元數據中),至關於一個flv文件映射爲不一樣集羣中對應ID的數據。這種多後端集羣存儲還具備一個優點——針對不一樣類型的數據能夠在不一樣後端進行存儲,好比相似m3u8這種須要頻繁訪問的文件能夠放在SSD集羣,ts文件能夠放在標準存儲集羣,視頻的冷備份能夠放在EC集羣,轉碼的中間文件能夠放到RRS集羣。

 

 

 

 

 

以存儲爲中心的處理框架

對於一個視頻,存儲是基礎,處理是目的,在京東雲的數據處理框架中分爲同步處理和異步處理。同步處理——在數據下載時同步作處理,至關於用計算資源換存儲資源,它適用於一些圖片水印、剪裁等場景,京東雲同步處理框架提供了根據請求參數調度後端服務,以及同時支持傳數據和傳連接兩種方式的數據處理服務能力。對於異步處理——基於存在數據離線作處理,整個異步處理框架咱們是經過多個消息隊列實現的——即時處理和不一樣時間的延時處理消息隊列,由此咱們能夠保證至少一次的鑑黃調用以及後端服務繁忙時指數退避。

 

 

 

 

 

基於公有云的點播服務

對於點播或者直播服務,高吞吐、低延時的性能、高可用性以及成本優化成爲了關鍵。京東雲基於公有云的點播服務中,用戶從雲主機(業務系統)請求上傳連接,這個上傳連接對應存儲連接,用戶直接經過客戶端上傳數據到對象存儲服務,再經過異步處理機制觸發業務邏輯(如轉碼、鑑黃),處理完成後上傳到對象存儲服務經過異步處理機制觸發自有業務系統(如媒資管理等),最後生成連接經過CDN分發。

 

 

 

 

 

多核心協同拓撲CDN分發網絡架構演進

視頻直播不一樣於傳統的點播和網頁加速,它對延遲和卡頓更加敏感,而且具備極其明顯的流量突發特色而國內網絡接入的又十分複雜,除了三大運營商,還要對小運營商、教育網等作CDN優化。下面將着重針對CDN網絡架構實踐、演進與性能調優方面進行講解。

CDN網絡架構演進

對於一個直播雲架構而言,核心訴求集中在高可用、易擴展、高性能三方面,在這一背景下,咱們首先須要挖掘單機或單節點的性能潛力。京東雲會將每一個節點抽象爲虛擬的兩層,在節點內部的邊緣上經過輪詢的方式將流量打散接入,若是出現突發流量能夠充分利用每一個機器的能力,在流量打散後內部經過哈希匯聚到內部邏輯的二級源,再由二級源作真正的回源。當有多路流時能夠合併回源,減少回源帶寬,同時有效減小它們內部的交互成本。

 

 

 

 

 

在充分挖掘單機及單節點潛力的基礎上,咱們進行CDN組網。在最初的單核心拓撲架構實踐中,咱們發現存在兩個問題:首先是沒法動態選路,其次核心集羣只有華北地區一個,存在明顯的單點問題。所以在這個基礎上咱們設立了南方核心集羣造成雙核心協同架構,南北方核心集羣經過專線鏈接,由此也同時實現了異地災備,提高了總體可用性。但這套架構存在一樣的問題,也就是線路選擇仍舊依靠運維經驗手工配置,響應速度沒法很好知足。

 

 

 

 

 

伴隨京東雲核心集羣和邊緣節點的不斷建設擴充,京東雲經過流控中心實時探測網絡狀況,對回源線路進行統一調度,實現二級源之間回源、二級源和其餘核心集羣回源等多種動態調度備線方案。當其中一個節點出現網絡抖動或故障時,其餘節點能夠即時從備選線路回源。至此,各層級集羣發展爲「節點池」的概念,也就是再也不依賴人工運維狀態下的以地域劃分集羣,而是造成核心集羣池、二級邊緣池和一級邊緣池,分發回源和推流回源經過流控中心實時探測生成最優線路及多條備線。特別一提的是,普通CDN是經過IDC到IDC進行網絡質量探測,而京東雲基於京東商城配送站資源,將其模擬爲一個端探測CDN邊緣節點質量,提高邊緣節點到用戶的最後一千米質量。

 

 

 

 

 

 

直播分發服務性能調優

咱們知道直播雲質量評價核心指標包括首開時間、卡頓率、內容延遲和可用性,上面所講架構演進更可能是圍繞可用性提高展開,京東雲在首開時間和卡頓率方面也作了不少優化工做。首開時間的消耗主要在DNS解析、TCP建連、應用層握手及協商、數據發送等幾方面。要加速首開,最簡單能夠想到的就是經過主動預熱把流提早拉到邊緣節點:視頻數據距離用戶越近首開時間必定就快。但對於直播長尾效應而言,預熱這種手段對CDN來講無疑具備很是巨大的成本壓力,常態服務時沒法使用。長尾效應下存在大量的直播冷起播放,針對冷起狀況下的首開優化就尤其重要。在內部交互(一級邊緣到核心集羣)中咱們經過「去DNS依賴」和維護「長鏈接的TCP鏈接池」的方式消除DNS解析和TCP建連的時間消耗,而一級邊緣到用戶端能夠經過在Client端進行「DNS預解析」節省DNS解析時間(這部分須要Client進行優化)。於此同時,針對應用層握手及協商過程,京東雲放棄了原生的RTMP協議(須要5-7個RTT),內部使用私有KTMP協議(playload兼容RTMP),在1個RTT完成握手及協商,這樣極大的下降了握手及協商過程的交互開銷。

 

 

 

 

 

其實針對首開時間的優化不少能夠同時下降直播卡頓率,好比TCP鏈接池在網絡發生抖動須要從新選路時能夠更快速創建鏈接。但當CDN網絡抖動致使丟包嚴重時,TCP表現就會有很大問題。京東雲自研了進行RTMP和QUIC協議轉換的Converter,部署於上行邊緣和下行邊緣:在上行邊緣咱們將RTMP轉換爲QUIC在內部傳輸,而當一級邊緣分發給用戶時再把QUIC轉回爲RTMP或FLV,這樣,CDN節點之間網絡丟包引發的卡頓將極大下降固然,網絡更多的抖動、丟包是發生在最後一千米,這就須要Client協同作一些工做進行QUIC推流接入及播放接入,以期下降更多延遲。

 

大規模、高可用直播平臺架構:提高性能+下降成本

直播平臺是基於端到端的處理,京東雲是如何基於前面提到的底層高性能視頻編解碼、大規模存儲、性能保障和CDN鏈路優化之上構建更友好的直播服務?下面將經過直播產品化高可用方案和性能提高詳細講解。

直播產品高可用方案

在推流質量和穩定性保障方面,京東雲在鏈路選擇、推流加速、多源站部署、穩流/預處理和多種推流模式5個方向優化,首先在推流鏈路選擇上提供應用更爲普遍的邊緣CDN節點和質量更高的源站直推兩種,邊緣收流後會經過CDN加速中轉到源站,而且經過多源站部署保證源站穩定性,同時提高推流性能,而穩流和預處理則更好的保證了生產系統和輸出流的穩定性,以及對不規範的流進行規範化處理和修復。

除了推流質量保障,如何經過技術手段保證系統生產過程的穩定性?從設計體系角度咱們經過模塊化、配置化和監控體系來完成直播流的穩定生產。目前京東雲採用微服務架構,每一個模塊獨立部署,高內聚低耦合,當某些模塊出現故障時,內部會採起服務降級或熔斷機制,從而縮小故障帶來的影響範圍。在服務模塊層,經過標準化+配置化設計知足不一樣需求,好比轉碼碼率、分辨率等;在業務層也能夠基於不一樣服務模塊的能力進行封裝達到不一樣應用、不一樣場景的定製化。而一個穩定的系統離不開完備的監控體系,當出現問題時如何快速發現、快速定位、快速修復。對於直播平臺下的生產集羣使用任務的方式管理,咱們把某一任務的輸入、處理過程和輸出採用配置參數,經過調度系統將這個任務下發給一臺機器進行生產,而生產的健康情況能夠經過這臺機器上報的數據進行實時監測、追蹤和修復。

 

 

 

 

 

下降資源成本,提高平臺性能

在底層技術優化基礎上,從平臺層角度,如何更充分利用資源,如何合理調度任務完成生產,讓整個系統吞吐更大、速度更快、利用率更高,一樣是「下降成本,提高性能」的重要一環。

下圖是資源調度系統架構,它包括對服務器、節點、網絡、調度等的管理,以及服務器和資源利用率的監控,它實時監測內部運行狀態和使用狀況,好比哪一個節點出現問題、哪臺服務器利用率比較低等等,當某一節點長時間利用率較高,咱們就須要判斷是否須要擴容或調度策略須要調整,從而達到利用率最大化和調度均衡的平衡關係。

 

 

 

 

 

在調度中,不一樣任務消耗的資源重心也會不一樣,好比轉碼對CPU消耗較多,而另外一種業務對帶寬消耗較多,所以咱們抽象了一個load的概念,用它表示任務在機器上的綜合指標,咱們經過算法不斷優化load值從而提高總體資源利用率。而在調度過程當中可能出現因爲信息延遲致使一個任務分配到一臺機器以後發現資源不夠的狀況,這裏咱們引入了超頻的概念,若是當前任務所需資源超出部分在這臺機器可承受範圍內(咱們設定一個百分比的過載保護機制),則不須要再進行二次調度。

 

 

 

 

 

 

 

儘管針對「京東雲視頻雲端到端產品技術實踐」的精彩技術分享已暫時告一段落,但關於音視頻編解碼、海量數據存儲、高可用CDN網絡架構等諸多問題依舊被火熱探討中,將來敬請關注京東雲開發者社區(ID:JDC_Developers),瞭解最新技術活動。

 

依託京東集團的業務實踐和技術沉澱,京東雲視頻雲提供了端到端一體化服務,打通採、編、制、錄、存、管、播等環節,讓視頻的生產和流轉更容易,經過積木化的方式各項能力自由組合,知足客戶對於視頻業務的不一樣場景和需求。點擊「閱讀原文」查看京東雲視頻雲服務,立刻開啓試用之旅吧~

相關文章
相關標籤/搜索