FFmpeg从入门到出家(FLV文件结构解析)
FLV(FLASH VIDEO),是一种常用的文件封装格式,目前国内外大部分视频分享网站都是采用的这种格式。其标准定义为《Adobe Flash Video File Format Specification》。RTMP协议也是基于FLV视频格式的。 FLV的文件格式在该规范中已阐述清楚,本章节不再重复描述,而是结合下面的示例具体阐述如何分析FLV文件。 图3. FLV文件结构示例1 图4. FLV文件结构示例2 FLV文件的分析工具有很多,这里给大家推荐FLV Parser这个小软件,通过它可以很容易的看到文件的组成结构。 3.1 文件结构 从整个文件上看,FLV是由Header和File Body组成,如下图所示: 图5. FLV文件总体结构 1.FLV Header - 长度为9,其结构的标准定义参见标准定义见E.2 The FLV header; FLV File Body - 由一连串的PreviousTagSize + Tag构成。previousTagSize是4个字节的数据,表示前一个tag的size。标准定义参见E.3 The FLV File Body。 以图3. FLV文件结构示例1为例分析整体结构: 1.位置0x00000000 - 0x00000008, 共9个字节,为FLV Header,其中: ◦0x00000000 - 0x00000002 :