FLV与RTMP关系密切,你甚至可以认为FLV就是RTMP。
FLV与RTMP的区别?
RTMP加一个头tag就成了FLV
我们现在分析下FLV的协议
FLV包括FLV Header和数据两部分
我们先分析FLV Header,FLV Header有九个字节。我们来分析下
1-3字节表示当前是‘F’ 、'L'、‘V’
4字节表示当前的flv版本号
5字节:具体表示为1-5位为0,6位代表存在音频,7位保留位是0, 8位代表存在视频
6-9字节:代表header的大小,目前数值为9
下面我们看看下FLV的数据部分
FLV的数据是由pre tagsize 、tag、pre tagsize 、tag交替出现组成。
pre tagsize 占四个字节,表示前一个tag的大小。第一个pre tagsize为0,因为是第一个所以为0.
我们重点分析下tag
Tag有三种类型,Audio Tag(音频Tag),Video Tag(视频Tag),script Tag(又称Metadata Tag)
tag的表示如下:
tag的类型: 1字节 音频0X08 视频 0x09 script data 0x12
DATA SIZE:3字节 tag大小
TimeStamp:3字节 时间戳
E:时间戳扩展,如果3字节不够用,再增加一个字节
StreamId:3个字节总是为0
我用一个思维导图来描述
https://blog.csdn.net/weixin_42462202/article/details/88661883 这篇文章写的特别详细,可以结合思维导图来理解。