Netflix 如何利用開源軟體打包視頻流

2022-01-02 InfoQ

本文最初發布於 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/vgeSMelaCjuadyJp7Olu

InfoQ 讀者交流群上線啦!各位小夥伴可以掃描下方二維碼,添加 InfoQ 小助手,回復關鍵字「進群」申請入群。回復「資料」,獲取資料包傳送門,註冊 InfoQ 網站後,可以任意領取一門極客時間課程,免費滴!大家可以和 InfoQ 讀者一起暢所欲言,和編輯們零距離接觸,超值的技術禮包等你領取,還有超值活動等你參加,快來加入我們吧!

相關焦點

  • 架構師經常參考的Netflix架構,它的全貌是怎樣的?
    根據視頻解析度和音頻質量,每個電影被編碼成超過 50 個不同版本存儲在不同的 EC2 上。 亞馬遜上存儲了超過1PB的數據。 這些數據被發送到 CDN 以將內容就近提供給各地的 ISP。Netflix 在後端使用了一些開源軟體,包括 Java,MySQL,Gluster,Apache Tomcat,Hive,Chukwa,Cassandra 和 Hadoop。
  • Netflix的牛逼是如何煉成的?
    Netflix已經開源的許多基於全球PaaS平臺下的組件以提供在雲端的創建和運行高可用服務的最佳實踐。Netflix已經成為Acme Air的一家技術供應商(Acme Air這個產品採用了Netflix OSS的技術,特別是Karyon, Eureka, Hystrix和Ribbon)ps:full set of NetflixOSS components is at http://http://netflix.github.io。
  • 值得關注的開源軟體推薦
    先來看看,如何去尋找開源軟體,我這裡介紹一個可能是最有效的方式:通過 GitHub 上 Awesome 和 GitHub Topics 的方式去獲得,它們已對一些流行熱門的開源軟體做了梳理和篩選,方便你的選擇。這裡的開源軟體數量足夠你在整個職業生涯中去了解、學習和實踐的,而且還在持續增加中。這麼多開源軟體,我們怎麼選?
  • 關於截圖、錄屏、配音、配樂的開源免費軟體
    在折騰的過程中,尋找和發現了一些好用而且免費的開源軟體和資源,可以用來截圖、錄屏、配音和配樂。在這裡與大家分享,希望能有更多人關注、使用和支持這些開源軟體,也作為對開源作者的一種感謝。這個軟體的主打功能其實是多視頻/音頻流的實時合成、特效處理以及流媒體推送。如果只是拿來錄製屏幕視頻,其實有些大材小用。但對於喜歡鑽研,以「折騰」為樂趣的同學,非常推薦。對於有複雜視頻編輯需求,比如需要同時錄製多個視頻、音頻來源,或者需要做音視頻實時流推送的話,那麼這款軟體就是神器了。推薦程度:一般推薦。
  • 軟體時代|開源,希冀還是噩夢?
    陳舊的硬體思維以及對車載軟體的大量外包都使得傳統車企的工程師確實無需在開發者社區中共享其技術經驗或基礎軟體包,也缺乏足夠動力透過開發者社區和開源社區進行持續學習。 如今,隨著車載軟體在整車研發中佔據越來越大的比重,對於開發者社區以及開源模式的缺乏重視,正在成為阻礙傳統車企加速軟體化和智能化轉型的攔路虎之一。
  • 構建 Netflix 分布式追蹤(tracing)體系
    這個過程從手動拉取作 session 的用戶帳戶信息開始,並將所有的拼圖碎片放在一起,希望由此產生的全景能夠幫助解決用戶問題。因此需要通過分布式請求追蹤系統來提高生產力。如果我們為每個流 session 提供一個ID,那麼分布式追蹤就可以通過提供服務拓撲、重試和錯誤標籤以及所有服務調用的延遲測量來輕鬆重建會話失敗。
  • 芯原汪志偉:基於芯原IP的高性能視頻轉碼晶片和開源軟體方案
    集微網消息,芯原副總裁,系統平臺解決方案部總經理 汪志偉在ICCAD 2020同期舉行的「IP與IC設計」專題論壇上發表主題為《基於芯原IP的高性能視頻轉碼晶片和開源軟體方案》的演講。與高端CPU方案相比,芯原視頻轉碼晶片模塊擁有6倍轉碼能力,但功耗僅有1/13,且尺寸也大幅縮小。汪志偉指出,芯原領先的視頻轉碼IP和定製化ASIC使整個系統的視頻轉碼能力提高36倍,功耗降低50%。基於芯原IP的視頻轉碼方案設計包含2套視頻編碼和解碼器,多種視頻格式轉碼引擎。
  • 《來實戰》之智能車開源項目01期:一起開源吧!(含先導片)
    支持:電路城的美國兄弟工程師交流平臺hackaday和摩爾吧視頻平臺(moore8),提供部分項目版權和平臺支持。我們也誠意邀請了中國一批頂尖本土創客大神和資深硬體產品設計師,擔任我們的項目導師。同時,我們也正在聯合相關的器件、工具供應商和分銷商夥伴,為項目做出貢獻的傑出成員提供可能的福利和支持。
  • Linux內核之旅參與開源軟體供應鏈點亮計劃暑期 2020 項目活動
    Linux內核之旅開源社區的社區負責人梁金榮和社區項目負責人趙晨雨參與開源軟體供應鏈點亮計劃暑期
  • 媒體評熱門開源軟體Top100 17173技術大俠上榜
    做開源中國六年有餘,這六年時間國內的開源蓬勃發展,從一開始的使用到貢獻,到推出自己很多的開源軟體,而且還有很多軟體被國外的認可。中國是開源不可忽視的力量。而我們這個榜單也是從這些國人開發、主要參與開發或者基於國外開源軟體進行改進並形成獨立版本的軟體中,根據該軟體的訪問、收藏、下載等多個角度, 從而得出前 100 名最受歡迎的開源軟體。
  • GitHub 左右為難:軟體侵權,但開原始碼合法,責任由誰來負?
    於是,Popcorn Time 這一開源項目為這一部分人群提供了便利,它能夠指向盜版站點、盜版 API 和盜版洪流跟蹤器的連結,這些連結用於下載盜版電影和電視節目。也正因如此,Popcorn Time 成為了電影公司的眼中釘、肉中刺。
  • 開源軟體和OpenSSL的真實故事到底是什麼樣的?
    我想聊聊開源軟體的模式和 OpenSSL 存在的問題,以及到底誰在捍衛我們的隱私。我也會寫到在「心臟出血」這個漏洞從發現到公布的過程中,驚心動魄和爭分奪秒的故事,這個過程暴露出 OpenSSL 嚴重的管理問題,先從開源說起。開源是一種商業模式開源組織並不是沒有捐款就沒法生存的組織。
  • 福利 | OBS Studio--免費且開源的用於視頻錄製以及直播串流的軟體大版本更新
    :OBS Studio(OBS工作室版),免費且開源的用於視頻錄製以及直播串流的軟體。實時高性能的視頻/音頻捕捉與混合,以及無限的場景模式使您可以通過自定義實現無縫轉換。2. 為視頻源設計的濾鏡例如圖片蒙版,色彩校正,色度/色彩鍵控以及更多。
  • Netflix首次遭遇全球大規模宕機,目前原因未知
    作為美國流媒體巨頭,世界上最大的收費視頻網站,Netflix 出了不少高質量的影視劇,吸引的觀眾數量呈指數級增長。但迄今為止,Netflix 都能 hold 住場面,其伺服器還沒有遭受什麼重大中斷。也就是說,6 月 11 日的服務中斷是 Netflix 首次遭受全球大規模宕機事故。
  • Netflix系統架構
    Netflix是全球最大的在線視頻網站之一,它是怎麼設計的呢?這篇文章介紹了Netflix系統架構的設計方案。原文:Netflix System Architecture[1]我們來討論一下如何設計Netflix。
  • B 站 up 主開源視頻字幕自動翻譯神器!
    如果你回答「是」,那麼今天 推薦的這款開源工具,興許能拯救你於水深火熱之中。不久前,一位朋友突然給我分享了一個 B 站視頻,起初我沒怎麼在意,不料當我到了晚上打開一看的時候,心情立刻變得激動萬分,這 TM 的就是我夢寐以求的翻譯神器啊!並且它還是開源的!在稍作整理之後,小 G 打算今天好好跟大家介紹一下。
  • Netflix,英語學習者的絕對標配!
    我問他從加拿大回港後如何保持英語高水準的。他告訴我:除了一周的全英語授課和上下班通勤時間聽香港的英文電臺外,Netflix是其中最重要的部分之一。每晚他將孩子哄睡後,就會欣賞netflix的劇集1到2個小時,真是大快朵頤。
  • MystiQ:一個自由開源的音視頻轉換器 | Linux 中國
    MystiQ 是一款全新的開源視頻轉換工具,適用於 Linux 和 Windows。
  • 開源:用To C時代網絡效應的打法做To B基礎軟體
    因此,商業化的核心問題就是,如何框定這個邊際成本為0的範圍,如何選擇最適合的互補品,如何對互補品定價。 之所以開源目前講的都是軟體,本質上是因為代碼使用的邊際成本幾乎為0,100個人用和10000個人用,對於軟體開發者來說,成本是幾乎相同的。
  • 免費開源鋼琴學習用數字軟體FreePiano簡體中文版Ver 2.2.2.1安全推薦
    播放示範樂曲:現在,您可以通過打開軟體包自帶的示範曲目來了解如何用電腦鍵盤演奏音樂。錄音和分享:如果您已經能熟練地演奏樂曲了, 那麼恭喜您;現在,您肯定迫不及待地想把您努力學習的成果展示給自己的朋友們看,當然您可以演奏給他們聽,您還可以在軟體內錄音,然後導出成MP4視頻,這樣就可以放到自己的手持設備中,甚至上傳到公共的視頻網站上與大家一起分享。