當前位置:網站首頁>什麼是Per-Title編碼?

什麼是Per-Title編碼?

2022-07-23 14:42:06LiveVideoStack

圖片

▲掃描圖中二維碼了解音視頻技術大會更多信息▲


翻譯、編輯:Alex

技術審校:趙軍

本文來自OTTVerse,作者為Krishna Rao Vijayanagar。

Easy-Tech #036#

Per-Title(按主題)編碼 是指為了節省碼率、存儲空間以及ABR傳輸帶寬為每部電影(基於其獨特的空間和時間屬性以及複雜度)調整ABR碼率階梯(bitrate ladder)。換言之,Per-Title編碼的目的就是根據電影特點(慢動作、體育、動畫、卡通內容等)為每部電影生成一組不同的編碼或者壓縮參數。

接下來,我們將了解Per-Title編碼所涉及的編碼過程以及它為流媒體提供商帶來的優勢。

什麼是Per-Title編碼?從哪裏開始?

最早提到Per-Title編碼的地方是Netflix的博客,隨後IEEE發錶了名為“Complexity-based consistent-quality encoding in the cloud(《雲上基於複雜度的穩定質量編碼》”的論文。該論文的摘要中有一句話很有趣:

為了生產最佳質量的視頻流,系統需要使編碼適應每條內容(以一種自動、可擴展的方式)。在本篇論文中,我們描述了兩個算法優化,用於基於雲的分布式編碼管道,它們分別是:(1)針對碼率-分辨率選擇的Per-Title複雜度分析;(2)針對穩定質量編碼的Per-chunk碼率控制。相對於簡單的“一刀切”的編碼系統,這些改進帶來了很多優勢,包括更高效的帶寬使用和更穩定的視頻質量。

上文這句“為了生產最佳質量的視頻流,系統需要使編碼適應每條內容”很好地總結了Per-Title編碼。

編碼器需要“理解”每一個視頻內容,並調整壓縮設置和參數與之適應,這樣就有可能達到最佳視頻質量。

| 傳統的ABR和壓縮過程發生了什麼?

在使用ABR技術的傳統視頻傳輸方法中,一般是創建一個碼率階梯(或者一組profile),並將其應用於內容庫中的所有電影。關於ABR技術的更多介紹,請閱讀這篇文章:理解ABR及其工作原理

比如,碼率階梯有一個6mbps 1080p的profile,並應用到了所有的分類——無論是動漫、體育還是脫口秀。

然而,這種方法存在一個問題:每部電影的特點和複雜度並不相同。

所有電影看上去都不一樣:

有些電影擁有快速動作場景(體育比賽、動作片),有些在動作上較慢(《肖申克的救贖》)。有些動畫片比較簡單(《辛普森一家》),有些卻擁有高度細節(《玩具總動員》)。所有電影都有它自己的“基因”和特點,所以每部制作出來的電影都與眾不同。

那麼,為什麼都要以相同方式壓縮電影,使用相同編碼器設置並使用相同碼率階梯進行ABR視頻傳輸呢?

讓我們來看看下文中來自《辛普森一家》、足球比賽和Park Joy測試序列的三張截圖,它們看起來都不一樣,是吧?

圖片

容易壓縮!

圖片

真的很難壓縮!

圖片

因為視頻中出現了水、草和樹葉,也很難壓縮!

現在,上述這些例子依賴於你對於視頻質量優劣的主觀判斷。讓我們看下Netflix技術博客上的數字實驗。下方的RD圖描述了不同序列在不同目標碼率下的碼率與視頻質量 (PSNR)。

看看圖中的變化有多大!在5000 kbps,一些序列擁有高達45 dB甚至更高的PSNR分值,而其他序列只有36 dB。這清楚地錶明:沒有兩個視頻是相同的,應該根據它們各自的特點來進行處理。

用更專業的術語來說就是,這些視頻的時空複雜度及其特征之間存在差异,所以利用這一點來有效壓縮視頻會是一個好主意。

圖片

來源:Netflix博客[1]

因此,Per-Title編碼就是從一個視頻變化到(或適應)另一個視頻的編碼。

使用Per-Title編碼,哪些變量是可以改變的?

使用Per-Title編碼時,很多編碼和傳輸參數都會發生變化,比如:

碼率階梯中的分辨率選擇: 某些title可能會生成720p的質量內容(看上去也很棒),對於這類視頻,你也許不必將它切換成更高質量內容的1080p。

每個分辨率所選擇的碼率: 這是Per-Title編碼中最重要的部分。如果你必須生成一組視頻分辨率(1080p、720p等),那麼你可以為其中每個分辨率改變碼率。也就是說,你會發現自己可能不是在6mbps時生成1080p的視頻,而是在3mbps生成1080p,並達到相同的視頻質量!

碼率階梯中的profile數量: 這是Per-Title編碼的又一大優勢。通過變換碼率-分辨率組合,也許能够减少你需要在碼率階梯中產生的profile數量。

在使用Per-Title編碼時,其參數的範圍更大。在更精細的層面,你可以研究編碼器設置並對它們進行調整:

  • 過濾器的强度

  • GOP長度

  • 啟用和禁用二分之一像素或者四分之一像素運動估計

  • 運動估計的搜索範圍

  • GOP結構(P幀與B幀的比率)

以及更多取决於如何設置視頻編解碼器。這裏的首要重點應該是了解你的視頻複雜度,視頻編解碼器的能力,以及如何結合你所有的數據和視頻智能分析來有效壓縮視頻。

如何實現Per-Title編碼?

Per-Title編碼最重要的特點就是它能够“理解”一部電影的複雜度、其中的場景和變化等。方法就是:通過收集電影信息和統計數據,並使用這些數據進行壓縮。

這就使我們需要了解多遍編碼(multi-pass encoding)的概念,其中第一遍(或者第N 遍)被用來收集電影相關信息。在最後的第M遍,使用這些信息來編碼視頻。

哪些信息對理解電影複雜度有所幫助?讓我們來看看:

全局速度或運動矢量: 它將告訴我們場景移動的速度,可以被用來區分脫口秀(其中沒有人移動)和美國職業橄欖球比賽(充滿快速攝像機的移動)。

空間複雜度: 電影中的大部分畫面是像《辛普森一家》中的純色塊?還是充滿了年代電影中那種複雜的圖案?

時間複雜度: 想要理解電影內容如何快速地從一幀切換到另一幀,這又與上文中的全局運動向量和速度有關。

這些都是非常重要的視頻特點,它們决定了如何在確定的比特預算前提下有效壓縮視頻。簡單來說就是,如果你了解你的視頻屬性,你就可以調整編碼器設置從而達到最佳視頻質量(比如被要求壓縮視頻到x mbps)

所以,在你收集了這些信息以後,你就可以在視頻編解碼器上執行另一個pass來將視頻壓縮到正確碼率(由你的凸包算法决定)。

Per-Title編碼的優勢

執行Per-Title編碼擁有許多優勢,比如:

節省存儲空間: 通過使用Per-Title編碼改變碼率和分辨率,你可以高效壓縮視頻,且節省很多存儲空間。

節省傳輸成本: 因為每個被編碼的title都使用了一個最適合它的碼率階梯,所以你馬上就會看到CDN傳輸成本的節省。除此之外,終端用戶也將下載較小的文件,以此减少緩沖的發生和首屏延遲。

節省編碼時間: 再者,由於編碼階梯會為每部電影而單獨調整,你可以很容易地看到編碼時間的節省。比如,如果我們不使用1080p編碼《辛普森一家》的片段,而是使用720p並獲得了相同視覺質量,那麼分辨率的下降會提昇編碼器的速度。這主要是因為分辨率的下降導致運動估計和補償算法的工作减少了。

提昇質量: 通過調整每部電影或者每個主題的編碼器、分辨率、碼率、幀率以及其他設置,你可以充分利用編碼器,並獲取最佳視頻質量。這將會帶來很棒的用戶體驗!

因此,通過切換到Per-Title編碼方案,你可以節省大量存儲、傳輸和編碼時間上的成本。

今天就到這裏,我們下次再見,保重!Happy streaming!

注釋:

[1] https://netflixtechblog.com/per-title-encode-optimization-7e99442b62a2

致謝:

本文已獲得作者Krishna Rao Vijayanagar授權翻譯和發布,特此感謝。

原文鏈接:

https://ottverse.com/what-is-per-title-encoding/


圖片

版權聲明
本文為[LiveVideoStack]所創,轉載請帶上原文鏈接,感謝
https://cht.chowdera.com/2022/204/202207230918028960.html

隨機推薦