0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何通過(guò)分塊編碼和分塊傳輸CMAF

LiveVideoStack ? 來(lái)源:未知 ? 作者:李倩 ? 2018-10-29 15:16 ? 次閱讀

剛落幕的LiveVideoStackCon 2018音視頻技術(shù)大會(huì)上,Akamai媒體業(yè)務(wù)群首席架構(gòu)師William Law通過(guò)主題演講介紹了如何通過(guò)分塊編碼和分塊傳輸CMAF,為觀眾提供極低延遲的視頻直播服務(wù)。本文由Akamai整理,并授權(quán)LiveVideoStack發(fā)布。

對(duì)于當(dāng)今年輕人,電視早已沒(méi)什么吸引力,大家更喜歡通過(guò)網(wǎng)絡(luò)追劇、看比賽,甚至看各種直播內(nèi)容。那么延遲到底會(huì)有多重要?為什么要強(qiáng)調(diào)低延遲?

假設(shè)你和鄰居都在自己家看足球賽,鄰居看電視直播,你看網(wǎng)絡(luò)直播。鄰居那邊已經(jīng)在為進(jìn)球歡呼,你這邊因?yàn)檠舆t,球員才準(zhǔn)備起腳射門(mén)……你說(shuō)低延遲重不重要。

面對(duì)數(shù)量激增的用戶和復(fù)雜的網(wǎng)絡(luò)環(huán)境,如何為觀眾提供更流暢的播放體驗(yàn),并且對(duì)直播類節(jié)目提供低延遲快速高效的內(nèi)容交付,已成為很多視頻平臺(tái)最關(guān)心,并且投入最多資源進(jìn)行改善的領(lǐng)域之一。

那么「分塊編碼」和「分塊傳輸」的「CMAF」到底是什么?

CMAF,一種全新的「容器」格式

隨著HTTP自適應(yīng)流媒體(HAS)技術(shù)的發(fā)展,視頻直播觀眾對(duì)OTT質(zhì)量和延遲提出了更高要求,甚至堪比傳統(tǒng)廣播電視節(jié)目。然而業(yè)內(nèi)通常認(rèn)為,HAS交付內(nèi)容不可避免會(huì)遇到端到端延遲,甚至可能長(zhǎng)達(dá)視頻片段時(shí)長(zhǎng)的數(shù)倍,自然無(wú)法比擬廣播電視效果。但這種觀點(diǎn)已經(jīng)站不住腳了,現(xiàn)在已經(jīng)有HAS解決方案能將這種端到端延遲降低到遠(yuǎn)低于一個(gè)片段時(shí)長(zhǎng)的程度,甚至可以讓整體延遲與片段時(shí)長(zhǎng)完全無(wú)關(guān),這個(gè)解決方案就是超低延遲CMAF(ULL-CMAF)。

CMFA(Common Media Application Format,通用媒體應(yīng)用程序格式)由標(biāo)準(zhǔn)化組織MPEG在2017年正式頒布,這種格式定義了一種碎片化的MP4容器,其中可以封裝視頻、音頻及文本數(shù)據(jù)。該格式最大的特點(diǎn)在于,能高效地讓HLS播放列表同時(shí)引用多個(gè)媒體片段和DASH清單,同時(shí)還在DASH ATSC3廣播配置文件的繼承方面實(shí)現(xiàn)了很多優(yōu)勢(shì),有助于進(jìn)一步降低延遲。

但簡(jiǎn)單來(lái)說(shuō),只使用CMAF片段還不足以降低延遲,CMAF容器還必須與編碼器、CDN以及客戶端行為完全匹配,在整個(gè)系統(tǒng)范圍內(nèi)實(shí)現(xiàn)低延遲。

圖1:CMAF的對(duì)象命名

分塊編碼,化整為零提效率

降低延遲的第一步是分塊編碼。按照MPEG CMAF標(biāo)準(zhǔn),CMAF軌道由多個(gè)對(duì)象組成,如圖1所示。「塊」是最小的可引用單位,其中至少包含一個(gè)moof 和一個(gè)mdat原子(Atom)。一個(gè)或多個(gè)塊組合在一起形成一個(gè)片段,而一個(gè)或多個(gè)片段還可進(jìn)一步組合成一個(gè)片段。

標(biāo)準(zhǔn)的CMAF媒體片段將使用一個(gè)moof 和一個(gè)mdat 原子進(jìn)行編碼,如圖2所示。其中mdat還包含一個(gè)IDR(Instantaneous Decoder Refresh,瞬時(shí)解碼器刷新)幀,每個(gè)片段開(kāi)頭都會(huì)有。

圖2:CMAF段的分塊編碼

