FLV格式非常简单,头信息数据量很少,适合网络传输,因此被广泛的应用。
1. H264 NALU结构
h264 NALU: 0x00 00 00 01 | nalu_type(1字节)| nalu_data (N 字节) | 0x00 00 00 01 | ...
起始码(4字节) 类型 数据 下一个NALU起始码
H264 NALU固定以 0x00 00 00 01为起始,NALU_data部分不会出现这个起始码;
在找到下一个起始码之前,当前NALU数据长度不知;
NALU_type 1字节,定义为:1比特禁止位 | 2比特 重要性指示位 | 5比特 类型
固定为0 11重要 不能少 1-12 由h264使用
00不重要 可以丢弃
几个常用Nalu_type:
0x67 (0 11 00111) SPS 非常重要 type = 7
0x68 (0 11 01000) PPS 非常重要 type = 8
0x65 (0 11 00101) IDR帧 关键帧 非常重要 type = 5
0x61 (0 11 00001) I帧 重要 type=1 非IDR的I帧 不大常见
0x41 (0 10 00001) P帧 重要 type = 1
0x01 (0 00 00001) B帧 不重要 type = 1
0x06 (0 00 00110) SEI 不重要 type = 6
2. FLV tag
前面讲过FLV文件就是由无数个Tag组成的,Tag有Video Tag, Audio Tag和Script Tag.
A/V Tag里面存储的就是音视频编码数据,Script Tag里面是一些码流描述信息。
理论上来说,不解析Script tag也可以对A/V Tag完整解码。tag的固定格式是:
Tag Type(1字节) | DataSize(3字节) | TimeStamp(3字节) | TimeStampExtended (1字节)| StreamID (3) | ...
下面将分别介绍各种NALU封到tag里面的结构。
2. 一般Video tag
字节位置 意义
0x09, // 0, TagType
0xzz, 0xzz, 0xzz, // 1-3, DataSize,
0xzz, 0xzz, 0xzz, 0xzz, // 4-6, 7 TimeStamp | TimeStampExtend
0x00, 0x00, 0x00, // 8-10, StreamID
1. H264 NALU结构
h264 NALU: 0x00 00 00 01 | nalu_type(1字节)| nalu_data (N 字节) | 0x00 00 00 01 | ...
起始码(4字节) 类型 数据 下一个NALU起始码
H264 NALU固定以 0x00 00 00 01为起始,NALU_data部分不会出现这个起始码;
在找到下一个起始码之前,当前NALU数据长度不知;
NALU_type 1字节,定义为:1比特禁止位 | 2比特 重要性指示位 | 5比特 类型
固定为0 11重要 不能少 1-12 由h264使用
00不重要 可以丢弃
几个常用Nalu_type:
0x67 (0 11 00111) SPS 非常重要 type = 7
0x68 (0 11 01000) PPS 非常重要 type = 8
0x65 (0 11 00101) IDR帧 关键帧 非常重要 type = 5
0x61 (0 11 00001) I帧 重要 type=1 非IDR的I帧 不大常见
0x41 (0 10 00001) P帧 重要 type = 1
0x01 (0 00 00001) B帧 不重要 type = 1
0x06 (0 00 00110) SEI 不重要 type = 6
2. FLV tag
前面讲过FLV文件就是由无数个Tag组成的,Tag有Video Tag, Audio Tag和Script Tag.
A/V Tag里面存储的就是音视频编码数据,Script Tag里面是一些码流描述信息。
理论上来说,不解析Script tag也可以对A/V Tag完整解码。tag的固定格式是:
Tag Type(1字节) | DataSize(3字节) | TimeStamp(3字节) | TimeStampExtended (1字节)| StreamID (3) | ...
下面将分别介绍各种NALU封到tag里面的结构。
2. 一般Video tag
字节位置 意义
0x09, // 0, TagType
0xzz, 0xzz, 0xzz, // 1-3, DataSize,
0xzz, 0xzz, 0xzz, 0xzz, // 4-6, 7 TimeStamp | TimeStampExtend
0x00, 0x00, 0x00, // 8-10, StreamID