1. HDR基础概念与短视频应用概览

HDR基础概念与短视频应用概览 学习卡片

案例任务

本案例面向短视频创作者与后期人员,目标是建立对HDR(高动态范围)的准确认知框架。你需要理解HDR与传统SDR(标准动态范围)在亮度、色彩与处理流程上的本质差异,掌握HDR10与HLG两种主流标准的适用场景,并明确HDR在短视频平台的实际价值与限制。完成本案例后,你将能够为后续实战案例选择正确的色彩空间、传递函数与监看方式。

核心概念与标准对比

HDR的核心在于扩展亮度范围(通常从SDR的0.1~100尼特扩展到0.005~1000尼特以上)与色彩体积(如BT.2020色域)。实现HDR的关键技术是光电传递函数(OETF/EOTF),它决定了亮度如何被编码与解码。目前短视频领域主要接触两种标准:

  • HDR10:采用PQ(感知量化)传递函数,基于亮度值(0~10000尼特)编码,元数据为静态(整个视频一个峰值亮度值)。适合网络分发,兼容性广,但无法逐场景优化。
  • HLG(混合对数伽马):采用相对亮度编码,兼容SDR显示设备(无元数据也能显示,只是动态范围降低)。适合直播与广播电视,因为其信号在SDR屏幕上不会严重偏色。

对于短视频,选择标准的核心依据是目标平台的支持情况与素材的显示环境。例如,B站、YouTube支持HDR10上传,而微信视频号目前对HLG的兼容性更好。此外,HDR素材在SDR屏幕上播放时,若不做色调映射(Tone Mapping),会出现灰暗或过曝现象——这是后续案例中需要重点解决的调色问题。

短视频HDR工作流概览

一个完整的短视频HDR流程包含以下环节,本课程后续案例将逐一深入:

  1. 拍摄/获取:使用支持HLG或Log(如S-Log3、V-Log)的设备,或从素材库获取HDR源文件。
  2. 剪辑与调色:在DaVinci Resolve、Premiere Pro等软件中设置正确的色彩管理(如DaVinci YRGB Color Managed),将输入色彩空间转换为HDR输出。
  3. 导出与封装:选择H.265/HEVC编码,设置HDR10静态元数据(MaxCLL、MaxFALL)或HLG信号。
  4. 平台上传与验证:不同平台对码率、色彩空间有特定要求,需按平台规范导出。

HDR与SDR信号对比示意

HDR vs SDR 信号范围对比 SDR: 0.1 ~ 100 nits (BT.709) HDR (PQ): 0.005 ~ 1000+ nits (BT.2020) SDR 色域 (约35% 可见色) HDR 色域 BT.2020 (约75% 可见色) 亮度扩展 色彩扩展
// 当前案例为概念讲解,无核心算法代码。
// 以下为演示HDR与SDR差异的辅助代码(可选运行)

// 1. 模拟SDR与HDR亮度范围对比
const sdrMaxLuminance = 100; // nit
const hdrMaxLuminance = 1000; // nit

console.log(`SDR峰值亮度: ${sdrMaxLuminance} nit`);
console.log(`HDR峰值亮度: ${hdrMaxLuminance} nit`);
console.log(`HDR亮度范围是SDR的 ${hdrMaxLuminance / sdrMaxLuminance} 倍`);

// 2. 演示PQ曲线(HDR10)与Gamma曲线(SDR)的亮度映射差异
function gammaEncode(linear) {
  return Math.pow(linear, 1 / 2.2);
}

function pqEncode(linear) {
  // 简化版PQ(SMPTE 2084),仅演示趋势
  const m1 = 2610 / 16384;
  const m2 = 2523 / 4096 * 128;
  const c1 = 3424 / 4096;
  const c2 = 2413 / 4096 * 32;
  const c3 = 2392 / 4096 * 32;
  const Lp = Math.pow(linear, m1);
  return Math.pow((c1 + c2 * Lp) / (1 + c3 * Lp), m2);
}

// 测试几个线性亮度值(0~1范围,1代表峰值)
const testValues = [0.1, 0.3, 0.5, 0.7, 0.9];
console.log('\n线性亮度 -> SDR编码值 / HDR(PQ)编码值');
testValues.forEach(v => {
  console.log(`${v.toFixed(1)} -> ${gammaEncode(v).toFixed(3)} / ${pqEncode(v).toFixed(3)}`);
});

// 3. 短视频HDR元数据示例(静态)
const hdrMetadata = {
  standard: 'HDR10',
  colorPrimaries: 'BT.2020',
  transferFunction: 'PQ',
  maxCLL: 1000, // 最大内容亮度
  maxFALL: 400,  // 最大帧平均亮度
  masteringDisplay: {
    primaries: { r: [0.708, 0.292], g: [0.170, 0.797], b: [0.131, 0.046] },
    whitePoint: [0.3127, 0.3290],
    luminance: { min: 0.005, max: 1000 }
  }
};
console.log('\n短视频HDR元数据示例:', JSON.stringify(hdrMetadata, null, 2));

落地方式与验证方法

本案例为概念认知型,无需编写代码或处理素材。建议的落地验证路径如下:

  1. 使用手机(支持HDR拍摄)录制一段HLG视频,在相册中确认显示为“HDR”标识。
  2. 将同一段视频分别导出为SDR(Rec.709)与HDR10(PQ)两个版本,上传至B站或YouTube,观察平台是否显示“HDR”画质标签。
  3. 在支持HDR的显示器(或手机屏幕)上对比两个版本的亮部细节(如天空云层、灯光高光),确认HDR版本高光不过曝、暗部有层次。

判定标准:能够准确说出HDR10与HLG在传递函数、元数据、SDR兼容性上的差异;能够根据目标平台选择正确的HDR标准;理解为何HDR素材在SDR屏幕上需要色调映射处理。