您的位置:首页 > 文旅 > 美景 > 网站制作与管理技术标准实训教程_网络咨询服务公司经营范围_seo做的比较牛的公司_沈阳seo关键词排名

网站制作与管理技术标准实训教程_网络咨询服务公司经营范围_seo做的比较牛的公司_沈阳seo关键词排名

2024/12/23 8:13:26 来源:https://blog.csdn.net/u014552102/article/details/142456820  浏览:    关键词:网站制作与管理技术标准实训教程_网络咨询服务公司经营范围_seo做的比较牛的公司_沈阳seo关键词排名
网站制作与管理技术标准实训教程_网络咨询服务公司经营范围_seo做的比较牛的公司_沈阳seo关键词排名

一、引言

本文对FLV格式的FLV header进行简介,FLV文件的开头就是FLV header。

进行简介之前,请各位先从《音视频入门基础:FLV专题(1)——FLV官方文档下载》下载FLV的官方文档《video_file_format_spec_v10_1.pdf》和SWF的官方文档《swf-file-format-spec.pdf》。

《video_file_format_spec_v10_1.pdf》总共有89页,《swf-file-format-spec.pdf》总共有243页。本文下面所说的“页数”是指在pdf阅读器中显示的页数:

二、FLV的Simple data types

根据《video_file_format_spec_v10_1.pdf》第74页,FLV的Simple data types(简单数据类型)定义在SWF的官方文档中。Simple data types描述了FLV格式中的每个属性占用多少空间:

所以我们得翻阅SWF的官方文档《swf-file-format-spec.pdf》,该文档第15页到第20页描述了Simple data types(简单数据类型)。

第15页:

第18页:

其中:

SI8:有符号8位整数值。

SI16:有符号16位整数值。

SI32:32位带符号整数值。

SI8[n]:带符号的8位数组。n是数组元素的个数。

SI16[n]:带符号的16位数组。n是数组元素的个数。

UI8:无符号8位整数值。

UI16:无符号16位整数值。

UI32:无符号32位整数值。

UI8[n]:无符号的8位数组。n是数组元素的个数。

UI16[n]:无符号的16位数组。n是数组元素的个数。

UI24[n]:无符号的24位数组。n是数组元素的个数。

UI32[n]:无符号的32位数组。n是数组元素的个数。

UI64[n]:无符号的64位数组。n是数组元素的个数。

SB[nBits]:有符号的位值(nBits是用来存储值的位数)。
UB[nBits]:无符号的位值(nBits是用来存储值的位数)。

FB[nBits]:带符号的定点位值(nBits是用于存储值的位数)。

三、FLV header

根据《video_file_format_spec_v10_1.pdf》第74页,一个FLV文件应以FLV header为开始。可以看出来FLV header中的属性加起来总共占9个字节(Signature占3个字节,Version占1个字节,TypeFlagsReserved+TypeFlagsAudio+TypeFlagsReserved+TypeFlagsVideo占1个字节,DataOffset占4个字节,加起来总共9字节),所以FLV header为9字节:

Signature:FLV header的前3个字节为Signature,为文件格式标识。对于FLV格式,固定为“FLV”(0x46 0x4C 0x56)。

Version:FLV header的第4个字节为Version,为格式版本。对于FLV格式,值必须为1。

FLV header的第5个字节比较特殊:

第5个字节的前5位(8位等于1个字节)是保留位(TypeFlagsReserved),值必须是0。

第6位为音频类型标志(TypeFlagsAudio),值为1表示FLV文件中含有音频,值为0表示不含音频。

第7位也是保留位,值必须是0。
第8位为视频类型标志(TypeFlagsVideo),值为1表示FLV文件中含有视频,值为0表示不含视频。

所以如果FLV header第5个字节的值为0x04(二进制的0b00000100)表示该FLV文件中仅含有音频不含视频;第5个字节的值为0x01(二进制的0b00000001)表示该FLV文件中仅含有视频不含音频;第5个字节的值为0x05(二进制的0b00000101)表示该FLV文件中既含视频也含音频。

DataOffset:FLV header的第6到第9个字节为DataOffset。为整个FLV header的长度,单位为字节。值固定为9。

四、FLV File Body

根据《video_file_format_spec_v10_1.pdf》第74页至75页,在FLV header之后,FLV文件剩下的部分应由PreviousTagSize和Tag组成。FLV文件 = FLV header + PreviousTagSize0 + Tag1 + PreviousTagSize1 + Tag2 + ...+... + PreviousTagSizeN-1 + TagN + PreviousTagSizeN: 

PreviousTagSize0:FLV header之后紧接着的就是PreviousTagSize0,占4个字节,值必须为0。

五、FLV header实例分析

用notepad++打开《音视频入门基础:FLV专题(2)——使用FFmpeg命令生成flv文件》中生成的FLV文件,文件的开头(下图红框中的)就是FLV header。可以看到header为:0x46 0x4C 0x56 0x01 0x05 0x00 0x00 0x00 0x09。由于该FLV header的第5个字节的值为0x05,所以能推测出来该FLV文件中既含视频也含音频:

FLV header之后紧接着的就是PreviousTagSize0,值必须为0:

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com