FLV协议5分钟入门浅析

FLV协议是流行的流媒体格式,用于HTTP-FLV直播。它由header和file body组成,body中包含Video、Audio和Script Tags。Video Tags主要存储H.264编码的AVCVIDEOPACKE,Audio Tags涉及AAC编码,Script Tags用于元数据如onMetaData。
摘要由CSDN通过智能技术生成

FLV协议简介

FLV(Flash Video)是一种流媒体格式,因其体积小、协议相对简单,很快便流行开来,并得到广泛的支持。

常见的HTTP-FLV直播协议,就是使用HTTP流式传输通过FLV封装的音视频数据。对想要了解HTTP-FLV的同学来说,了解FLV协议很有必要。

概括地说,FLV 由 FLV header 跟 FLV file body 两部分组成,而 FLV file body 又由多个 FLV tag组成。

FLV = FLV header + FLV file body
FLV file body = PreviousTagSize0 + Tag1 + PreviousTagSize1 + Tag2 + ... + PreviousTagSizeN-1 + TagN

FLV tag又分为3种类型:

  • Video Tag:存放视频相关数据;
  • Audio Tag:存放音频相关数据;
  • Script Tag:存放音视频元数据;

在实际讲解FLV协议前,首先对单位进行约定:

类型 定义
0x... 16进制数据
SI8 有符号8位整数
SI16 有符号16位整数
SI24 有符号24位整数
SI32 有符号32位整数
STRING Sequence of Unicode 8-bit characters (UTF-8), terminated with 0x00 (unless otherwise specified)
UI8 无符号8位整数
UI16 无符号16位整数
UI24 无符号24位整数
UI32 无符号32位整数
xxx [ ] 类型为xxx的数组
xxx [n] 类型为xxx的数组,数组长度为n

FLV header

FLV header由如下字段组成,其中:

  1. 前三个字节内容固定是FLV
  2. 最后4个字节内容固定是9(对FLV版本1来说)
字段 字段类型 字段含义
Signature UI8 签名,固定为'F' (0x46)
Signature UI8 签名,固定为'L' (0x4c)
Signature UI8 签名,固定为'V' (0x56)
Version UI8 版本,比如 0x01 表示 FLV 版本 1
TypeFlagsReserved UB[5] 全为0
TypeFlagsAudio UB[1] 1表示有audio tag,0表示没有
TypeFlagsReserved UB[1] 全为0
TypeFlagsVideo UB[1] 1表示有video tag,0表示没有
DataOffset UI32 FLV header的大小,单位是字节

FLV file body

FLV file body很有规律,由一系列的TagSize和Tag组成,其中:

  1. PreviousTagSize0 总是为0;
  2. tag 由tag header、tag body组成;
  3. 对FLV版本1,tag header固定为11个字节,因此,PreviousTagSize(除第1个)的值为 11 + 前一个tag 的 tag body的大小;
字段 字段类型 字段含义
PreviousTagSize0 UI32 总是0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值