想在自己的視訊平臺支援 HDR 需要做哪些工作?丨有問有答

語言: CN / TW / HK

今天我們要討論的是 關鍵幀的音視訊開發圈 的一位朋友在社群裡提的問題,如下:

當下流行的 HDR 與編解碼之間有什麼關係?如果想要自己的視訊平臺支援 HDR 格式視訊大概需要做哪些工作?HDR 如何相容 SDR 顯示裝置?

以下是回答,歡迎大家留言討論補充:

1、HDR 與編解碼之間有什麼關係?

從概念上初看,HDR 和編解碼沒啥關係;但從實現上看,HDR 需要編解碼標準的支援。

HDR 本質上是屬於『顏色空間』這個方向,目標是提升對現實場景進行數字化後的顏色體驗。HDR 是相對 SDR 的技術改進,HDR 提供了更高的亮度範圍、更寬的色域範圍、更深的量化位深(10bit/12bit),從而可以讓我們在看手機螢幕時體驗到更接近人眼對於物理世界的感受:顏色更加豐富,色彩飽和度更高。我自己看 HDR 視訊的感受是:賊亮,亮瞎狗眼的那種亮。

視訊編碼本質上則屬於『資料壓縮』這個方向,目標是為了降低視訊資料儲存和傳輸成本。

所以從概念上看起來,它們好像沒啥關係。

但是具體到實現上,為了最大程度的壓縮視訊資料,視訊編碼器需要去理解影象的各種特性,以尋找最大的冗餘空間來做壓縮,這裡面就包含了對顏色資訊的理解。所以這就產生了編碼標準對顏色空間的耦合,所以 HDR 需要編解碼標準的支援。比如,你在 iOS 上去實現 HDR 時會發現必須使用 HEVC。

2、如果想要自己的視訊平臺支援 HDR 格式視訊大概需要做哪些工作?

前面只講到了編解碼與 HDR 的關係,如果繼續往前後鏈路去探討一下,我們會發現正是因為 HDR 技術是屬於『顏色空間』領域的標準,所以在相機採集、編碼、解碼、渲染到螢幕上這一整個流程裡面,凡是涉及到要對顏色資訊進行理解和處理的節點,都需要實現對 HDR 的支援才能保證最終呈現出它的特性。

這也就是你第 2 個問題的答案:如果想要自己的視訊平臺支援 HDR 格式視訊,就需要所有要感知和處理顏色資訊的環節來支援它。

通常來講,如果一個手機裝置及系統已經支援 HDR,你使用它原生的相機採集、編碼、解碼、渲染能力就能夠支援 HDR 了。比如,蘋果在 iPhone 12 後是有一套系統方案來支援視訊生產和消費流程使用 HDR 的。

但是在我們自己的需求場景裡面,除了我們上面說的相機採集、編碼、解碼、渲染,我們通常還會增加一些其他環節,最常見的就是相機採集後的影象處理,比如磨皮、美白、濾鏡、特效等等,這些節點如果都是按照 SDR 的顏色空間來實現的,那就支援不了 HDR 的影象處理。要麼就全部改造。

3、HDR 如何相容 SDR 顯示裝置?

HDR 向下相容 SDR 一種方案就是丟資訊降級。採集了 HDR 的視訊,到某個環節(比如採集後處理環節)支援不了,那就丟棄一些顏色資訊降級成 SDR 的即可。當然後續的環節也就都是 SDR 的了。

4、其他

上面從概念和思路上對你的問題做了一些回答,希望能有一些幫助。如果要涉及到更細節的技術方案,那就要針對不同廠商的系統能力來做了。

比如像這個主題裡講到的 iOS 的 HDR 的採集和渲染方案: iOS 視訊採集和渲染如何支援 HDR (https://t.zsxq.com/rz7qRfy)。

另外,你也可以看看這兩篇文章瞭解一些更多的關於 HDR 的資訊:

如果你也對音視訊技術感興趣,比如,符合下面的情況:

  • 在校大學生 → 學習音視訊開發

  • iOS/Android 客戶端開發 → 轉入音視訊領域

  • 直播/短視訊業務開發 → 深入音視訊底層 SDK 開發

  • 音視訊 SDK 開發 → 提升技能,解決優化瓶頸

可以長按識別或掃描下面二維碼,瞭解一下這個社群,根據自己的情況按需加入:

識別二維碼加入我們