FLV文件格式解析 1.FLV文件整体结构 2.Audio Tag Data结构 3.Video Tag Data结构 4.Script Tag Data结构(控制帧)

文章转自:http://www.cnblogs.com/CoderTian/p/8278369.html

FLV文件由FLV header和FLV body组成,FLV body由一系列的FLV tags组成,如下图所示
FLV文件格式解析
1.FLV文件整体结构
2.Audio Tag Data结构
3.Video Tag Data结构
4.Script Tag Data结构(控制帧)

tag又可以分成三类:audio,video,script,分别代表音频流,视频流,脚本流,而每个tag又由tag header和tag data组成。每个Tag前面还包含了Previous Tag Size字段,表示前面一个Tag的大小。整个FLV文件的详细的组成如下图所示

FLV文件格式解析
1.FLV文件整体结构
2.Audio Tag Data结构
3.Video Tag Data结构
4.Script Tag Data结构(控制帧)

2.Audio Tag Data结构

音频tag开始的第1个字节包含了音频数据的参数信息,从第2个字节开始为音频流数据。结构如下图所示
FLV文件格式解析
1.FLV文件整体结构
2.Audio Tag Data结构
3.Video Tag Data结构
4.Script Tag Data结构(控制帧)

音频tag的第一个字节的前4位代表音频编码类型,各个取值的含义如下

FLV文件格式解析
1.FLV文件整体结构
2.Audio Tag Data结构
3.Video Tag Data结构
4.Script Tag Data结构(控制帧)

第5-6位代表音频采样率,各取值的含义如下:

FLV文件格式解析
1.FLV文件整体结构
2.Audio Tag Data结构
3.Video Tag Data结构
4.Script Tag Data结构(控制帧)

 第7位代表音频采样精度,各取值的含义如下
FLV文件格式解析
1.FLV文件整体结构
2.Audio Tag Data结构
3.Video Tag Data结构
4.Script Tag Data结构(控制帧)
第8位代表音频的声道数,各取值含义如下:
FLV文件格式解析
1.FLV文件整体结构
2.Audio Tag Data结构
3.Video Tag Data结构
4.Script Tag Data结构(控制帧)
从第2个字节开始就为音频数据
FLV文件格式解析
1.FLV文件整体结构
2.Audio Tag Data结构
3.Video Tag Data结构
4.Script Tag Data结构(控制帧)
 如果音频数据编码格式为AAC
FLV文件格式解析
1.FLV文件整体结构
2.Audio Tag Data结构
3.Video Tag Data结构
4.Script Tag Data结构(控制帧)

3.Video Tag Data结构

视频Tag也用开始的第1个字节包含视频数据的参数信息,从第2个字节为视频流数据。结构如下图所示
FLV文件格式解析
1.FLV文件整体结构
2.Audio Tag Data结构
3.Video Tag Data结构
4.Script Tag Data结构(控制帧)

第1个字节的前4位表示帧类型,各个取值的含义如下:

FLV文件格式解析
1.FLV文件整体结构
2.Audio Tag Data结构
3.Video Tag Data结构
4.Script Tag Data结构(控制帧)

后4位表示视频编码类型,各个取值的含义如下:

FLV文件格式解析
1.FLV文件整体结构
2.Audio Tag Data结构
3.Video Tag Data结构
4.Script Tag Data结构(控制帧)

从第二个字节开始就是视频数据

FLV文件格式解析
1.FLV文件整体结构
2.Audio Tag Data结构
3.Video Tag Data结构
4.Script Tag Data结构(控制帧)

如果视频为AVC

FLV文件格式解析
1.FLV文件整体结构
2.Audio Tag Data结构
3.Video Tag Data结构
4.Script Tag Data结构(控制帧)

4.Script Tag Data结构(控制帧)

该类型Tag又通常被称为Metadata Tag,会放一些关于FLV视频和音频的元数据信息如:duration、width、height等。通常该类型Tag会跟在File Header后面作为第一个Tag出现,而且只有一个。结构如下图所示
FLV文件格式解析
1.FLV文件整体结构
2.Audio Tag Data结构
3.Video Tag Data结构
4.Script Tag Data结构(控制帧)
第一个AMF包:第1个字节表示AMF包类型,一般总是0x02,表示字符串。第2-3个字节为UI16类型值,标识字符串的长度,一般总是0x000A(“onMetaData”长度)。后面字节为具体的字符串,一般总为“onMetaData”(6F,6E,4D,65,74,61,44,61,74,61)。
第二个AMF包:第1个字节表示AMF包类型,一般总是0x08,表示数组。第2-5个字节为UI32类型值,表示数组元素的个数。后面即为各数组元素的封装,数组元素为元素名称和值组成的对。常见的数组元素如下:
FLV文件格式解析
1.FLV文件整体结构
2.Audio Tag Data结构
3.Video Tag Data结构
4.Script Tag Data结构(控制帧)
参考资料:
flv_video_file_format_specification _v10.pdf
FLV文件由FLV header和FLV body组成,FLV body由一系列的FLV tags组成,如下图所示
FLV文件格式解析
1.FLV文件整体结构
2.Audio Tag Data结构
3.Video Tag Data结构
4.Script Tag Data结构(控制帧)

