所有的影音串流服務的營運單位都曉得,
日常的營運費用(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)來符合當下的軟硬體需求。