常见音视频编码二进制分析笔记
文章目录
- 常见音视频编码二进制分析笔记
- 视频
- H.264 (AVC)
- 说明
- nal_unit_type:
- nal_ref_idc
- H.265 (HEVC)
- 音频
- AAC (Advanced Audio Coding)
- G.711A (PCMA)
- G.711U (PCMU)
- OPUS
视频
H.264 (AVC)
标准来源:ITU-T H.264 | ISO/IEC 14496-10
起始码:0x00000001(NALU 分隔符,标准 7.3.1 节定义,用于区分网络抽象层单元)
NALU 类型(核心标识):
0x67:SPS(序列参数集),存储分辨率、帧率等核心解码参数(标准 7.3.2.1 节)
0x68:PPS(图像参数集),存储切片、量化参数等解码配置(标准 7.3.2.2 节)
0x65:关键帧(即时解码刷新帧),独立解码、刷新参考帧(标准 7.3.2.6 节,关键帧核心类型)
0x41:非关键帧(前向预测帧),依赖前序帧解码(标准 7.3.2.5 节)
说明
ITU-T H.264 参考下载地址:https://www.itu.int/rec/T-REC-H.264-202408-I/en
7.3.1章节:
nal_unit_type:
0x1 non IDR 非关键帧 0x2 slice A 0x3 slice B 0x4 slice C 0x5 IDR 关键帧 0x6 SEI 0x7 SPS 0x8 PPS 0x9 AUD 0xa EOS 0xb EOB 0xc FILLnal_ref_idc
- 必须为0的单元 nal_ref_idc = 0 [0b00] => 表示非参考 NALU
必须用于:SEI (6)、AUD (9)、EOS (10)、EOB (11)、FILL (12)
SEI: 0x06 AUD: 0x09 EOS: 0x0a EOB: 0x0b FILL: 0x0c- 必须非0的单元 nal_ref_idc = 1 [0b01], 2 [0b10], 3 [0b11] => 表示参考 NALU
必须用于:SPS (7)、PPS (8)、IDR (5)
SPS: 0x67 | 0x47 | 0x27 PPS: 0x68 | 0x48 | 0x28 IDC: 0x65 | 0x45 | 0x25- 不限制nal_ref_idc => slice(1-4) 非关键帧都可用:
slice1: 0x61 | 0x41 | 0x21 | 0x01 slice2: 0x62 | 0x42 | 0x22 | 0x02 slice3: 0x63 | 0x43 | 0x23 | 0x03 slice4: 0x64 | 0x44 | 0x24 | 0x04H.265 (HEVC)
标准来源:ITU-T H.265 | ISO/IEC 23008-2
起始码:0x00000001(NALU 分隔符,标准 7.4.1 节定义,与 H.264 兼容基础格式)
NALU 类型(2 字节标识,核心标识):
0x4001:VPS(视频参数集),HEVC 独有,管理多图层、3D 视频参数(标准 7.4.2.1 节)
0x4201:SPS(序列参数集),存储分辨率、编码等级等核心参数(标准 7.4.2.2 节)
0x4401:PPS(图像参数集),存储切片解码相关配置(标准 7.4.2.3 节)
0x2601:关键帧(即时解码刷新帧),HEVC 标准定义的关键帧类型,独立解码(标准 7.4.3.3 节)
0x0201:非关键帧(清洁随机接入帧),非 IDR I 帧,支持随机接入(标准 7.4.3.5 节)
音频
AAC (Advanced Audio Coding)
标准来源:ISO/IEC 13818-7(通用音频标准) | ISO/IEC 14496-3(音频对象编码标准)
核心标识(ADTS 格式,标准 1.A.3.1 节定义):
0xFFF:12 位同步头,用于快速定位 AAC 帧起始位置(同步字字段)
ADTS:音频数据传输流,包含采样率、声道数、帧长度等 7 字节固定帧头结构
G.711A (PCMA)
标准来源:ITU-T G.711(脉冲编码调制标准)
核心特征
核心参数(标准 A.1 节定义):8kHz 采样率、8bit A 律量化、64kbps 固定码率
关键标识:静音值0xD5(标准 A.1.2 节定义,A 律量化零电平对应编码值)
G.711U (PCMU)
标准来源:ITU-T G.711(脉冲编码调制标准)
核心特征
核心参数(标准 B.1 节定义):8kHz 采样率、8bit μ 律量化、64kbps 固定码率
关键标识:静音值0xFF(标准 B.1.2 节定义,μ 律量化零电平对应编码值)
OPUS
标准来源:IETF RFC 6716(实时音频编码标准)
核心标识:TOC 字节(Table Of Contents):帧首第 1 个字节,标准 5.1 节定义,用于标识帧类型、声道数、编码模式、带宽参数
无固定同步头,依赖 RTP 协议载荷或帧长度字段定位帧边界