tag又可以分成三类:audio,video,script,分别代表音频流,视频流,脚本流,而每个tag又由tag header和tag data组成。每个Tag前面还包含了Previous Tag Size字段,表示前面一个Tag的大小。整个FLV文件的详细的组成如下图所示

FLV文件格式解析
1.FLV文件整体结构
2.Audio Tag Data结构
3.Video Tag Data结构
4.Script Tag Data结构(控制帧)

2.Audio Tag Data结构

音频tag开始的第1个字节包含了音频数据的参数信息,从第2个字节开始为音频流数据。结构如下图所示
FLV文件格式解析
1.FLV文件整体结构
2.Audio Tag Data结构
3.Video Tag Data结构
4.Script Tag Data结构(控制帧)

音频tag的第一个字节的前4位代表音频编码类型,各个取值的含义如下

FLV文件格式解析
1.FLV文件整体结构
2.Audio Tag Data结构
3.Video Tag Data结构
4.Script Tag Data结构(控制帧)

第5-6位代表音频采样率,各取值的含义如下:

FLV文件格式解析
1.FLV文件整体结构
2.Audio Tag Data结构
3.Video Tag Data结构
4.Script Tag Data结构(控制帧)

 第7位代表音频采样精度,各取值的含义如下
FLV文件格式解析
1.FLV文件整体结构
2.Audio Tag Data结构
3.Video Tag Data结构
4.Script Tag Data结构(控制帧)
第8位代表音频的声道数,各取值含义如下:
FLV文件格式解析
1.FLV文件整体结构
2.Audio Tag Data结构
3.Video Tag Data结构
4.Script Tag Data结构(控制帧)
从第2个字节开始就为音频数据
FLV文件格式解析
1.FLV文件整体结构
2.Audio Tag Data结构
3.Video Tag Data结构
4.Script Tag Data结构(控制帧)
 如果音频数据编码格式为AAC
FLV文件格式解析
1.FLV文件整体结构
2.Audio Tag Data结构
3.Video Tag Data结构
4.Script Tag Data结构(控制帧)

3.Video Tag Data结构

视频Tag也用开始的第1个字节包含视频数据的参数信息,从第2个字节为视频流数据。结构如下图所示
FLV文件格式解析
1.FLV文件整体结构
2.Audio Tag Data结构
3.Video Tag Data结构
4.Script Tag Data结构(控制帧)

第1个字节的前4位表示帧类型,各个取值的含义如下:

FLV文件格式解析
1.FLV文件整体结构
2.Audio Tag Data结构
3.Video Tag Data结构
4.Script Tag Data结构(控制帧)

后4位表示视频编码类型,各个取值的含义如下:

FLV文件格式解析
1.FLV文件整体结构
2.Audio Tag Data结构
3.Video Tag Data结构
4.Script Tag Data结构(控制帧)

从第二个字节开始就是视频数据

FLV文件格式解析
1.FLV文件整体结构
2.Audio Tag Data结构
3.Video Tag Data结构
4.Script Tag Data结构(控制帧)

如果视频为AVC

FLV文件格式解析
1.FLV文件整体结构
2.Audio Tag Data结构
3.Video Tag Data结构
4.Script Tag Data结构(控制帧)

4.Script Tag Data结构(控制帧)

该类型Tag又通常被称为Metadata Tag,会放一些关于FLV视频和音频的元数据信息如:duration、width、height等。通常该类型Tag会跟在File Header后面作为第一个Tag出现,而且只有一个。结构如下图所示
FLV文件格式解析
1.FLV文件整体结构
2.Audio Tag Data结构
3.Video Tag Data结构
4.Script Tag Data结构(控制帧)
第一个AMF包:第1个字节表示AMF包类型,一般总是0x02,表示字符串。第2-3个字节为UI16类型值,标识字符串的长度,一般总是0x000A(“onMetaData”长度)。后面字节为具体的字符串,一般总为“onMetaData”(6F,6E,4D,65,74,61,44,61,74,61)。
第二个AMF包:第1个字节表示AMF包类型,一般总是0x08,表示数组。第2-5个字节为UI32类型值,表示数组元素的个数。后面即为各数组元素的封装,数组元素为元素名称和值组成的对。常见的数组元素如下:
FLV文件格式解析
1.FLV文件整体结构
2.Audio Tag Data结构
3.Video Tag Data结构
4.Script Tag Data结构(控制帧)
参考资料:
flv_video_file_format_specification _v10.pdf