FLV协议是一种常见的视频文件格式,现在很多的直播中经常使用到http-flv协议,即在http上传送flv格式数据。由于笔者从事直播系统后台开发,对flv格式的学习是必不可少的。在笔者对flv文件格式的学习过程中,将flv格式用图的方式画出来,希望对大家学习flv格式有帮助。
学习flv最靠谱的方案是看Adobe公司的文档,非常详细,百度搜索video_file_format_spec_v10_1.pdf文件即可。
flv整体可以分为两部分,FLV Header和FLV Body。其中FLV Body由多个PreviousTagSize和Tag组成,PreviousTagSize表明了前一个Tag的大小。结构如下图:
flv header中包含了flv的版本号,是否包含音频,视频等信息。详细定义请参照
flv_v10_1_adobe.pdf文档中的定义,结构如下图:
Tag由tag header和data两部分组成。结构如下图:
Tag header中定义了Tag对应的Data的类型(音频、视频,脚本等),时间戳等信息。
详细定义请参照flv_v10_1_adobe.pdf文档中的定义,结构如下图:
Data中主要关注三种类型:音频、视频,脚本。
Video类型表明Data中存储的是视频数据,由Video Tag Header和Video Data组成。视频的编码类型可以是H264、H265等等。详细定义请参照flv_v10_1_adobe.pdf文档中的定义,结构如下图:
Audio类型表明Data中存储的是音频数据,由Audio Tag Header和Audio Data组成。音频的编码类型可以是aac、mp3等。详细定义请参照flv_v10_1_adobe.pdf文档中的定义,结构如下图:
Script类型表明Data中存储的是脚本数据,存储的格式是AMF格式。AMF格式的定义参考amf0_spec_121207.pdf和amf3_spec_121207.pdf两个文档。
flv格式整体如下图,看不清的可以点击查看清晰大图:
本文主要通过图示的方式介绍了FLV文件格式,希望有助于大家理解学习FLV文件格式。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。