FLV(Flash Video)是Adobe公司推出的一种流媒体格式,由于其封装后的音视频文件体积小、封装简单等特点,非常适合于互联网上使用。目前主流的视频网站基本都支持FLV。采用FLV格式封装的文件后缀为.flv。

FLV文件的详细内容结构如下图:

FLV header

FLV头占9个字节,用来标识文件为FLV类型,以及后续存储的音视频流。一个FLV文件,每种类型的tag都属于一个流,也就是一个flv文件最多只有一个音频流,一个视频流,不存在多个独立的音视频流在一个文件的情况。

FLV Body

FLV Header之后,就是FLV File Body,FLV File Body是由一连串的back-pointers + tags构成。Back-pointer表示Previous Tag Size(前一个tag的字节数据长度),占4个字节。

FLV Tag

每一个Tag也是由两部分组成:tag header 和 tag data。Tag Header里存放的是当前tag的类型、数据区(tag data)的长度等信息。

FLV Tag的类型可以是视频、音频和Script(脚本类型),下面分别介绍这三种Tag类型。

Script Tag

该类型Tag又被称为MetaData Tag,存放一些关于FLV视频和音频的元信息,比如:duration、width、height等。通常该类型Tag会作为FLV文件的第一个tag,并且只有一个,跟在File Header后。该类型Tag DaTa的结构如下所示:

第一个AMF包:
第1个字节表示AMF包类型,一般总是0x02,表示字符串。第2-3个字节为UI16类型值,标识字符串的长度,一般总是0x000A(“onMetaData”长度)。后面字节为具体的字符串,一般总为“onMetaData”(6F,6E,4D,65,74,61,44,61,74,61)。

第二个AMF包:
第1个字节表示AMF包类型,一般总是0x08,表示数组。第2-5个字节表示数组元素的个数。后面即为各数组元素的封装,数组元素为元素名称和值组成的对。

Audio Tag

音频Tag Data区域开始的第一个字节包含了音频数据的参数信息,从第二个字节开始为音频流数据。结构如下:

video Tag

视频Tag Data开始的第一个字节包含视频数据的参数信息,从第二个字节开始为视频流数据。结构如下:

音视频封装格式:FLV相关推荐

  1. 音视频封装格式、编码格式

    音视频封装格式.编码格式 概述 常见的AVI.RMVB.MKV.ASF.WMV.MP4.3GP.FLV等文件其实只能算是一种封装标准. 一个完整的视频文件是由音频和视频2部分组成的.H264.Xvid ...

  2. AVI音视频封装格式学习(三)——AVI 数据结构解析

    这里介绍AVI会使用到的数据结构,为了避免翻译引入歧义,决定该部分还是使用英文原文,如后续有时间再进行翻译. AVIMAINHEADER structure The AVIMAINHEADER str ...

  3. AVI音视频封装格式学习(四)——linux系统C语言AVI格式音视频封装应用

    拖了很久的AVI音视频封装实例,花了一天时间终于调完了,兼容性不是太好,但作为参考学习使用应该没有问题.RIFF和AVI以及WAV格式,可以参考前面的一些文章.这里详细介绍将一个H264视频流和一个2 ...

  4. AVI音视频封装格式学习(五)——h265与PCM合成AVI文件

    不知道是处于版权收费问题还是什么原因,H265现在也并没有非常广泛的被普及.将h265数据合成AVI的资料现在在网上也基本上没有.使用格式化工厂工具将h265数据封装成AVI格式,发现它在封装的时候其 ...

  5. AVI音视频封装格式学习(二)——AVI RIFF文件参考

    AVI RIFF文件参考 AVI RIFF File Reference 微软AVI文件格式是与捕获,编辑和播放音视频流的应用程序一起使用的RIFF文件规范.通常,AVI文件包含多个不同类型的数据流. ...

  6. 音视频封装格式、编码格式知识

    常见的AVI.RMVB.MKV.ASF.WMV.MP4.3GP.FLV等文件其实只能算是一种封装标准. 一个完整的视频文件是由音频和视频2部分组成的.H264.Xvid等就是视频编码格式,MP3.AA ...

  7. 音视频封装格式转换器(支持avi格式转换),基于FFmpeg4.1实现(音视频学习笔记二)

    之前参照雷霄骅博士的最简单的基于FFMPEG的封装格式转换器(无编解码)的博客和FFmpeg官网的example,实现一个简单的封装格式转换器.但是后来我发现我想从mp4格式转换成avi格式的时候会报 ...

  8. AVI音视频封装格式学习

    https://blog.csdn.net/li_wen01/article/details/86716001

  9. 走进音视频的世界——视频封装格式

    音视频的时长怎么获取,音视频的封面怎么获取,音视频的格式怎么获取呢?这些信息都以特定格式存储在文件开头或者结尾,称为多媒体信息或者多媒体元数据.通用的封装格式由:文件标识头+多媒体信息+音视频(字幕) ...

  10. mp4分离h265_音视频封装:MP4结构概述和分析工具

    问题背景: 前面已经讲了好几种封装格式包括了TS.FLV.RTP等.现在用几篇文章讲解下MP4,这种封装格式设计思路和前面都不太一样,其应用范围最广.灵活性最高.跨平台最好,兼容性最强.带来的负面影响 ...

最新文章

  1. LINUX上MYSQL优化三板斧
  2. 内存与存储之边界迎来变革
  3. attention retain_Attention-Aware Compositional Network
  4. golang函数调用机制:多返回值,_返回值忽略
  5. Java图像处理之亮度调整
  6. kotlin能用嵌入式linux,Kotlin在项目中的应用和踩过的坑
  7. STM32的CAN过滤器详解
  8. HTTP请求的GET与POST方式的区别
  9. 【重构之法】代码的坏味道
  10. 微型计算机的硬件系统普遍采用,2016年9月计算机一级《MS Office》考题与答案
  11. Django-(分页器,中间介)
  12. shell(九)几个字符转换命令
  13. 卫健委:不存在因流感引起大量坏死性脑病的现象
  14. [转]Android ANR 分析解决方法
  15. OO第四单元UML作业总结暨OO课程总结
  16. mysql时间转换格式
  17. 浏览器页面前端自适应方案
  18. 解决SVN不显示绿色小对勾
  19. UG CAM API 二次开发批量创建程序组的功能写法,提供一个初始的程序组名进行批量创建
  20. 微信抢红包代码 python_Python实现的微信红包提醒功能示例

热门文章

  1. An error occurred.
  2. [Error] ‘for‘ loop initial declarations are only allowed in C99 or C11 mode 解决方法
  3. Java Duration类和Period类
  4. Promise中then的返回值
  5. 一个公布每天全球被黑网站的站点
  6. 如何成为一名获得 Adobe 国际认证的专业设计师?
  7. 供应链金融与区块链02——论文阅读
  8. LTE相关协议2——下行峰值速率计算
  9. MapperReducer
  10. matlab俄罗斯方块