在移动设备上播放高动态范围 (HDR) 视频时,通常存在一个主要缺陷:不同面板之间的视觉效果不一致。在浏览混合内容信息流(其中标准动态范围 (SDR) 和 HDR 元素共存)时,渲染流水线难以平衡这些元素。这会导致不稳定的突兀过渡和不可预测的亮度峰值。
对于内容创作者来说,这种缺乏统一性的问题会损害艺术意图。在专业显示器上精心调色的 HDR 视频在消费者设备上观看时,可能会出现高光被裁剪、色调灰暗或阴影被压缩的情况。
Eclipsa 视频是一种现代 HDR 视频标准,旨在解决这些跨设备生态系统挑战。Eclipsa 视频基于 SMPTE ST 2094-50 规范构建,使显示屏能够根据物理硬件功能和实时环境 光照条件动态调整内容 映射。Eclipsa 视频由 Jetpack Media3 ExoPlayer 和标准 Camera2 拍摄流水线中的内置零配置集成提供支持,为移动工程团队提供了一条零成本、无摩擦的路径,以实现下一代硬件自适应视频流式传输,从而在每个屏幕上保留艺术意图。
SMPTE ST 2094-50 的技术架构
移动显示屏的亮度余量(显示屏参考白点以上的可用亮度)差异很大。当显示屏的硬件限制与 HDR 视频的母带制作要求不一致时,高光会被裁剪或看起来很暗淡。当环境光传感器根据周围环境调整面板时,屏幕的实际余量和参考白点会动态变化。
SMPTE ST 2094-50 通过引入双层元数据解决了这个问题,该元数据通过两个主要支柱确保视觉效果一致:
参考白点锚点
这建立了一个严格的基准,将 SDR 元素的峰值亮度直接映射到显示屏的参考白点。任何超过此锚点的亮度值都严格保留给 HDR 高光。这种可预测的锚定机制可确保在屏幕上将 SDR 和 HDR 层合成在一起时,它们能够保持预期的视觉关系,而不会相互冲淡。
余量自适应增益曲线 (AGTM)
创作者不会强制使用静态色调映射曲线,而是嵌入参数化元数据,以准确指示显示流水线在可用余量有限时如何缩放。该标准为创作者提供了精细的灵活性,让他们能够选择目标面板是柔性裁剪高光、硬性裁剪高光,还是压缩中间调和阴影,以主动保留明亮区域中的最精细细节。
平台支持
Android 17(API 级别 37)中引入了对 Eclipsa 视频播放和拍摄的平台级支持。
实现播放
对于标准应用开发,Media3 ExoPlayer 提供对 Eclipsa 视频的开箱即用支持。在解析嵌入了 SMPTE 2094-50 元数据的文件时,ExoPlayer 会无缝提取并应用元数据,而无需自定义播放器配置。
标准播放器初始化: 如需实例化播放器界面,请参阅 Media3 ExoPlayer 概览。
轨道替换: 如果您的应用以编程方式查询或锁定特定的 HDR 配置文件,请参阅 Media3 轨道选择 API。
我们建议将播放流水线卸载到 Jetpack Media3。ExoPlayer 会原生处理低层级容器提取,这完全绕过了 Android 16(API 级别 36)及更低版本中的旧版渲染层上存在的已知平台级解码工件。
实现视频拍摄
如需从设备录制 Eclipsa 视频,必须将相机流水线配置为通过分配兼容的动态范围配置文件来生成 AGTM 元数据。
使用 CameraCharacteristics 验证设备支持后,使用 DynamicRangeProfiles.HLG10_SMPTE_2094_50 配置文件将流路由到编码器界面。如需了解如何在相机会话中查询和配置动态范围配置文件,请参阅
HDR 视频拍摄。
AGTM 元数据不需要显式编解码器配置。如果 Android 媒体框架在活跃的动态配置文件中存在元数据,则会自动附加并向下传递元数据。
兼容性和性能注意事项
如需监控性能,请检索活跃的 Display 对象,并检查其 overlayProperties 中的 LutProperties,以确定硬件加速路径的可用性。
对于没有硬件加速功能的设备,我们正在开发在 Exoplayer 中选择停用 Eclipsa 视频渲染的支持。