第四章 HDR视频的编码与封装
好,咱们进入第四章。前面聊了HDR的采集、处理、显示,那中间这段——视频怎么存、怎么传,其实是个大坑。我当年第一次做HDR项目时,就栽在编码和封装上。明明拍出来效果惊艳,一编码全糊了。后来才明白,HDR视频的编码,跟普通SDR完全是两码事。
4.1 主流编码格式:H.265/HEVC 与 AV1
先说编码。HDR视频的数据量比SDR大得多。为什么?因为色深更高(10bit起步)、分辨率更高(4K/8K)、动态范围更宽。你想想看,同样的画面,HDR要记录的信息量可能是SDR的2-3倍。所以编码格式的选择,直接决定了你的视频能不能在带宽有限的情况下保持画质。
H.265/HEVC:目前的主流选择
H.265,也叫HEVC,是H.264的继任者。我个人习惯叫它HEVC,因为更准确。它最大的特点就是压缩效率高——比H.264提升约50%。什么意思?同样的画质,码率可以砍一半。
但HEVC对HDR的支持,才是关键。它内置了HDR的编码工具:
- 10bit色深支持:这是HDR的基础。8bit根本没法看,色带会非常明显。
- 高动态范围量化:HEVC的量化器针对高亮度区域做了优化,不会把高光细节压没了。
- SCC(屏幕内容编码):如果你做的是短视频,里面可能有文字、UI元素,SCC能大幅提升压缩效率。
AV1:未来的方向
AV1是后起之秀。它由开放媒体联盟(AOM)推出,目标是替代HEVC。为什么?因为HEVC的专利授权太复杂了,你懂的。
AV1的压缩效率比HEVC再提升约30%。但代价是编码速度慢——慢很多。我记得第一次用AV1编码一段4K HDR视频,花了整整8个小时。HEVC同样的内容,40分钟搞定。
不过AV1对HDR的支持很完整:
- 10bit/12bit色深:原生支持,不需要额外配置。
- HDR10+元数据传递:AV1的元数据通道设计得更灵活。
- 自适应量化:根据画面内容动态调整量化参数,对HDR的高光区域特别友好。
4.2 HDR元数据:SMPTE ST 2086、CLL、FALL
编码搞定了,但还有个关键问题:播放器怎么知道你的视频是HDR?亮度范围是多少?这就靠元数据了。
HDR元数据,说白了就是给播放器看的说明书。它告诉播放器:这个视频的亮度峰值是多少、平均亮度是多少、色域范围是什么。没有这些信息,播放器就只能瞎猜,结果就是画面要么过曝,要么死黑。
SMPTE ST 2086:主元数据
这是最基础的HDR元数据。它包含:
- 显示主色度:红、绿、蓝三原色的坐标。
- 白点色度:白色的坐标。
- 最大亮度:内容中出现的最高亮度值。
- 最小亮度:内容中出现的最低亮度值。
这些信息是静态的,整段视频只有一个值。所以它也叫"静态元数据"。
CLL(Content Light Level):内容亮度等级
CLL包含两个关键指标:
- MaxCLL(最大内容亮度):视频中所有像素的最大亮度值。
- MaxFALL(最大帧平均亮度):所有帧的平均亮度的最大值。
这两个值有什么用?举个例子。你拍了一段HDR视频,里面有烟花爆炸的瞬间,亮度可能达到10000尼特。但整段视频的平均亮度可能只有200尼特。MaxCLL告诉播放器:嘿,我这里有超高亮度的画面,你得准备好。MaxFALL则告诉播放器:整体上,这个视频的亮度水平是怎样的。
FALL(Frame Average Light Level):帧平均亮度
FALL是MaxFALL的基础。它计算每一帧的平均亮度。为什么重要?因为播放器可以根据FALL来调整背光亮度。如果一段视频的FALL很低(比如夜景),播放器可以降低背光,省电的同时还能提升对比度。
嗯,这里要注意:FALL不是元数据标准的一部分,但很多专业工具会用它来辅助分析。
4.3 封装容器:MP4 与 MKV
编码和元数据都有了,最后一步就是封装。封装容器就像是一个盒子,把视频流、音频流、元数据、字幕等所有东西装在一起。
MP4:最通用的选择
MP4是短视频的标配。几乎所有平台、所有设备都支持。它的结构简单,兼容性好。
但MP4对HDR元数据的支持有限:
- 支持HDR10静态元数据:SMPTE ST 2086可以嵌入。
- 不支持HDR10+动态元数据:MP4的容器规范没有为动态元数据预留位置。
- 不支持杜比视界:杜比视界的元数据需要特殊的容器结构。
所以,如果你做的是HDR10短视频,MP4完全够用。但如果是HDR10+或杜比视界,就得考虑其他容器了。
MKV:更灵活的选择
MKV是一个开放容器,它的灵活性远超MP4。你可以把任何类型的元数据塞进去,包括动态元数据、多语言字幕、章节信息等。
MKV对HDR的支持:
- 支持所有HDR格式:HDR10、HDR10+、杜比视界都可以。
- 支持多音轨:可以同时包含5.1声道和立体声。
- 支持章节:适合长视频。
但MKV也有缺点:兼容性不如MP4。很多短视频平台不支持MKV上传。所以我的建议是:
- 上传到平台:用MP4。
- 本地存档或分发:用MKV。
4.4 知识体系图
下面这张图,帮你理清HDR编码与封装的整体逻辑:
这张图展示了HDR视频从原始素材到最终成品的完整流程。编码、元数据、封装,三个环节缺一不可。任何一个环节出问题,最终效果都会打折扣。
4.5 避坑指南
最后,分享几个我踩过的坑:
- 编码时忘记设置10bit:默认是8bit,出来的HDR视频全是色带。我曾经因为这个被客户骂了一顿。
- 元数据丢失:转封装时,有些工具会丢弃元数据。记得用
ffmpeg -map_metadata 0保留所有元数据。 - 码率给得太低:HDR视频的码率需求比SDR高30%-50%。别用SDR的参数去套HDR。
好了,第四章就到这里。编码和封装是HDR视频的骨架,骨架搭好了,后面的调色、分发才能顺利进行。下一章我们聊聊HDR视频的调色与后期处理,那才是真正出效果的地方。
公众号:蓝海资料掘金营,微信deep3321