数据与封装格式FLV封装格式

Posted 叮咚咕噜

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据与封装格式FLV封装格式相关的知识,希望对你有一定的参考价值。

本文就是对flv封装格式的总结,先是阐述FLV的基本背景,然后对其整体结构进行描述,再分别分析各个子模块的组成

一、FLV

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

二、FLV封装格式

1、FLV整体结构

  • FLV = FLV Header + FLV Body
  • FLV Body = PreviousTagSizen + TAGn
  • TAG = Tag Header + Tag Data
  • 其中,每个Tag前面还包含了Previous Tag Size字段,表示前面一个Tag的大小。
  • Tag有三种类型,Audio Tag(音频Tag)Video Tag(视频Tag)script Tag(又称Metadata Tag)
  • 一般一个flv文件由一个头部信息,一个script Tag,以及若干个video Tag和audio Tag组成。

    下面分别对每一部分数据进行解析

2、Flv Header

3、PreviousTagSizen、Tag Header

  • PreviousTagSizen :4字节,表示前一个Tag的长度,Tag Header size+Tag Dta size
  • 对于不同类型的Tag,“Tag Header”的格式都是相同的,“Tag Body”的格式就不一样了

4、Tag Data

下面详细介绍一下三种Tag的Tag Data部分的结构

4.1Audio Tag Data结构(音频Tag)

  • 音频Tag开始的第1个字节包含了音频数据的参数信息,从第2个字节开始为音频流数据

4.2 Video Tag Data结构(视频Tag)

  • 视频Tag也用开始的第1个字节包含视频数据的参数信息,从第2个字节为视频流数据

4.3 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类型值,表示数组元素的个数。后面即为各数组元素的封装,数组元素为元素名称和值组成的对。常见的数组元素如表7所示。

含义

duration

 时长

width

 视频宽度

height

 视频高度

videodatarate

 视频码率

framerate

 视频帧率

videocodecid

 视频编码方式

audiosamplerate

 音频采样率

audiosamplesize

 音频采样精度

stereo

 是否为立体声

audiocodecid

 音频编码方式

filesize

 文件大小

三、参考

视音频数据处理入门:FLV封装格式解析

视音频编解码学习工程:FLV封装格式分析器

FLV格式详解

以上是关于数据与封装格式FLV封装格式的主要内容,如果未能解决你的问题,请参考以下文章

FLV 数据封装格式

视音频数据处理入门:FLV封装格式解析

视音频数据处理入门:FLV封装格式解析

封装格式---FLV---数据分析

封装格式---FLV---文件格式解析

FLV封装格式分析