如何从H.265头部获取适配Web Codecs的AnnexB格式hvc1编解码器字符串?
H.265 (HEVC) Web Codecs 编解码器字符串字段映射解析
针对你提供的HEVC头部(VPS/SPS/PPS)和目标格式hvc1.1.6.L63.00,各字段与头部数据的映射关系如下:
字符串结构拆解
hvc1.<ProfileID>.<Level整数部分>.<Tier+完整Level>.<SubprofileID>
1. 固定前缀 hvc1
这是MP4容器中HEVC视频的标准编解码器标识,直接固定使用即可,无需从头部解析。
2. 第1字段 .1(ProfileID)
对应**SPS(第二个NALU,以66开头的段)**的profile_idc字段:
去掉NALU起始码0 0 0 1和类型标识66后,SPS的第一个字节是1,这就是profile_idc的十进制值,对应字符串里的.1(代表Main 10 Profile)。
3. 第2字段 .6(Level整数部分)
由SPS中的general_level_idc计算得到:
你标注的63就是general_level_idc,对应HEVC Level 6.3。将该值除以10取整数部分,63 ÷ 10 = 6,对应字符串的.6。
4. 第3字段 .L63(Tier+完整Level)
由两部分组成:
- Tier标识:来自SPS的
general_tier_flag:值为0时用L(Main Tier),值为1时用H(High Tier)。你的示例中用L,说明该字段值为0。 - 完整Level值:直接使用
general_level_idc的十进制值63,结合Tier标识组成L63。
5. 第4字段 .00(SubprofileID)
对应SPS的subprofile_idc,绝大多数HEVC场景下该值为0,因此字符串中表示为.00;若有特殊子档次,替换为对应十进制值的两位格式即可。
基于你提供的头部的完整映射
从给出的SPS数据中提取到的关键值:
profile_idc=1→.1general_level_idc=63→ 整数部分6(.6)、完整Level值63general_tier_flag=0→Lsubprofile_idc=0→.00
最终生成的编解码器字符串就是hvc1.1.6.L63.00,与示例完全匹配。
内容的提问来源于stack exchange,提问作者Pruza
相关产品推荐
相关产品推荐

