音视频封装格式:FLV
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相关推荐
- 音视频封装格式、编码格式
音视频封装格式.编码格式 概述 常见的AVI.RMVB.MKV.ASF.WMV.MP4.3GP.FLV等文件其实只能算是一种封装标准. 一个完整的视频文件是由音频和视频2部分组成的.H264.Xvid ...
- AVI音视频封装格式学习(三)——AVI 数据结构解析
这里介绍AVI会使用到的数据结构,为了避免翻译引入歧义,决定该部分还是使用英文原文,如后续有时间再进行翻译. AVIMAINHEADER structure The AVIMAINHEADER str ...
- AVI音视频封装格式学习(四)——linux系统C语言AVI格式音视频封装应用
拖了很久的AVI音视频封装实例,花了一天时间终于调完了,兼容性不是太好,但作为参考学习使用应该没有问题.RIFF和AVI以及WAV格式,可以参考前面的一些文章.这里详细介绍将一个H264视频流和一个2 ...
- AVI音视频封装格式学习(五)——h265与PCM合成AVI文件
不知道是处于版权收费问题还是什么原因,H265现在也并没有非常广泛的被普及.将h265数据合成AVI的资料现在在网上也基本上没有.使用格式化工厂工具将h265数据封装成AVI格式,发现它在封装的时候其 ...
- AVI音视频封装格式学习(二)——AVI RIFF文件参考
AVI RIFF文件参考 AVI RIFF File Reference 微软AVI文件格式是与捕获,编辑和播放音视频流的应用程序一起使用的RIFF文件规范.通常,AVI文件包含多个不同类型的数据流. ...
- 音视频封装格式、编码格式知识
常见的AVI.RMVB.MKV.ASF.WMV.MP4.3GP.FLV等文件其实只能算是一种封装标准. 一个完整的视频文件是由音频和视频2部分组成的.H264.Xvid等就是视频编码格式,MP3.AA ...
- 音视频封装格式转换器(支持avi格式转换),基于FFmpeg4.1实现(音视频学习笔记二)
之前参照雷霄骅博士的最简单的基于FFMPEG的封装格式转换器(无编解码)的博客和FFmpeg官网的example,实现一个简单的封装格式转换器.但是后来我发现我想从mp4格式转换成avi格式的时候会报 ...
- AVI音视频封装格式学习
https://blog.csdn.net/li_wen01/article/details/86716001
- 走进音视频的世界——视频封装格式
音视频的时长怎么获取,音视频的封面怎么获取,音视频的格式怎么获取呢?这些信息都以特定格式存储在文件开头或者结尾,称为多媒体信息或者多媒体元数据.通用的封装格式由:文件标识头+多媒体信息+音视频(字幕) ...
- mp4分离h265_音视频封装:MP4结构概述和分析工具
问题背景: 前面已经讲了好几种封装格式包括了TS.FLV.RTP等.现在用几篇文章讲解下MP4,这种封装格式设计思路和前面都不太一样,其应用范围最广.灵活性最高.跨平台最好,兼容性最强.带来的负面影响 ...
最新文章
- LINUX上MYSQL优化三板斧
- 内存与存储之边界迎来变革
- attention retain_Attention-Aware Compositional Network
- golang函数调用机制:多返回值,_返回值忽略
- Java图像处理之亮度调整
- kotlin能用嵌入式linux,Kotlin在项目中的应用和踩过的坑
- STM32的CAN过滤器详解
- HTTP请求的GET与POST方式的区别
- 【重构之法】代码的坏味道
- 微型计算机的硬件系统普遍采用,2016年9月计算机一级《MS Office》考题与答案
- Django-(分页器,中间介)
- shell(九)几个字符转换命令
- 卫健委:不存在因流感引起大量坏死性脑病的现象
- [转]Android ANR 分析解决方法
- OO第四单元UML作业总结暨OO课程总结
- mysql时间转换格式
- 浏览器页面前端自适应方案
- 解决SVN不显示绿色小对勾
- UG CAM API 二次开发批量创建程序组的功能写法,提供一个初始的程序组名进行批量创建
- 微信抢红包代码 python_Python实现的微信红包提醒功能示例