欢迎来到天天文库
浏览记录
ID:35233646
大小:59.00 KB
页数:7页
时间:2019-03-22
《flv文件格式说明》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、FLV是一个二进制文件,由文件头(FLVheader)和很多tag组成。tag又可以分成三类:audio,video,script,分别代表音频流,视频流,脚本流(关键字或者文件信息之类)。 FLVHeader一般比较简单,包括文件类型之类的全局信息文件类型3bytes总是FLV(0x460x4C0x56),否则...版本1byte一般是0x01,表示FLVversion1流信息1byte倒数第一bit是1表示有视频,倒数第三bit是1表示有音频,其他都应该是0(有些软件如flvtool2可能造成倒数第四bit是1,不过也没发现有什么不
2、对)header长度4bytes整个文件头的长度,一般是9(3+1+1+4),有时候后面还有些别的信息,就不是9了 FLVBodyFLVbody就是由很多tag组成的,一个tag包括下列信息:previoustagsize4bytes前一个tag的长度,第一个tag就是0tag类型1byte三类:·8--音频tag·9--视频tag·18--脚本tag数据区长度3bytes 时间戳3bytes单位毫秒,如果是脚本tag就是0扩展时间戳1byte作为时间戳的高位streamsID3bytes总是0(不知道干啥用)数据区 根据不同的
3、tag类型就有不同的数据区 Audiotag数据区audio信息1byte前四位bits表示音频格式:·0--未压缩·1--ADPCM·2--MP3·5--Nellymoser8kHzmomo·6--Nellymoser下面两位bits表示samplerate:·0--5.5kHz·1--11kHz·2--22kHz·3--44kHz下面一位bit表示每个采样的长度:·0--snd8Bit·1--snd16Bit下面一位bit表示类型:·0--sndMomo·1--sndStereoaudio数据区不定 videotag数据区vide
4、o信息1byte前四位bits表示类型:·1--keyframe·2--innerframe·3--disposableinnerframe(H.263only)后四位bits表示编码器id:·2--SeronsonH.263·3--Screenvideo·4--On2VP6·5--On2VP6withoutchannel·6--Screenvideoversion2video数据区不定 scripttag数据区略n字... 最近做个小工具,修改音频的时间戳,来使音频视频同步,用的就是这些玩意儿。FLV(FlashVideo)是现在非
5、常流行的流媒体格式,由于其视频文件体积轻巧、封装播放简单等特点,使其很适合在网络上进行应用,目前主流的视频网站无一例外地使用了FLV格式。另外由于当前浏览器与FlashPlayer紧密的结合,使得网页播放FLV视频轻而易举,也是FLV流行的原因之一。 FLV视频格式是Adobe公司设计开发的,目前已经免费开放,现在的版本是v10。下面我们就了解一下FLV文件格式。 FLV是流媒体封装格式,我们可以将其数据看为二进制字节流。总体上看,FLV包括文件头(FileHeader)和文件体(FileBody)两部分,其中文件体由一系列
6、的Tag及TagSize对组成。因此一个FLV文件看上去是下面的结构:其中,PreviousTagSize紧跟在每个Tag之后,占4个字节表示一个UI32类型的数值,表示前面一个Tag的大小。需要注意的是,PreviousTagSize#0的值总是为0。Tag类型包括视频、音频和Script,且每个Tag只能包含一种类型的数据。下面我们看看FileHeader和Tag的具体结构,为了方便大家理解,我贴一个实际FLV文件的字节流图片,图片中把不同部分区分了颜色。一、FileHeader结构 FileHeader在当前版本中总是由9个字
7、节组成,如图中蓝色区域所示。 第1-3字节为文件标识(Signature),总为“FLV”(0x460x4C0x56),如图中紫色区域。 第4字节为版本,目前为1(0x01)。 第5个字节的前5位保留,必须为0。 第5个字节的第6位表示是否存在音频Tag。 第5个字节的第7位保留,必须为0。 第5个字节的第8位表示是否存在视频Tag。 第6-9个字节为UI32类型的值,表示从FileHeader开始到FileBody开始的字节数,版本1中总为9。 二、PreviousTagSize结构 如图中红色位置所示
8、。 三、Tag结构 Tag包括TagHeader和TagData两部分。不同类型的Tag的Header结构是相同的,但是Data结构各不相同。如图中绿色和黄色区域分别表示TagHeader数据和TagD
此文档下载收益归作者所有