FLV与RTMP协议有密切的联系。每个RTMP的数据加个头就是FLV了。
FLV文件是以FLV格式存储的。
FLV文件 = FLV header + 数据
FLV header,占9字节:
- 前3字节:F、L、V
- 版本,值为1。
- 类型
- 0~5位,保留,必须是0。
- 6位,是否有音频tag。ii
- 7位,保留,必须是0。
- 8位,是否有视频tag。
- 偏移量,占4字节,Header的大小,必须是9。
数据是由一个个分组组成,一个分组的结构:
- pre tagsize,占4字节,前一个tag的大小,即tag大小在tag的后面存放。
- Tag
Tag的结构:
- TT,1字节,Tag类型。0x08音频,0x09视频,0x12script脚本。
- DataSize,3字节,Tag body数据大小(PreTagSize - Tag Header Size)
- TimeSta,3字节,时间戳(毫秒)
- E,1字节,扩展时间戳。
- SID,3字节,StreamID,始终是0。
- Tag DATA
Tag DATA可以保存两种类型数据:音频、视频。
- 音频Tag DATA
- header
- SF,采样率
- SR
- SS
- ST
data
- header
- 视频Tag DATA