京东云端到端多媒体关键技术揭秘
生活随笔
收集整理的這篇文章主要介紹了
京东云端到端多媒体关键技术揭秘
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
從帶來更高編碼效率、更好的用戶體驗的京享高清,到直播架構與網絡演進優化,從而為用戶帶來更流暢的觀看體驗,以及運維系統的異常自動修復和高彈性的多媒體存儲架構,一層一層展示出復雜而有序的多媒體技術框架。本文是對在LiveVideoStackCon 2019北京的京東云技術專場的內容回顧。文 /?LiveVideoStackAI和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),了解最新技術活動。依托京東集團的業務實踐和技術沉淀,京東云視頻云提供了端到端一體化服務,打通采、編、制、錄、存、管、播等環節,讓視頻的生產和流轉更容易,通過積木化的方式各項能力自由組合,滿足客戶對于視頻業務的不同場景和需求。點擊“閱讀原文”查看京東云視頻云服務,馬上開啟試用之旅吧~
LiveVideoStackCon 2019深圳講師招募
12月13-14日,LiveVideoStackCon首次來到深圳,將全球前沿多媒體技術實踐與深圳本地產業結合,觸發技術與商業靈感。歡迎將你的技術實踐、踩坑與填坑經歷、技術與商業創業的思考分享出來。請將個人資料和話題信息郵件到 speaker@livevideostack.com ,我們會在48小時內回復。
LiveVideoStack?秋季招聘
LiveVideoStack正在招募編輯/記者/運營,與全球頂尖多媒體技術專家和LiveVideoStack年輕的伙伴一起,推動多媒體技術生態發展。同時,也歡迎你利用業余時間、遠程參與內容生產。了解崗位信息請在BOSS直聘上搜索“LiveVideoStack”,或通過微信“Tony_Bao_”與主編包研交流。
總結
以上是生活随笔為你收集整理的京东云端到端多媒体关键技术揭秘的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 腾讯云+FFmpeg打造一条完备高效的视
- 下一篇: 优酷超高清视频技术实践