為 Capped CRF 編碼選擇最佳 CRF 值

Yujiaao發表於2021-12-28

為 Capped CRF 編碼選擇最佳 CRF 值

揚·奧澤
2020 年 2 月 3 日

在一個充滿不穩定壓縮文章的部落格中,這可能是所有文章中最不穩定的文章。如果您不使用封頂 CRF 編碼,或考慮使用相同的編碼,則幾乎肯定不會對它感興趣。但是,如果您使用上限 CRF 編碼(用於恆定速率因子),您幾乎肯定會發現它很有趣,甚至可能很有啟發性。

快速背景說明。去年年底,我諮詢了一家大型 OTT 商店,該商店對編碼階梯中的頂級檔案使用了 CRF 值為 19 的上限 CRF 編碼。下面顯示的大部分分析都是針對這個客戶的(他批准了我在一篇文章中的討論)。我還沒有寫這篇文章,因為我覺得它對大多數讀者來說太晦澀了。

然而,今天早上,我從 Vimeo 下載了一個視訊,並注意到它們使用 CRF 值為 20 的上限 CRF 進行編碼,您可以在下面的 MediaInfo 中看到。為什麼我在玩 Vimeo?因為他們在幾個月前大張旗鼓地承諾,他們將使用 AV1 編解碼器對產品選擇進行編碼。我會定期下載一個檔案,看看是不是這樣;到目前為止,還沒有 AV1 編碼。這並不意味著 Vimeo 不使用 AV1,可能是我的下載工具根本沒有捕獲 AV1 編碼。

但是,我確實注意到 Vimeo 使用的是 CRF 20,恕我直言,這是次優的,並促使本文復活。沒有對 Vimeo 的不尊重,他擁有一支出色的編碼專業團隊。但這就是我的想法以及原因。

image.png

作為背景,大多數製作人使用封頂capped CRF 作為 DIY per-title 按標題編碼技術。當您使用 CRF 和無上限進行編碼時,FFmpeg 會優先考慮質量而不是位元率,並改變位元率以提供指定的質量,範圍從 1 到 51,較低的數字提供更高的質量。請參閱此處以獲取對包括 FFmpeg 命令列在內的封頂 CRF 的完整說明。CBR 和 VBR 編碼相反,並調整質量以滿足指定的資料速率。

當然,您不能將僅 CRF 編碼用於流媒體,因為限制資料速率是可交付性的關鍵。因此,您新增上限或最大位元率。要生成上限 CRF,您需要指定 CRF 值以及最大速率和緩衝區大小,它們也在上面的 MediaInfo 螢幕中突出顯示。本質上,Vimeo 告訴 FFmpeg 編碼為 20 的 CRF 值,最大速率為 5500,VBV 緩衝區為 15000(有關 VBV 緩衝區的更多資訊,請參見此處)。

我下載的檔案之一是 Light Speed,它顯示在下面的 Bitrate Viewer 中。您會看到平均位元率約為 4664 kbps,但平均資料速率(由淡藍線顯示)大部分時間都在 5 Mbps 以上。當線下方有足夠的空間時,如那些由 CRF 控制的線所指向的區域,這意味著 CRF 正在設定質量級別。當資料速率被推向 5.5 Mbps 時,這是強制執行限制的上限。

image.png

視覺化封頂 crf 編碼

使用 CRF 20 有什麼問題?好吧,如果您不關心在頻寬上花費太多,那就沒什麼了。但是,如果您使用上限 CRF 來減少易於編碼的視訊的頻寬,您可能可以使用更高的值(並提供略低的質量)並在沒有人注意到的情況下減少頻寬。

VMAF 93 = 足夠好

VMAF 上的幾個點,我後面會提到。首先,作為 RealNetworks 的 CTO Reza Rassool 在這裡構建的,93分 的 VMAF 得分意味著“絕大多數觀眾 會發現內容 要麼與原始內容無法區分,要麼有明顯但不煩人的失真。” 因此,如果您的分數為 93 – 95,則您的視訊可能“足夠好”。如果它更高,那麼您就是在花錢來提供沒人會注意到的額外質量。

關於 VMAF 的另一點是,使用 CRF 23 和 x264編碼在我的書 Video Encoding by the Numbers 中使用的測試視訊中的 VMAF 平均得分為 95.96,如下表所示。因此,如果您使用 CRF 20,幾乎可以肯定您提供的 VMAF 質量高於 93-95(因為較低的 CRF 值提供更高的質量)。這意味著您分發的所有視訊的資料速率可能太高,或者至少比它需要的要高。

您可以在下表中看到這一點,其中顯示了以 CRF 19 編碼的大多數相同剪輯,上限為 5 Mbps。資料速率主要由 CRF 值控制的易於編碼的視訊的 CMAF 分數為 96.90,這是不必要的高。由上限控制的難以編碼的視訊仍然在 93 以北,因此它們的質量還可以。

image.png

當您使用相同上限的更高 CRF 值時會發生什麼?如下所示(單擊表格以全解析度檢視)。在 CRF 23 中,您將易於編碼的視訊的資料速率降低了 33%,同時將 VMAF 從 96.9 降低到 96.15,這是無關緊要的。因此,您已經實現了按標題編碼的一個關鍵目標,即降低易於編碼的視訊的資料速率。

image.png

對於難以編碼的視訊,CRF 19 和 CRF 23 之間的資料速率和質量增量要低得多,因為資料速率上限控制這些剪輯的位元率和質量,而不是 CRF。儘管如此,在 CRF 23 下,您將位元率降低了 8.57%,但只會將 VMAF 分數從 94.68 降低到 94.41。

最重要的是,如果您使用上限 CRF 進行編碼並且您的 CRF 值低於 23,那麼您可能會在易於編碼的剪輯上浪費頻寬。在 CRF 23 上執行一些測試,看看這如何影響頻寬和顯著的質量。

image.png

有關計算和使用視訊質量指標的更多資訊,我有一個視訊課程,其中包含超過 3 小時的視訊教學。有關課程的更多資訊,單擊此處.

相關文章