FLV文件以大端对齐方式存放多字节整型,格式比较简单,分为Header和Body两部分。
类型 | 长度(byte) | 说明 |
---|---|---|
Header | 9 | 固定长度 |
Body | n | 可变 |
Header格式
Hearder的内容长度是固定的,格式如下:
字段 | 长度(bit) | 说明 |
---|---|---|
F | 8 | 0x46 |
L | 8 | 0x4C |
V | 8 | 0x56 |
Version | 8 | 一般为0x01 |
TypeFlagsReserved | 5 | 保留位,均为0 |
TypeFlagsAudio | 1 | 否包括音频数据,1是有,0是没有 |
TypeFlagsReserved | 1 | 保留位 |
TypeFlagsVideo | 1 | 是否包括视频数据,1是有,0是没有 |
DataOffset | 32 | Header的长度,为固定值0x00000009 |
Body格式
FLV Body的内容为多个Tag和Tag的长度组成,即:
PreviousTagSize0 | 4 | |
Tag1 | n | |
PreviousTagSize1 | 4 | |
Tag2 | n | |
... | ... | |
PreviousTagSizeN-1 | 4 | |
TagN | n | |
previousTagSizeN | 4 |
Tag为一个内容,目前包括音频、视频、脚本,previousTagSize为前一个Tag的长度,PreviousTagSize0为0x00000000。
Tag格式
Tag是FLV Body的内容,同样是由Tag Header和Tag Data组成。即FLV Tag Format如下所示:
字段 | 长度(byte) | 说明 | |
---|---|---|---|
TagType | 1 | 音频为0x08;视频为0x09;脚本数据为0x12 | |
DataSize | 3 | Data的长度 | |
Timestamp | 3 | 相对第一个Tag的时间戳,因此第一个Tag的时间戳为0。也可以将所有Tag的时间戳全配置为0,解码器会自动处理。 | |
TimestampExtended | 1 | ||
StreamID | 3 | 默认的全为0 | |
Data | DataSize | TagType=0x08,为AudioData;TagType=0x09,为VideoData;TagType=0x12,为ScriptDataObject,但该项因为内容不固定,所以在FLV文件中可以没有该Tag内容。 |
VideoData格式
VideoData的内容,同样包括VideoData Header和VideoData Body。即VideoData Format:
字段 | 长度(bit) | 说明 | |
---|---|---|---|
FrameType | 4 | 1为关键帧,2为非关键帧,3为h263的非关键帧,4为服务器生成关键帧,5为视频信息或命令帧。 | |
CodecID | 4 | 1为JPEG,2为H263,3为Screen video,4为On2 VP6,5为On2 VP6,6为Screen videoversion 2,7为AVC。 | |
VideoData | n | 如果CodecID=2,为H263VideoPacket;如果CodecID=3,为ScreenVideopacket;如果CodecID=4,为VP6FLVVideoPacket;如果CodecID=5,为VP6FLVAlphaVideoPacket;如果CodecID=6,为ScreenV2VideoPacket;如果CodecID=7,为AVCVideoPacket; |
AVCVideoPacket格式
AVCVideoPacket同样包括Packet Header和Packet Body两部分,即AVCVideoPacket Format:
字段 | 长度(byte) | 说明 | |
---|---|---|---|
AVCPacketType | 1 | AVCPacketType=0x00,为AVCSequence Header;AVCPacketType=0x01,为AVC NALU;AVCPacketType=0x02,为AVC end ofsequence | |
CompostionTime | 3 | 相对时间戳,如果AVCPacketType=0x01,为相对时间戳,其它均为0 | |
Data | n | 负载数据,如果AVCPacketType=0x00,为AVCDecorderConfigurationRecord;如果AVCPacketType=0x01,为NALUs;如果AVCPacketType=0x02,为空。 |
AVCDecorderConfigurationRecord格式
AVCDecorderConfigurationRecord包括文件的信息,具体格式如下:
字段 | 长度(bit) | |
---|---|---|
cfgVersion | 8 | |
avcProfile | 8 | |
profileCompatibility | 8 | |
avcLevel | 8 | |
reserved | 6 | |
lengthSizeMinusOne | 2 | |
reserved | 3 | |
numOfSPS | 5 | |
spsLength | 16 | |
sps | n | |
numOfPPS | 8 | |
ppsLength | 16 | |
pps | n |
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。