FLV协议分析

本文详细介绍了FLV协议,包括其header和body结构,特别强调了FLVheader与RTMP数据的关系,以及如何将MP4转换为FLV文件以支持流媒体传输。
摘要由CSDN通过智能技术生成

FLV是FLASH VIDEO的简称,它是Adobe 公司推出的一种视频封装格式,FLV主要用于流媒体系统。

这节我们来详细了解一下FLV协议,之前我写过一篇,那篇有点乱,看了李超老师的课再来总结一下。

FLV协议分为FLV header和FLV body

首先FLV header占9个字节

1 - 3 : ‘F’ , ‘L’ , ‘V’;

4 : Version,FLV的版本为1;

5 : Type;

6 - 9 : 版本为1时填9,表示FLV header占9个字节

之后是FLV Body,FLV body包含一个一个的pre tagsize , Tag。

1.pre tagsize(4个字节)表示前面一个tag的大小,但是FLV中的表示和我们所习惯的有偏差(普通协议:尺寸在前,内容在后,但是RTMP,内容在前,尺寸在后)

2.对于每一个tag又分为tag head 和 tag body

2.1其中tag header占11个字节:

 TT(Tag Type),DataSize(数据大小),TimeStamp(时间戳),E(扩展时间戳),SID(流 ID)

        Tag Type:占1字节,表示tag的类型;0x08表示音频,0x09表示视频,0x12表示script

        DataSize:占3个字节,表示该tag的data部分的大小

        TimeStamp:占3字节,表示tag的时间戳

        TimestampExtended:1字节,表示时间戳的扩展字节

        StreamId:3字节,总为0

2.2

Tag Data(数据内容,分为 Audio 和 Video)

而音频和视频的tag Data都分为 header 和 Audio data; header 和 Video data

2.2.1 音频header 包含音频格式 采样率 采样精度和音频声道

2.2.2 Audio data包含AACPacketType 和 AAC Data

                AAC Data:AAC数据,又分为配置信息和aac数据

同理

2.2.3 视频header 包含帧类型和编码ID

2.2.4 Video Data包含AVCPacketType , Timestamp 和 AVCPacketData

                AVCPacketData又分为pps sps 和 nalu数据

总结:

FLV 协议与RTMP协议

所有RTMP 数据在FLV中要加一个头 header,RTMP 数据就是tag data,

变成flv文件,要在tag data前面加一个tag header,再加一个FLV Header 9个字节的文件头。

将mp4 推流的时候先转成flv文件

  • 23
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值