2024年3月15日发(作者:)
FLV文件格式
本文部分摘自: /s/blog_
参考了Adobe 官方的
不但包括 FLV 格式说明, 还包括 F4V 格式说明.
FLV是流媒体封装格式,可将其数据看为二进制字节流,其字节编码格式为
BigEndianUnicode 。总体上看,FLV包括文件头(File Header)和文件体(File Body)
两部分,其中文件体由一系列的Tag及Tag Size对组成。因此一个FLV文件看上
去是下面的结构:
其中,Previous Tag Size紧跟在每个Tag之后,占4个字节表示一个UI32类型的
数值,表示前面一个Tag的大小。需要注意的是,Previous Tag Size #0的值总是
为0。Tag类型包括视频、音频和Script,且每个Tag只能包含一种类型的数据。
下面我们看看File Header和Tag的具体结构,为了方便大家理解,我贴一个实
际FLV文件的字节流图片,图片中把不同部分区分了颜色。
一、File Header结构
File Header的长度和结构是固定的,在当前版本中总是由9个字节组成,如图
中蓝色区域所示。
第1-3字节为文件标识(Signature),总为“FLV”(0x46 0x4C 0x56),如图中
紫色区域。
第4字节为版本,目前为1(0x01)。
第5个字节的前5位保留,必须为0。
第5个字节的第6位表示是否存在音频Tag。
第5个字节的第7位保留,必须为0。
第5个字节的第8位表示是否存在视频Tag。
第6-9个字节为UI32类型的值,表示从File Header开始到File Body开始的字
节数,版本1中总为9。
二、Previous Tag Size结构
如图中红色位置所示。
三、Tag结构
Tag包括Tag Header和Tag Data两部分。不同类型的Tag的Header结构是相
同的,但是Data结构各不相同。如图中绿色和黄色区域分别表示Tag Header数
据和Tag Data数据。
当前版本的Tag Header结构占用11个字节。
第1个字节表示Tag类型,包括音频(0x08)、视频(0x09)和script data(0x12),
发布评论