雖然每個(gè)「分塊編碼」片段會(huì)包含一系列「塊」,即多個(gè)moof/mdat 元(Tuple)組成的序列,如圖2所示,但只有第一個(gè)元具備IDR幀。將片段分解為更短的碎片,這樣做好處在于編碼器能在編碼完成后立即輸出每個(gè)塊。塊數(shù)量相同的情況下,這種「提前」輸出的做法可顯著降低整體延遲。

分塊傳輸,合零為整降延遲

接下來(lái)需要考慮如何實(shí)現(xiàn)分塊傳輸。

圖3:HAS媒體分發(fā)系統(tǒng)

編碼器會(huì)使用HTTP 1.1分塊傳輸編碼機(jī)制,將編碼后的CMAF塊推送至源位置。例如,對(duì)于一個(gè)產(chǎn)生4s 30fps片段的編碼器,將每4秒發(fā)出一個(gè)HTTP POST請(qǐng)求(每個(gè)請(qǐng)求對(duì)應(yīng)一個(gè)片段),在接下來(lái)的4秒里,共有120個(gè)塊(每個(gè)塊時(shí)長(zhǎng)為33毫秒)構(gòu)成一個(gè)完整的片段,并發(fā)送至源位置。但編碼器并不會(huì)對(duì)每個(gè)單獨(dú)的塊發(fā)出一個(gè)POST請(qǐng)求。

接下來(lái),這個(gè)塊會(huì)通過(guò)拉取的方式到達(dá)播放器。播放器讀取清單或播放列表,了解內(nèi)容描述信息,隨后計(jì)算希望開(kāi)始播放的位置起點(diǎn),并向?qū)?yīng)片段發(fā)出請(qǐng)求。清單中必須列出片段數(shù)據(jù)的早期可用性。對(duì)于MPEG DASH,這是通過(guò)MPD@availabilityTimeOffset參數(shù)實(shí)現(xiàn)的。

圖4:視頻直播過(guò)程中,播放器的啟動(dòng)選項(xiàng)

我們可以用圖4所示過(guò)程為例,演示播放器起始播放算法對(duì)整體延遲的影響。這是一個(gè)會(huì)產(chǎn)生2秒片段的直播編碼器。圖中可見(jiàn),系統(tǒng)正處于產(chǎn)生片段5的過(guò)程中。對(duì)于不分塊解決方案,為了盡可能降低延遲,必須從上一個(gè)完整可用片段(片段4)開(kāi)始播放,這會(huì)導(dǎo)致整體延遲增加3秒。但如果使用每500毫秒(僅供示例,實(shí)際中分塊時(shí)長(zhǎng)遠(yuǎn)低于500毫秒)一個(gè)片段進(jìn)行分塊編碼,播放器就可從包含IDR的上一個(gè)塊(塊5a)開(kāi)始播放,此時(shí)延遲可降低至1秒。

此外,還有兩種方法可以進(jìn)一步降低延遲。首先,播放器可以下載塊5a和塊5,但在開(kāi)始播放前就從塊5a向前解碼塊5b,這樣可將延遲降低至500毫秒以內(nèi)。第二種方法,播放器可將播放過(guò)程延遲1秒,隨后在塊6a生成后立即發(fā)出請(qǐng)求,這樣也可以降延遲降低到500毫秒以內(nèi)。

ULL-CMAF前提要求總結(jié)

總的來(lái)說(shuō),只有在全部滿足下列要求的情況下,才能通過(guò)ULL-CMAF獲得穩(wěn)定的低延遲交付:

CMAF片段中的內(nèi)容是分塊編碼的;

編碼器調(diào)整DASH清單/HLS播放列表,以適應(yīng)并標(biāo)注自己使用了分塊編碼的方式,并借此告知數(shù)據(jù)的早期可用性;

編碼器使用HTTP 1.1分塊編碼傳輸機(jī)制將內(nèi)容推送至源分發(fā)位置;

CDN在分發(fā)鏈上的每個(gè)環(huán)節(jié),都使用HTTP分塊編碼傳輸機(jī)制傳播內(nèi)容,并最終到達(dá)客戶端;

而客戶端也需要全部滿足下列要求:

對(duì)片段請(qǐng)求進(jìn)行精確計(jì)時(shí),并在一個(gè)片段的有效時(shí)長(zhǎng)內(nèi)請(qǐng)求所需片段;

在收到比特流后立即解碼,而不要等待片段結(jié)束。瀏覽器中使用的HTML5播放器必須使用Fetch而非XHR API,因?yàn)镕etch可以在數(shù)據(jù)下載完成前立即讀取響應(yīng)的正文內(nèi)容;

