本文最初發布於 Netflix 技術博客,經授權由 InfoQ 中文站翻譯並分享。
在之前的博文中,我們在 Netflix 的同事解釋了如何優化 4K 視頻流,如何改進傳統視頻流,以及最近的,如何使用新的音頻編解碼器為我們的會員提供更好的聽覺體驗。在所有這些情況下,在通過內容分發網絡 Open Connect 傳送之前,我們需要對那些屢獲殊榮的電視節目、電影和紀錄片(如《王冠》)進行打包,以便可以為我們的會員提供一些關鍵特性。在這篇文章中,我們將解釋這些特性以及我們如何依靠獲獎的標準格式和開源軟體來實現它們。
在典型的流管道中,打包是在編碼之後進行的步驟,如下圖所示。編碼器的輸出是一個字節序列,稱為基本流,要對它進行解析需要了解基本的流語法。例如,檢測 AV1 視頻流中的幀邊界需要能夠解析所謂的開放比特流單元(OBU)並識別時間分隔符 OBU。但是,在客戶端設備上執行的高級操作,例如搜索,則不需要了解基本語法,並且可以從編解碼器無關的格式中受益。打包步驟旨在產生這樣一種與編解碼器無關的字節序列,稱為打包格式或容器格式,在某種程度上,無需深入了解編碼格式就可以對其進行操作。
圖 1:流預備管道的簡化架構
在播放音頻、視頻和定時文本時,我們應該為會員提供的一個關鍵功能是同步。在 Netflix,我們努力提供一種體驗,讓你永遠不會在聽到《王冠》中相應的對話之前,看到英國女王的嘴唇在動。同步是通過信號的基本元素來實現的,比如在打包內容中提供的時鐘或時間線、時間戳和時間刻度。
會員不是簡單地從頭到尾觀看節目。當繼續觀看《布裡奇頓》時,他們會搜索。他們在觀看《女王的棋局》時會重放他們最喜歡的棋局。當他們迫不及待地觀看《亞森·羅賓》時,他們會跳過介紹和回顧。他們會在觀看互動節目《你與荒野》時回放。由於音頻或視頻壓縮技術的性質,播放器不可能從會員想要的地方開始解碼流。其底層機制是,播放器必須在流中找到可以開始解碼的點,並儘可能快地解碼,找到用戶的搜索點之開始播放。這是打包的另一個基本特性:信號幀類型,特別是隨機接入點。
當會員的孩子在父母的汽車後座上觀看《神偷卡門》時,或者更一般的來說,當網絡吞吐量變化時,我們運用了自適應流媒體技術來提供這種網絡條件下最佳的觀看體驗。自適應流媒體技術要求在對各種質量的流進行編碼時遵循共同的約束條件,但它們也依賴於打包的另一個關鍵特性「索引」來提供無縫的質量切換。索引讓播放器可以只獲取新流的相應片段。
我們在打包的內容中提供了許多其他的信號元素,以期讓會員可以儘快開始觀看。解密模塊需要用合適的方案和初始化向量進行初始化。硬體視頻解碼器需要提前知道視頻流的解析度和位深,以便分配解碼緩衝區。渲染管道需要提前知道音頻流的揚聲器配置,或者視頻流是 HDR 還是 SDR。能夠標記所有這些元素也是現代打包格式的一個關鍵特性。
我們的 2 億多會員在各種各樣的設備上觀看 Netflix,從智慧型手機到筆記本電腦,再到電視和由大量合作夥伴開發的許多其他設備。我們要減少在新設備上播放的阻力,並確保我們的內容在很長一段時間內可以在舊設備上播放,這非常重要。標準在這裡發揮了關鍵性的作用。ISO 基本媒體文件格式(ISOBMFF)是娛樂行業的關鍵打包標準,最近獲得了美國國家電視藝術與科學學院(NATAS)頒發的技術與工程艾美獎®。
ISOBMFF 提供了上面提到的所有關鍵打包特性,而且歷史已經證明,它是通用且可擴展的,它具備添加新信號特性和編解碼器支持的能力。使用成熟編解碼器(如 AVC 和 AAC)編碼的流可以通過 ISOBMFF 文件傳輸,但該規範也會定期擴展,以支持最新的編解碼器。Netflix 的媒體系統團隊積極致力於 ISOBMFF 的開發、維護和採用。例如,Netflix 主導了 ISOBMFF 中 AOM AV1 視頻流的傳輸規範。
經過 20 多年的發展,ISOBMFF 為各種用例積累了大量的技術工具。圖 2 通過「brand」的概念說明了現如今 ISOBMFF 的複雜性,這個概念類似於音頻或視頻標準中的配置文件。最初,該標準有限且可以良好地嵌套,但現在已經非常廣泛,並向各個方向發展。
圖 2:說明 ISOBMFF 第 6 版的複雜性。每個矩形代表一個「brand」(由粗體的四字符代碼表示)和它所需的工具集(由「+」號行表示)。Brand 是嵌套的。所有內層 brand 的工具都是外層 brand 所需要的。對於 Netflix 的流媒體服務,我們依賴於由公共媒體應用程式格式(CMAF)標準確定的這些工具的一個子集,以及公共加密(CENC)標準中定義的內容保護工具。
像 ISOBMFF、CMAF 和 CENC 這樣的多媒體標準都有相應的開源軟體實現。開源軟體可以示範該標準的特性,使行業了解其好處並擴大其採用範圍。開源軟體還可以通過中立的參考實現來突出可能存在的歧義條款,從而幫助提高標準的質量。Netflix 的媒體系統團隊為 SMPTE IMF 標準維護了一個名為 Photon 的開源參考實現。對於 ISOBMFF, Netflix 使用了來自 GPAC 團隊的開源參考實現 MP4Box。
在這個由標準和開源軟體組成的打包生態系統中,媒體系統團隊的工作包括從現有標準中找出工具來解決新的流媒體用例。當這樣的工具不存在時,我們就定義新的標準或擴展現有的標準,包括 ISOBMFF 和 CMAF,並支持開源軟體來匹配這些標準。例如,當我們的視頻編碼同事設計了動態優化的編碼方案,用於製作具有可變時長的流片段,我們修改了工作流程,以確保具有不同比特率的視頻流段在時間上保持一致。類似地,當我們的音頻編碼同事引入 xHE-AAC 時(這就打破了以前每個音頻幀都可解碼的假設),也就保證了音頻 / 視頻片段的一致性。最後,當我們希望幫助業界匯聚到一種用於新視頻編解碼器(如 AV1)的通用加密方案時,我們就協調討論選出方案,這裡是基於模式的子樣本加密(簡稱「cbcs」),並通過提供參考位流作出示範。當然,我們的工作也包括在在沒有適當標準支持的領域處理許多類型的設備。
我們希望這篇文章能讓你更好地了解 Netflix 媒體系統團隊的部分工作,希望下次你觀看我們的獲獎節目時,會發現 ISOBMFF 所發揮的作用,這是一項關鍵的獲獎技術。感興趣的話,你可以了解下這個團隊其他方面的工作,看看其他獲獎的技術,比如 TTML,我們用它來製作日語字幕。
Packaging award-winning shows with award-winning technologyhttps://www.infoq.cn/article/vgeSMelaCjuadyJp7OluInfoQ 讀者交流群上線啦!各位小夥伴可以掃描下方二維碼,添加 InfoQ 小助手,回復關鍵字「進群」申請入群。回復「資料」,獲取資料包傳送門,註冊 InfoQ 網站後,可以任意領取一門極客時間課程,免費滴!大家可以和 InfoQ 讀者一起暢所欲言,和編輯們零距離接觸,超值的技術禮包等你領取,還有超值活動等你參加,快來加入我們吧!