
sprop-parameter-sets 包含了H.264解码所必需的序列参数集(SPS) 和图像参数集(PPS),它们以逗号分隔,并采用 Base64 编码。
一、将Base64字符串解码成十六进制
解码后,我们得到原始的字节序列:
-
SPS (
Z00AHoqKUCgC3TZAAAD6AAAw1AE=)- Base64 解码后(十六进制):
67 4d 00 1e 8a 8a 50 28 02 dd 36 40 00 00 fa 00 00 30 d4 01 - 注意:H.264的NALU起始码
00 00 00 01或00 00 01通常不包含在内,这里的字节流是纯粹的SPS有效载荷。
- Base64 解码后(十六进制):
-
PPS (
aO48gA==)- Base64 解码后(十六进制):
68 ee 3c 80
- Base64 解码后(十六进制):
二、为什么用Base64编码?
1. SDP协议的文本安全性要求
SDP(Session Description Protocol)是一个纯文本协议,所有字段都必须是可打印的ASCII字符。
原始SPS/PPS数据的问题:
- 包含大量的控制字符(如NULL字符
0x00) - 包含非打印字符(如
0x1B,0xFF等) - 这些字符在文本协议中会导致:
- 解析错误
- 传输截断(NULL字符可能被误认为字符串结束)
- 编码混乱
示例: 一个典型的SPS可能包含:67 4D 00 1E 8A 8A 50 28 02 DD 36 40 00 00 ...
其中的 00 在文本中就是NULL字符,会破坏SDP的完整性。
2. Base64的优势
Base64将二进制数据编码为仅包含64个安全ASCII字符:
- 大写字母 A-Z
- 小写字母 a-z
- 数字 0-9
- 符号
+和/ - 填充符
=
这样确保了SDP的纯文本特性不受破坏。
三、关于"压缩"的严重误解
Base64不是压缩算法,反而会膨胀!
这是一个关键点:Base64编码会增加数据大小,而不是减少。
压缩比例计算:
编码原理:
- 每3个字节(24位)的二进制数据 → 编码为4个Base64字符
- 编码膨胀率:
4/3 ≈ 1.333,即数据量增加约33.3%


2万+

被折叠的 条评论
为什么被折叠?



