之前我们提到了苹果拒绝使用RTMP协议并推出了自己的HLS技术。但是即使在苹果的打压下,RTMP还是被广泛使用着。因此,学习RTMP协议还是非常有必要的。而今天来介绍的是与RTMP协议非常类似的一种协议——FLV。
FVL文件格式由FLV Header和FLV Body两部分组成。其中,FLV Header由9个字节组成,Body由Pre TagSize和Tag组成。
FLV Header:
它由 9 个字节组成:3 个字节的 “F”“L”“V”字母,用于标记该文件是 FLV 文件;1 个字节的 Version,指明使用的 FLV 文件格式的版本;1 个字节的 Type 标识,用于表明该 FLV 文件中是否包括音频或视频;4 个字节的 FLV Header 长度。
Type 标识(TypeFlag)又可以细分为: 1bit 用于标识 FLV 文件中是否有音频数据;1bit 标识 FLV 文件中是否有视频数据;如果两个 bit 位同时置 1,说明该 FLV 文件中既有音频数据又有视频数据,这也是通常情况下 FLV Header 的设置;除了两个 bit 的音视频数据标识外,其他位都是预留位,必须全部置 0。详细的含义可以参考下面张图表: