FLV协议分析

image-20200904120007085
FLV = FLV Header + FLV Body

1. FLV Header

FLV Header: 头三个字节为‘F‘ ’L’ ‘V’ 三个字节、版本、类型、偏移
在这里插入图片描述
在这里插入图片描述

2. FLV Body

FLV Body:包括pre tagsize 和 tag

2.1 pre tagsize

pre tagsize代表了前一个tag的大小,tag代表当前的数据
在这里插入图片描述

2.2 Tag Header

在这里插入图片描述

2.3 Tag Body

2.3.1 Script Tag Data

Script data: MetaData Tag,存储的是描述视频或⾳频的信息的数据,如宽度、⾼度、时间等等通,常该类型Tag会作为FLV⽂件的第⼀个tag,并且只有⼀个,跟在File Header后。在这里插入图片描述

  1. 第⼀个AMF包: 第1个字节表示AMF包类型,⼀般总是0x02,表示字符串。第2-3个字节为UI16类型值,标识字符串的⻓度,⼀般总是0x000A(“onMetaData”⻓度)。后⾯字节为具体的字符串,⼀般总为“onMetaData”(6F,6E,4D,65,74,61,44,61,74,61)。
  2. 第⼆个AMF包: 第1个字节表示AMF包类型,⼀般总是0x08,表示数组。第2-5个字节为UI32类型值,表示数组元素的个数。后⾯即为各数组元素的封装,数组元素为元素名称和值组成的对。常⻅的数组元素如下表所示。在这里插入图片描述
    在这里插入图片描述

:Lavf54.63.104即是 Libavformat version 54.63.104. 即是ffmpeg对于库的版本

2.3.2 Audio Tag Data

  1. 第一个Byte代表包含了⾳频数据的参数信息,实际上除了音频格式之外,其他的参数信息仅供参考,意义不大。
    在这里插入图片描述
  2. 第二个Byte代表了音频数据包的类型,0代表配置信息,1代表音频流数据。配置信息具体含义参考ISO-14496-3(2009-09)标准。
    在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

2.3.2 Video Tag Data

Video Tag Data 和 Audio Tag Data格式是相同的,区别在于其数据的含义不同

  1. 第1个Byte代表的含义,针类型和编码Id各占4bit
    在这里插入图片描述
  2. 第2个Byte代表的含义在这里插入图片描述
    CompositionTime:表示PTS相对于DTS的事件偏移量,单位毫秒
    即PTS = DTS + CompositionTime,位于整个tag的第14~16Byte。
    AVCDecoderConfigurationRecord:详细含义见ISOIEC 14496-15 Advanced Video Coding (AVC) 中有详细说明。
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值