一、NALU打包不分片格式
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 2
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
| V |P|X| CC |M| PT | sequence number |
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
| timestamp |
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
| ssrc |
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
| profile | length |
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
| ext1 |
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
| ext2 |
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
| ext3 |
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
| ext4 |
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
| ext5 |
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
| f |nri |nal_type | h264 |
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
| h264 |
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
解释:
payload type:7bit,表示后续负载类型h264/jpeg/aac等
timestamp:audio/video采样相对时间戳,于video,25帧/s,采样率90000,每隔3600滴答即是下一帧;audio可类比计算
ssrc:一股流的唯一标识;
length:表示接下来有length个4B长度;
ext1 ~ ext5:可添加4B的精确到s的utc时间戳,以及4B的精确到ms的utc时间戳,其他字段可根据业务需求添加;
接下来便是nalu单元,注意rtp打包h264时去掉了0x00000001或0x000001的start code
二、NALU单元分片打包格式
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 2
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
| V |P|X| CC |M| PT | sequence number |
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
| timestamp |
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
| ssrc |
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
| profile | length |
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
| ext1 |
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
| ext2 |
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
| ext3 |
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
| ext4 |
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
| ext5 |
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
| f |nri | fu_type |s|e |f |nal_type | h264 |
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
| h264 |
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
与第一种NALU单元不分片情形大致相同,区别在于红色部分4个字段:
s:表示nalu单元的首个分片包;
e:表示nalu单元的尾巴分片包;
f:保留bit位;
nal_type:h264的nalu类型,5/6/7/8等idr帧、sei帧、sps、pps等;
FU Identifier:f(1b) + nri(2b) + fu_type(5b)
FU_Header:s(1b) + e(1b) + f(1b) + nal_type(5b)
其中,fu_type可为28/29等。