CMAF 的提出,還無解的 Video Streaming 的規格聖戰
所有的影音串流服務的營運單位都曉得, 日常的營運費用(OPEX)支出裏頭, 前三大的是支出分別是: 內容版權費 流量費 人事成本 內容版權費是大老闆與首席內容官(Chief Content Officer)的事; 人事成本是營運長(Chief Operation Officer)與研發主管的事; 至於流量費嘛(以及與它高度相關的儲存空間費用), 我們都曉得這是影音服務有別於其它網路業的最大支出。 流量費也是這一篇 blog 或這個 CMAF 標準在關心的議題。 從多媒體技術的觀點來看的話,現在的影音串流服務是怎麼做到的呢? 以我微薄的知識與見聞來看,目前成熟的技術市場,大概是有以下的幾塊: (Adaptive) streaming protocols: MPEG-DASH, HLS, HDS, MSS, RTMP, … Container format: MP4, fMP4, TS, MOV, … Video codec: H.264, HEVC, VP9, … DRM: PlayReady, Widevine, FairPlay, … Caption: SRT, WebVtt, … Ad: VAST, VPAID, … 以一家有點規模, 平台有至少包含 Android, iOS, Web, STB, … 的 VOD (Video-on-Demand)服務來看, 一部影片,會因為上述的 1, 2, 4 這三點,少則要準備個 2 份,多則要個 3, 4 份。 然後 1 份裏頭,又會因為有 adaptive streaming 而有很多的 profiles, 然後一個 profile 又可能因為 media segmentation 而有很多的檔案。 以一部 60 分鐘的影片,10 個 profiles,5 秒為一個 media segment 來看: video duration: 1 hour segment duration: 5 seconds adaptive profiles: 10 (audio and video) media segments: 60 * 60 * 10 / 5 = 7,200 一份會有 7,200 個檔。 如果來個 3, 4 份的話,就是會有 21,600 ~ 28,800 個檔案。 這對於儲存空間來說,是一筆支出,但更嚴重的,是對於流量的支出。 原本,一部影片,CDN 只要 cache 個一份, 現在因為上述的原因,變成要 cache 個兩三四份,糟透了。 理論上,網路流量的支出是要高於儲存的支出的,而且高很多。 除非,你在經營一家沒有人看的影音服務… 2015 ~ 2016 年之間,兩大巨頭,Microsoft & Apple,坐下來談一件事。 他們針對上述的問題,做了初步的努力,這個產物就是 CMAF (Common Media Application Format)。 CMAF 繼續了 MAF 的特性(或說是美德也行), 它並沒有定義任何新的技術或規格, 相反的,它是基於現在的技術規格下, *挑選(或限制)*出了一些規範(ex, profiles)來符合當下的軟硬體需求。 ...