导图社区 视频交换
视频交换知识总结,包括视频交换基础协议(RTP和sip)、payload载荷以及加密相关的相关内容,需要的自取。
编辑于2022-07-11 15:34:17视频交换
基础协议
RTP
负载类型
RTP/AVP
基础
RTP/SAVP
扩展安全
RTP/AVPF
扩展稳定性
RTP/SAVPF
兼容上述二者
sip
消息体内容
Identity
负责传输用户有效性的签名
Identity_info
负责对证书签名者传输一个证明信息
国标
28181
35114
视频加密
国密
对称加密
SM1
SM4
OFB模式
CFB模式
CBC模式
ECB模式
摘要算法
SM3
非对称算法
SM2
ECC
RTP
NALU
视频编码层VCL
视频具体内容
网络适配层NAL
以网络要求的格式对数据进行封装
RBSP
payload载荷
PS流封装
封装格式
视频关键帧的封装 RTP + PS header + PS system header + PS system Map + PES header +h264 data
视频非关键帧的封装 RTP +PS header + PES header + h264 data
PS Header
00 00 01 ba
前十个字节固定,第十个字节的后3位代表扩展长度
ps system header
00 00 01 bb
随后的两字节代表长度
ps system map
00 00 01 bc
随后的两字节代表长度
pes header
00 00 01 e0/c0 e0是视频,c0是音频
随后的两字节代表长度,包含NAL信息、跳过2字节后的下一字节标识pes头部信息
NAL
分为
单个NAL单元
多个NAL单元
分片单元
起始码00 00 00 + NAL头
组成结构
头部 1字节
禁止位(1位) forbidden_zero_bit
H264 0
1 直接忽略
重要性标识(2位) nal_ref_idc
该标识表明 NAL的重要性,0-3 回放 ,值越大越重要
类型(5位) nal_unit_type
1-23
5 IDR图像中的片 (I帧) 35114中为 2
7 序列参数集SPS
原始视频的一帧一帧的像素数据经过编码之后的结构组成的序列
8 图像参数集PPS
每一帧的编码后数据所依赖的参数保存于图像参数集
单一NAL 报文格式
0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | RTP Header | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |F|NRI| type | | +-+-+-+-+-+-+-+-+ | | | | Bytes 2..n of a Single NAL unit | | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | :...OPTIONAL RTP padding | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
24-31
24-27 聚合包
24 单一时间组合包 STAP-A
0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | RTP Header | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |STAP-A NAL HDR | NALU 1 Size | NALU 1 HDR | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | NALU 1 Data | : : + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | NALU 2 Size | NALU 2 HDR | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | NALU 2 Data | : : | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | :...OPTIONAL RTP padding | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
26 多时间组合MTAP16
0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | RTP Header | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |MTAP16 NAL HDR | decoding order number base | NALU 1 Size | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | NALU 1 Size | NALU 1 DOND | NALU 1 TS offset | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | NALU 1 HDR | NALU 1 DATA | +-+-+-+-+-+-+-+-+ + : : + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | NALU 2 SIZE | NALU 2 DOND | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | NALU 2 TS offset | NALU 2 HDR | NALU 2 DATA | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | : : | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | :...OPTIONAL RTP padding | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
28、29分片单元
35114中头部结构
禁止位(1位) forbidden_zero_bit
重要性标识(1位) nal_ref_idc
不是等0时,包含以下
序列参数集
图像参数集
安全参数集
认证参数集
类型(4位) nal_unit_type
10 认证参数集
frame_num (8位)
包含认证图像
spatial_el_flag (8位)
1 增强层签名数据
0 基础层认证数据
authentication_data_length_minus1 (8位) 加1 表示签名数据长度
authentication_data (8位) 签名数据的内容
视频签名验签
签名
1.将待认证的一个或多个NAL单位 按照安全集中约定的算法进行 杂凑和签名 2. 将签名后的数据封装为认证参数集
验签
1.找到认证参数中frame_num对应的图像 2.按照安全集中约定做杂凑、签名进行比较验签
9安全参数集
加密标识 encryption_flag (1位)
1加密
加密算法 encryption_type (4位)
0 SM1
1 SM4
2-15 保留
vek_flag 1
0 不携带vek
1 携带vek
iv_flag 1
1 携带iv
0 不携带iv
vek_encrtption_type 4 视频密钥加密算法
evek_length_minus1 8 加密后的密钥长度减一
evek n vek加密的密钥
vkek_version length_minus1 8 加密密钥版本号长度减一 以字节为单位
vkek_version n 加密密钥版本号
iv_length_minus1 8 初始向量长度减一
iv n 初始向量,用于分组加密
认证标识 authentication_flag (1位)
1 认证
hash_type 认证算法 (2位)
0 SM3 摘要长度32byte
hash_discard_p_pictures (1位) 是否对非IDR图像进行认证
0 进行认证
signature_type (2位) 签名算法类型
0 SM2
1-3 其他
successive_hash_pictures_minus1 (8位) 加1 标识按界面顺序进行数据签名的连续图像个数
camera_idc (152位)
摄像机证书id
camera_id 160
160 图像来源 摄像机id 20个字符
8 图像参数集
7 序列参数集
2 I帧
1 非IDR
5 监控扩展单元
是否加密(1位)encryption_idc
0 该NAL中的RBSP没有加密
1 加密
是否认证 (1位) authentication_idc
0 未认证
1 以安全集中指定的方式认证
载荷
EBSP(等价于NAL本体) 扩展字节载荷
NALU Header + EBSP
NALU Header + 03 + RBSP
NALU Header + 03 + SODB +RBSP尾部
RBSP尾部 (填充零)
RBSP 原始字节载荷
0x03为防止竞争的字节,防止NAL出现起始码0x000001或0x00000001, H.264规定当时NAL内部出现起始码是 再最后一位前面加入0x03
拿到EBSP后检测 是否包含0x000003 如果有去掉其中的0x03就得的原始载荷
加密相关
摘要
通过摘要算法对一段明文进行加密,输出固定长度的密文,不可逆,用来对比数据的完整性
签名
在摘要的基础上,再通过自己的密钥对摘要进行加密,密钥相对于自己的签名,以此既验证了完整性,有保证来源安全