admin 管理员组

文章数量: 1184232

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
&nbs

本文标签: 重要 起始码 字节