FLV格式解析

2021-02-19  本文已影响0人  水木年华1987

1.FLV文件格式如下,由flv头和一系列tag组成,tag又分为script tag、音频tag、视频tag。 PreviousTagSize表示上一个tag的大小,占位4Byte。

FLV Header PreviousTagSize0 Tag1 PreviousTagSize1 Tag2 ...
  1. FLV Header由9个字节组成,说明如下
字段名称 字段大小 字段说明
Signature 1Byte Signature byte always 'F' (0x46)
Signature 1Byte Signature byte always 'L' (0x4C)
Signature 1Byte Signature byte always 'V' (0x56)
Version 1Byte flv版本号 (一般为0x01表示版本1)
TyepFlagsReserved 5bit 保留位
TypeFlagsAudio 1bit 音频标志位(1:存在音频,0:不存在音频)
TypeFlagsReserved 1bit 保留位
TypeFlagsVideo 1bit 视频标志位(1:存在视频,0:不存在视频)
DataOffset 4Byte FLV header 长度(版本1为9)
  1. tag是由Tag Header和Tag Data组成,不同类型的Tag其TagHeader部分总是相同,共11个字节。我们可以根据TagType知道后续的tag是音频还是视频,根据TimeStamp来进行视音频同步。

|---------------------------------------------------------------Tag ------------------------------------------------|

Tag Header Tag Data

|----------------------------------------------------------Tag Header---------------------------------------------|

TagType DataSize TimeStamp TimeStampExt StreamId
1Byte 3Byte 3Byte 1Byte 3Byte
1-2bit位:必须为0,保留位;第3bit位: 0表示未加密,1表示加密,一般默认0;4-8bit位:8:音频、9:视频、18:script数据; Tag Data的长度,不包括11字节的Tag Header 时间戳,毫秒为单位,则意味着要将时间戳单位关系换算好;第一个tag时,该值总是0 扩展时间戳(当时间戳不够时,当做高8位,很少用) 流id,总是0
  1. flv文件第一个tag一般是script tag,script tag Header如下图所示。scriptTag数据主要是文件的元数据信息Metdata,包括视频时长、分辨率、视频帧率、码率、音频采样大小等等信息。 image.png
  1. flv的音频tag。
上一篇 下一篇

猜你喜欢

热点阅读