This is my study note of FLV.

本文图片均是源自网上,仅是笔记

FLV(Flash Video)是Adobe公司推出的一种流媒体格式,由于其封装后的音视频文件体积小、封装简单等特点,非常适合于互联网上使用。

概述

Alt text
FLV封装格式是由一个文件头(flie header)和文件体(file Body)组成,其中文件体又由若干个Previous Tag Size字段+tag组成。Previous Tag Size排在tag之前,由4个字节组成,它记录了前一个Tag的大小,用于逆向读取处理。Flv header后的第一个Previous Tag Size为0。,一般Tag可分为三个种类:脚本(帧)数据类型、音频数据类型、视频数据。

FLV文件详细内容

Alt text

三种Tag包

1.Script Tag Data结构

此类型的Tag存放一些关于音视频的元信息,例如duration、width、height等,通常它会做为Flv文件的第一个tag,并且只有一个。

该类型的tag结构如下:
Alt text

  • AMF1包

此包第一个字节表示AMF包类型,一般总是0x02,表示字符串。2-3字节标识该字符串的长度,后面字节为具体字符串。

  • AMF2包
    第一个字节表示AMF包类型,一般总是0x08,表示数组。2-5字节表示UI32类型值,表示该数组元素的个数,随后数据为各数组元素的封装。数组元素为元素名称和值组成的对,如下:
    Alt text

2.Audio Tag Data结构

第一个字节包含了音频数据的参数信息,第二个字节开始为音频数据。
Alt text

Audio Tag Data结构:
Alt text

3.Video Tag Data结构

第一个字节包含了视频数据的参数信息,第二个字节开始为视频数据。
Alt text
Video Tag Data结构:
Alt text