天下之事,必先处之难,而后易之。
君临
知我者谓我心忧,不知我者谓我何求

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

1.FLV文件整体结构

FLV文件由FLV header和FLV body组成,FLV body由一系列的FLV tags组成,如下图所示

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

2.Audio Tag Data结构

音频tag开始的第1个字节包含了音频数据的参数信息,从第2个字节开始为音频流数据。结构如下图所示

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

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

 第7位代表音频采样精度,各取值的含义如下
第8位代表音频的声道数,各取值含义如下:
从第2个字节开始就为音频数据
 如果音频数据编码格式为AAC

3.Video Tag Data结构

视频Tag也用开始的第1个字节包含视频数据的参数信息,从第2个字节为视频流数据。结构如下图所示

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

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

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

如果视频为AVC

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

该类型Tag又通常被称为Metadata Tag,会放一些关于FLV视频和音频的元数据信息如:duration、width、height等。通常该类型Tag会跟在File Header后面作为第一个Tag出现,而且只有一个。结构如下图所示
第一个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_video_file_format_specification _v10.pdf
posted on 2018-03-15 10:19  boonya  阅读(377)  评论(0编辑  收藏  举报

我有佳人隔窗而居,今有伊人明月之畔。
轻歌柔情冰壶之浣,涓涓清流梦入云端。
美人如娇温雅悠婉,目遇赏阅适而自欣。
百草层叠疏而有致,此情此思怀彼佳人。
念所思之唯心叩之,踽踽彳亍寤寐思之。
行云如风逝而复归,佳人一去莫知可回?
深闺冷瘦独自徘徊,处处明灯影还如只。
推窗见月疑是归人,阑珊灯火托手思忖。
庐居闲客而好品茗,斟茶徐徐漫漫生烟。

我有佳人在水之畔,瓮载渔舟浣纱归还。
明月相照月色还低,浅近芦苇深深如钿。
庐山秋月如美人衣,画堂春阁香气靡靡。
秋意幽笃残粉摇曳,轻轻如诉画中蝴蝶。
泾水潺潺取尔浇园,暮色黄昏如沐佳人。
青丝撩弄长裙翩翩,彩蝶飞舞执子手腕。
香带丝缕缓缓在肩,柔美体肤寸寸爱怜。
如水之殇美玉成欢,我有佳人清新如兰。
伊人在水我在一边,远远相望不可亵玩。