视频封装格式之flv

视频封装格式之flv

        FLV(Flash Video)是Adobe公司设计开发的一种流行的流媒体格式,由于其视频文件体积轻巧、封装简单等特点,使其很适合在互联网上进行应用。此外,FLV可以使用Flash Player进行播放,而Flash Player插件已经安装在全世界绝大部分浏览器上,这使得通过网页播放FLV视频十分容易。目前主流的视频网站如优酷网,土豆网,乐视网等网站无一例外地使用了FLV格式。FLV封装格式的文件后缀通常为“.flv”。

        Flash Video是一种流行的网络视频封装格式(flv,f4v),其封装的视频文件中常见的视频编码格式是vp6、H.264、avc,常见的音频编码格式是aac和mp3等;此封装格式的特点是视频质量良好、体积小、在线播放且非常普及。

       FLV总体结构

        总体上,flv包括文件头(File Header)和文件体(File Body)两部分,其中文件体由一些列的Tag组成,大致结构如下:

        注意,每个Tag前面包含一个previous tag size字段,表示前面一个Tag的大小。Tag的类型可以是视频、音频或者Script(此Tag通常放在Header之后最为第一个Tag且只有一个),每个Tag只能包含以上三种类型数据中的一种,下面是flv文件的详细结构:

        Flie Header:在当前版本中总是有9个字节组成,上表中给出了各个字节的含义;

        Privious Tag Size #n:占用4个字节,表示上一个Tag的长度,当然#0的大小是0;

        Tag #n:其Header占用11个字节,结构包含Tag Header和Tag Data两部分,不同类型的Tag的Header结构是相同的,但是其Data结构个不相同。

        1. Audio Tag解析

        Audio Tag Header:的大小是11个字节;

        Audio Tag Data:开始的第1个字节包含了音频数据的参数信息,从第2个字节开始为音频流数据;第一个字节的前四位的数值表示音频数据格式,第5、6的数值表示采用率(0=5.5KHz,1=11KHz,2=22KHz),第7位表示采样精度(0=8bits,1=16bits);第8位表示音频类型(0=mono,1=stereo);

        2. Video Tag解析

        Video Tag Header:的大小是11个字节;

        Video Tag Data:开始的第1个字节包含了音频数据的参数信息,从第2个字节开始为音频流数据;第一个字节的前4位的数值表示帧类型,后4位的数值表示视频编码ID:1=JPEG,2=H.263,7=AVC等;

        3. MetaData Tag解析

        该类型Tag又通常被称为Script Tag,会放一些关于FLV视频和音频的参数信息,如duratuin、width、height等,该类型Tag会跟在File Header后面作为第一个Tag出现,且只有一个。

        Script Tag Header:大小占用11个字节;

        Script Tag Data:该Tag Data结构包含两个AMF包:


        第一个AMF包:第一个字节是AMF包类型,0x02表示字符串,第2、3个字节是UI16类型值,表识字符串长度,一般总是0x000A(10,也就是”onMetaData“的长度),后面字节为具体的字符串,一般是”onMetaData“(6F 6E 4D 65 74 61 44 61 74 61);

        第二个AMF包:第1个字节表示AMF包类型,一般总是0x08,表示数组,第2-5个字节为UI32类型值,表示数组元素的个数,后面即为个数组元素的封装,数组元素为元素名称和值组成的对--第1-2个字节表示元素名称的长度,假设为L,后面跟着为长度为L的字符串,第L+3个字节表示元素值的类型,后面跟着为对应值,占用字节数取决于值的类型。

        常见的MetaData值和含义:duration(时长)、width(视频宽度)、height(视频高度)、videodatarate(视频码率)、framerate(视频帧率)、videocodecid(视频编码方式)、audiosamplerate(视频采样率)、audiosamplesize(视频采样精度)、stereo(是否为立体声)、audiocodecid(音频编码方式)、filesize(文件大小)。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值