具有估算吞吐量的方案,因?yàn)榇藭r(shí)無(wú)法使用標(biāo)準(zhǔn)的Segment-timing技術(shù);

緩沖區(qū)和自適應(yīng)邏輯必須能應(yīng)對(duì)非常低的緩沖;

由于吞吐量波動(dòng),能夠在滯后于現(xiàn)場(chǎng)的情況下立即「趕超」。

所以說(shuō)了半天,這種技術(shù)的效果到底如何?親自體驗(yàn)一下吧。請(qǐng)使用Google Chrome瀏覽器(其他瀏覽器可能無(wú)法支持)訪問(wèn):

http://mediapm.edgesuite.net/will/dash/lowlatency/low-latency-public-example.html

該演示使用由開(kāi)源FFmpeg生成的直播流,發(fā)布至Akamai Media Services liveOrigin?,并通過(guò)Akamai Media Delivery網(wǎng)絡(luò)交付,在客戶端使用開(kāi)源播放器dash.js播放。視頻流為AVC 720p編碼,碼率2Mbps,片段時(shí)長(zhǎng)6秒,每1幀的塊時(shí)長(zhǎng)29.97fps,availabilityTimeOffset設(shè)置為5.967秒,延遲目標(biāo)設(shè)置為2.8秒,視頻流在美國(guó)波士頓進(jìn)行編碼。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 解碼器
    +關(guān)注

    關(guān)注

    9

    文章

    1128

    瀏覽量

    40585
  • 編碼器
    +關(guān)注

    關(guān)注

    44

    文章

    3552

    瀏覽量

    133785
  • 編碼
    +關(guān)注

    關(guān)注

    6

    文章

    920

    瀏覽量

    54710

原文標(biāo)題:William Law:CMAF如何支持的超低延遲視頻直播

