想在自己的视频平台支持 HDR 需要做哪些工作?丨有问有答

134 阅读4分钟

今天我们要讨论的是关键帧的音视频开发圈的一位朋友在社群里提的问题,如下:

当下流行的 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(t.zsxq.com/rz7qRfy)。

另外,你也可以看看这两篇文章了解一些更多的关于 HDR 的信息:


如果你也对音视频技术感兴趣,比如,符合下面的情况:

  • 在校大学生 → 学习音视频开发
  • iOS/Android 客户端开发 → 转入音视频领域
  • 直播/短视频业务开发 → 深入音视频底层 SDK 开发
  • 音视频 SDK 开发 → 提升技能,解决优化瓶颈

我们创建了一个音视频社群,vx 搜索『gjzkeyframe』 关注『关键帧Keyframe』咨询,或知识星球搜『关键帧的音视频开发圈』,了解一下这个社群,根据自己的情况按需加入