FLV封装格式分析
FLV官方文档:https://github.com/jiayayao/DataSheet/tree/master/media%20format/flv
一、FLV格式
FLV包括文件头(FLV header)和文件体(FLV Body)两部分,其中文件体由一系列的Tag组成。如下图所示:
FLV header一共9个字节,分别是:
- Signature(3个字节)总是“FLV”,即0x46, 0x4c, 0x56;
- Version(1个字节) 总是1,即0x01;
- Flags(1个字节) 第6位表示是否存在音频,第8位表示是否存在视频,即音视频都有的话,是0x05;
- HeaderSize(4个字节)头字节大小,总为9 。
每个Tag包含3部分,Previous Tag Size字段(4个字节),Tag header字段(11个字节)和Tag data字段。
Previous Tag Size表示前面一个Tag的大小。
Tag header字段包含11个字节:
- Type(1个字节)可以是视频、音频和Script,每个Tag只能包含以上三种类型的数据中的一种:
Tag类型 |
值 |
视频 |
0x09 |
音频 |
0x08 |
Script |
0x12 |
- Data size(3个字节)表示该tag的data部分的大小;
- Timestamp(3个字节)表示该tag的时间戳;
- Timestamp(1个字节)表示扩展时间戳,当时间戳24位数值不够时,会扩展至32位;
- StreamID(3个字节)表示stream id,总是0.
二、视频Tag
视频tag的第一个字节用来表示视频数据的参数信息,第二个字节开始为视频数据。
第一个字节的前4位表示帧类型:
值 |
含义 |
1 |
keyframe (for AVC, a seekable frame) |
2 |
inter frame (for AVC, a nonseekable frame) |
3 |
disposable inter frame (H.263 only) |
4 |
generated keyframe (reserved for server use only) |
5 |
video info/command frame |
第一个字节的后4位表示编码类型:
值 |
含义 |
1 |
JPEG (currently unused) |
2 |
Sorenson H.263 |
3 |
Screen video |
4 |
On2 VP6 |
5 |
On2 VP6 with alpha channel |
6 |
Screen video version 2 |
7 |
AVC |
视频tag从二个字节开始为视频数据。
三、Script Tag
又通常被称为Metadata Tag,会放一些关于FLV视频和音频的元数据信息如:duration、width、height、video data rate、frame rate等。该Tag包含2个AMF包,通常该类型Tag会跟在File Header后面作为第一个Tag出现,而且只有一个。
音频tag不再贴了,有兴趣可以看官方文档。
参考资料:
http://blog.csdn.net/leixiaohua1020/article/details/17934487
FLV封装格式分析的更多相关文章
- 视音频数据处理入门:FLV封装格式解析
===================================================== 视音频数据处理入门系列文章: 视音频数据处理入门:RGB.YUV像素数据处理 视音频数据处理 ...
- FLV封装格式及分析器工具
http://blog.csdn.net/leixiaohua1020/article/details/17934487 FLV封装原理 FLV格式的封装原理,贴上来辅助学习之用. FLV(F ...
- 视音频编解码学习工程:FLV封装格式分析器
===================================================== 视音频编解码学习工程系列文章列表: 视音频编解码学习工程:H.264分析器 视音频编解码学习 ...
- FLV 封装格式解析
本文为作者原创,转载请注明出处:https://www.cnblogs.com/leisure_chn/p/10662941.html FLV (Flash Video) 是由 Adobe 公司推出的 ...
- 【多媒体封装格式详解】--- AAC ADTS格式分析
ADTS全称是(Audio Data Transport Stream),是AAC的一种十分常见的传输格式. 记得第一次做demux的时候,把AAC音频的ES流从FLV封装格式中抽出来送给硬件解码器时 ...
- (转)【多媒体封装格式详解】--- AAC ADTS格式分析
出自:http://blog.csdn.net/tx3344/article/details/7414543 http://www.it6655.com/2012/08/aac-adts-html ...
- AAC ADTS AAC LATM 格式分析
http://blog.csdn.net/tx3344/article/details/7414543# 目录(?)[-] ADTS是个啥 ADTS内容及结构 将AAC打包成ADTS格式 1.ADTS ...
- 【转】AAC ADTS格式分析
1.ADTS是个啥 ADTS全称是(Audio Data Transport Stream),是AAC的一种十分常见的传输格式. 记得第一次做demux的时候,把AAC音频的ES流从FLV封装格式中抽 ...
- (转)AAC ADTS格式分析
1,ADTS是个啥ADTS全称是(Audio Data Transport Stream),是AAC的一种十分常见的传输格式记得第一做demux的时候,把AAC音频的ES流从FLV封装格式中抽出来送给 ...
随机推荐
- C#对Windows服务组的启动与停止
Windows服务大家都不陌生,Windows服务组的概念,貌似MS并没有这个说法. 作为一名软件开发者,我们的机器上安装有各种开发工具,伴随着各种相关服务. Visual Studio可以不打开,S ...
- OpenStack IceHouse 部署 - 3 - 控制节点部署
Mysql部署配置 安装 安装mysql,mysql的python绑定 apt-get install mysql-server 安装过程中会要求设定mysql的root账户的密码,这里假定设为my ...
- PoPo数据可视化周刊第2期
羡辙在bilibili开课啦 就在这个月,不知道是不是受了 @Jannchie见齐 的影响,羡辙竟然在bilibili开授Echarts课程,目前已开课两节. [滚城一团]的 ECharts 训练营 ...
- 51Nod 算法马拉松23 开黑记
惨啊……虽然开了半天黑,但是还是被dalao们踩了…… 第二次开黑,还是被卡在rank20了,我好菜啊……= = 写一写比赛经过吧…… 看到题之后习惯性都打开,A~D看上去似乎并没有什么思路,F应该是 ...
- 收藏的几个关于php面向对象教程
面向对象的分析方法是利用面向对象的信息建模概念,如实体.关系.属性等,同时运用封装.继承.多态等机制来构造模拟现实系统的方法,学会了面向对象思想,能够大大提高php编程开发效率!本篇文章php中文网将 ...
- bootStrap下拉菜单 点击下拉列表某个元素,列表不隐藏
html: <a class="dropdown-toggle bgImg-priceWran " id="dropdownMenu1" data-tog ...
- react生命周期es6
基本函数有 import React from 'react' export default class MyClass extends React.Component { constructor(p ...
- IOS地理信息使用
概览 现在很多社交.电商.团购应用都引入了地图和定位功能,似乎地图功能不再是地图应用和导航应用所特有的.的确,有了地图和定位功能确实让我们的生活更加丰富多彩,极大的改变了我们的生活方式.例如你到了一个 ...
- Angular1.x 基础总结
官方文档:Guide to AngularJS Documentation w3shools angularjs教程 wiki <AngularJS权威教程> Introd ...
- PRINCE2认证与其他项目管理认证标准有何不同?
国际项目管理协会 (IPMA)根据国际能力基线建立了一种国际公认的标准,并由其各国协会译成各国语言.这是IPMA四级证书的基础,现在已在全世界推广.可喜的是,PRINCE2与这个标准高度一致. 美国项 ...