Netflix:為什麼建立專門的媒體數據庫?

本文解釋了Netflix建立專門的媒體數據庫的原因,包括精準的用戶推薦,極致的編碼以及更高效的實現創意。

文 / Rohit Puri

譯 / 王月美

原文:https://medium.com/netflix-techblog/the-netflix-media-database-nmdb-9bf8e6d0944d

想象一下,我們正在研究下一代自適應視頻流算法。我們的目標是最大限度地縮短全球數百萬Netflix會員的播放啟動時間。為此,我們需要收集ISO BMFF(基本媒體文件格式)格式化比特流的標題的聚合統計數據(包括最小值,最大值,中值,平均值,任意百分數)。Netflix轉碼集群為大量內容提供服務,併為每個內容生成大量的比特流(具有不同的編解碼器+質量組合)。在過去,我們需要編寫一次性腳本,以便在我們分析數據之前,以艱難的方式從比特流中抓取頭部信息。很顯然這種方法無法擴展——我們腳本中的軟件錯誤會將導致重置整個工作。

此外,當分析我們的媒體數據的另一個完全不同的維度時,還需要一個新的“一次性”腳本來處理。對於來自不同域的問題多次重複這種方法使我們意識到這裡存在一種模式,並讓我們建立一個以可擴展的方式來解決這個問題的系統。

這篇博客文章介紹了Netflix媒體數據庫(NMDB)——一種基於Netflix微服務平臺構建的高度可查詢的數據系統。NMDB用於在Netflix上持久保存有關各種媒體資產的技術元數據,並使用查找和運行時計算的組合近乎實時地提供查詢。NMDB使得開發人員(如視頻流研究人員)能夠將時間集中在對媒體數據洞察的開發上,並制定出令人驚歎的數據驅動算法,而不用操心收集和組織數據的任務。

為何選擇媒體數據庫?

優化的用戶界面,有意義的個性化推薦,高效的流媒體和大量內容是定義終端用戶在Netflix體驗效果的主要因素。需要將各種複雜程度的業務工作流程聚集在一起,以實現這種體驗。

Netflix:為什麼建立專門的媒體數據庫?

與故事相關的藝術品圖像和標題概要(見上圖),以及富有洞察力的視頻預覽在幫助用戶找到相關的節目和電影方面有很長的路要走。Netflix不斷擴大的內容攝取量規模,要求開發能夠幫助我們的創意團隊及時合成高質量數字商品資產的系統。例如,這可以通過向它們提供有意義的原始圖像和從源視頻資產中自動(或通過算法)提取視頻剪輯完成。這可以作為創建引人入勝的數字媒體資產的起點。

如下所示,內容推薦系統經濟地表達了針對最終用戶的內容偏好和品味。Netflix目錄中內容緊湊且有效的特徵表示對此功能是至關重要。例如,可以通過構建使用媒體文件(音頻,定時文本,視頻)以及標題元數據(類型標籤,概要)作為其輸入的機器學習模型。

Netflix:為什麼建立專門的媒體數據庫?

高效的音頻和視頻編碼方式可以更有效的利用比特流。對視頻時間和空間分析(例如,檢測鏡頭時刻和場景變化)以及識別視頻幀中的顯著的部分和對象有助於為視頻編碼系統生成關鍵信息。

Netflix:為什麼建立專門的媒體數據庫?

最後,在Netflix上保持對源內容質量的高標準對於終端用戶的體驗非常重要。上圖說明了一個這樣的用例。該圖像對應於來自西方古典類型的標題的視頻幀。這種情況下,在視頻中可以看到用於製作標題的相機。我們非常希望具有一種自動分析系統,該系統將檢測和定位(可能通過矩形邊界框)相機的存在。另一種這樣的情況如下圖所示。在該種情況下,字幕文本被放置在視頻呈現的文本頂部,導致這兩個文本都是不可讀的。而視頻文本檢測算法以及字幕的定時和定位知識可以用於自動解決該問題。