文章出處:【微信號(hào):livevideostack,微信公眾號(hào):LiveVideoStack】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    labview數(shù)據(jù)分塊

    我這里有一組數(shù)據(jù),是不斷采樣得到的,采樣率1000Hz,采樣點(diǎn)1000,我想要將每一次采樣得到的1000個(gè)數(shù)據(jù)進(jìn)行分塊處理,每次拿出來(lái)32個(gè)數(shù)據(jù)進(jìn)行運(yùn)算,相當(dāng)于每32個(gè)數(shù)分成一塊,一塊一塊的進(jìn)行處理運(yùn)算。這個(gè)應(yīng)該怎么處理。。。求大神解答,謝謝?。?!
    發(fā)表于 11-19 22:40

    CC2540 數(shù)據(jù)分塊處理怎么實(shí)現(xiàn)?

    CC2540 數(shù)據(jù)分塊處理怎么實(shí)現(xiàn)?用cc2540和ANDROID手機(jī)連接,在CC2540里做了一個(gè)5秒的數(shù)據(jù)處理,執(zhí)行的過(guò)程中模塊會(huì)和手機(jī)斷開(kāi)連接。猜測(cè)應(yīng)該是處理時(shí)間太長(zhǎng)達(dá)到了BLE通信的大間
    發(fā)表于 03-15 16:56

    如何把代碼分塊來(lái)寫(xiě)

    一、 在做題過(guò)程中要把代碼分塊寫(xiě),比如數(shù)碼管、按鍵等等。 二、 在比賽半小時(shí)之前是可以提前進(jìn)入考場(chǎng)的,在這段時(shí)間里,你要用最快速度把基礎(chǔ)模板敲出來(lái)(我的模板代碼一般分為初始化、數(shù)據(jù)處理、數(shù)碼管顯示
    發(fā)表于 07-20 06:32

    FPGA怎么對(duì)引腳進(jìn)行分塊?DDR3與FPGA的引腳連接

    FPGA如何對(duì)引腳進(jìn)行分塊?是由VCC的電壓不同進(jìn)行自行設(shè)計(jì)分塊?還是每個(gè)塊的引腳都是固定的?在進(jìn)行DDR3與FPGA的硬件連接時(shí),由FPGA的芯片手冊(cè)得采用SSTL_15電壓標(biāo)準(zhǔn),即VDDQ
    發(fā)表于 11-29 16:10

    分塊廣義對(duì)角占優(yōu)矩陣的條件

    根據(jù)塊對(duì)角占優(yōu)和廣義塊對(duì)角占優(yōu)矩陣的概念,在原有點(diǎn)H矩陣的基礎(chǔ)上,應(yīng)用分塊技術(shù),研究給出了分塊廣義對(duì)角占優(yōu)矩陣的一個(gè)簡(jiǎn)捷實(shí)用的充分條件和一個(gè)必要條件,推廣了相
    發(fā)表于 12-10 17:30 ?9次下載

    空間數(shù)據(jù)庫(kù)的分塊多級(jí)索引機(jī)制的研究

    為了解決常見(jiàn)的空間索引機(jī)制存在的不足,構(gòu)造一個(gè)高性能的空間索引機(jī)制,通過(guò)分塊的線性可排序四叉樹(shù)與空間范圍查詢相結(jié)合的方法,提出了基于空間數(shù)據(jù)庫(kù)的分塊多級(jí)空間
    發(fā)表于 01-15 16:32 ?15次下載

    分塊云計(jì)算簡(jiǎn)介

    分塊云計(jì)算簡(jiǎn)介 這篇文章沒(méi)有什么新奇觀點(diǎn),只是將我的思考與觀察做一個(gè)概括。   多年忽視分塊   即使過(guò)了16年,我依然
    發(fā)表于 04-12 09:52 ?1071次閱讀
    <b class='flag-5'>分塊</b>云計(jì)算簡(jiǎn)介

    分塊NSA在人臉識(shí)別上的應(yīng)用

    分塊NSA 方法首先對(duì)圖像矩陣進(jìn)行分塊,對(duì)分塊得到的子圖像矩陣再利用NSA進(jìn)行鑒別分析。這樣做有以下2個(gè)優(yōu)點(diǎn):1)能有效地抽取圖像的局部特征,對(duì)人臉表情和光照條件變化較大的圖
    發(fā)表于 08-15 10:37 ?28次下載
     <b class='flag-5'>分塊</b>NSA在人臉識(shí)別上的應(yīng)用

    C語(yǔ)言教程之分塊查找

    C語(yǔ)言教程之分塊查找,很好的C語(yǔ)言資料,快來(lái)學(xué)習(xí)吧。
    發(fā)表于 04-22 11:06 ?0次下載

    基于分塊DCT的自適應(yīng)視頻水印算法_蔣凱來(lái)

    基于分塊DCT的自適應(yīng)視頻水印算法_蔣凱來(lái)
    發(fā)表于 03-17 16:06 ?2次下載

    基于分塊顏色矩和灰度共生矩陣的圖像檢索_岳磊

    基于分塊顏色矩和灰度共生矩陣的圖像檢索_岳磊
    發(fā)表于 03-17 09:57 ?1次下載

    基于位串內(nèi)容感知的數(shù)據(jù)分塊算法

    針對(duì)基于內(nèi)容的可變長(zhǎng)度的分塊CDC算法中數(shù)字簽名計(jì)算需要耗費(fèi)大量CPU開(kāi)銷的問(wèn)題,提出了一種基于位串內(nèi)容感知的數(shù)據(jù)塊分塊算法。算法利用每一次失敗匹配嘗試所帶來(lái)的位特征信息,最大限度地排除不能匹配
    發(fā)表于 11-24 15:00 ?0次下載
    基于位串內(nèi)容感知的數(shù)據(jù)<b class='flag-5'>分塊</b>算法

    分塊式空間望遠(yuǎn)鏡波前探測(cè)與控制

    為了滿足高分辨率對(duì)地觀測(cè)的需求,突破運(yùn)載對(duì)望遠(yuǎn)鏡口徑的限制,需要采用分塊式望遠(yuǎn)鏡,而分塊式望遠(yuǎn)鏡的空間應(yīng)用對(duì)波前傳感與控制提出了極高的要求。建立了分塊式空間望遠(yuǎn)鏡光學(xué)系統(tǒng)模型,依據(jù)分塊
    發(fā)表于 01-23 15:58 ?1次下載

    如何通過(guò)CMAF提供海量并發(fā)的低延遲流媒體服務(wù)的

    Akamai擁有編碼器驗(yàn)證流程,并且目前擁有5個(gè)經(jīng)過(guò)CMAF超低延遲解決方案認(rèn)證的編碼器。相比之下,它有13個(gè)通過(guò)其當(dāng)前標(biāo)準(zhǔn)的10~12秒延遲媒體服務(wù)產(chǎn)品認(rèn)證的
    的頭像 發(fā)表于 10-15 15:49 ?3332次閱讀

    基于神經(jīng)網(wǎng)絡(luò)的循環(huán)程序分塊大小預(yù)測(cè)

    循環(huán)程序的優(yōu)化一直是程序優(yōu)化的重點(diǎn),循環(huán)分塊作為一種典型的循環(huán)程序優(yōu)化技術(shù)已被廣泛地研究和應(yīng)用。分塊大小的選擇對(duì)循環(huán)程序的性能有著重要影響,分塊大小的選擇復(fù)雜多變且高度依賴程序和硬件。傳統(tǒng)的靜態(tài)分析
    發(fā)表于 05-13 11:05 ?13次下載