Netflix:為什麼建立專門的媒體數據庫?

我們需要注意的是,以上說明的看似完全不同的用例實際上與核心組件算法的使用重疊。例如,鏡頭變化數據對視頻編碼用例起著至關重要的作用。不同的鏡頭具有不同的視覺特性並且具有不同的比特預算。出於同樣的原因,鏡頭變化數據也是從源視頻資產中生成各種原始圖像和視頻剪輯的基本要素。通過從每個鏡頭中選擇最優秀的候選者,可以獲得高質量的原始藝術品候選者的集合。同樣,可以通過組合每個鏡頭表示來構造視頻媒體的有意義的潛在表示。

作為另一個示例,雖然視頻文本檢測數據在內容質量控制中起著非常寶貴的作用,但是對於視頻編碼和藝術品自動化用例也是有益的—包含大量文本的視頻幀通常不用作良好的藝術品圖像候選者。

此外,許多這些分析在計算上代價往往非常昂貴——在處理不同的業務用例時重複相同的計算是非常低效的。總之,這些原因共同構成了一個數據系統的論據,該數據系統可以作為與媒體時間軸相關的任何分析的通用存儲。換句話說,我們需要一個“媒體數據庫”。

媒體數據庫的特徵

媒體數據庫容納對應於不同模態媒體的媒體分析數據——這些媒體分析數據包括音頻,視頻,圖像和文本(例如:字幕)。期望在媒體時間軸上提供任意查詢。例如,音軌的時間線中的什麼時間間隔包含音樂,或者包含文本的視頻中的視頻幀列表,或者對應於對話的字幕文件中的時間間隔的集合。 鑑於其範圍的廣度,我們認為以下是媒體數據庫的重要特徵:

1、對結構化數據的親和力:具有模式的數據適用於基於機器的處理,因此可用於大規模分析和消費。在我們的案例中,架構合規性允許我們索引數據,這反過來又可以實現數據搜索和挖掘機會。此外,這就把數據的創造者從需要高端服務的消費者中解脫出來了。

2、有效的媒體時間線建模:服務從週期性的面向樣本的(例如,視頻幀)到基於事件的(例如,定時文本間隔)的各種類型的媒體時間線數據的能力是媒體數據庫的基本特徵。

3、時空查詢能力:媒體數據庫本地支持媒體數據的時間(例如,音頻軌道中的時間間隔)以及空間(例如,圖像的部分)特徵,並且在這些維度上提供高效查詢能力。作為示例,媒體數據庫使得檢查連續的視頻幀序列是否包含視頻幀的特定空間區域(如左上角)中的文本變得容易。這樣的查詢可以用於檢測視頻和字幕中存在的文本之間的衝突。

4、多租戶:精心設計的媒體數據庫可以用作支持來自多個應用的多個分析數據的平臺。 因此,它允許存儲任意數據,只要它是結構化的。另外,如果該數據也可以與媒體資源的特定時間間隔相關聯,則每個租戶可以從我們系統的有效查詢能力中受益。

5、可擴展性:可擴展的基於微服務的模型至關重要。這意味著系統必須解決各種負載情況下的可用性和一致性的相關問題。

NMDB介紹

上面概述的用例激發了我們構建NMDB——一種通用存儲,用於與媒體時間軸相關的任何分析,可用於在媒體時間軸上大規模回答時空查詢。Netflix目錄包含大量不同形式的媒體資產——靜態資產的示例包括圖像,可播放資產的示例包括音頻,文本和視頻。如上所述,無數業務應用程序可以從訪問與這些資產相關的深入語義信息中受益。 NMDB的主要目標是提供這些應用程序所需的必要數據—我們將NMDB視為構成各種Netflix媒體處理系統主幹的數據系統。

媒體時間軸數據的高效建模是NMDB的核心特徵。媒體時間軸的規範表示可以支持大量用例,同時有效地解決用戶查詢模式。這構成了本系列下一篇文章的主題。


分享到:


相關文章: