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封装格式中抽出来送给 ...
随机推荐
- LeetCode GrayCode
class Solution { public: vector<int> grayCode(int n) { vector<int> res; res.push_back(); ...
- 【echats】echats悬浮事件频繁触发、过于灵敏、快速抖动等异常现象,适用与tooltip有关
方案:transitionDuration设为0: 如图,发现关闭tooltip后现象消失,猜测与tooltip有关. 经过仔细观察,鼠标在快速移动时tooltip会延迟移动,就是这个时间差,让鼠标悬 ...
- 远景WEBGIS平台实现客户端SHP文件加载
远景WEBGIS平台的研发目前取得新进展,实现客户端shp文件的加载,可以不经过PC上的数据转换工具转换. 远景WEBGIS平台(RemoteGIS)是基于HTML5自主研发的新一代WEBGIS基础平 ...
- docker中使用nginx容器代理其他容器
Nginx is an HTTP and reverse proxy server, a mail proxy server, and a generic TCP/UDP proxy server, ...
- 实验吧Crypto题目Writeup
这大概是一篇不怎么更新的没什么用的网上已经有了很多差不多的东西的博客. 变异凯撒 忘记了2333 传统知识+古典密码 先查百度百科,把年份变成数字,然后猜测+甲子的意思,一开始以为是加1,后来意识到是 ...
- java indexOf 和 split的用法
1.java 的 indexOf 方法 ,如果存在 则 指定的字符串的开始位置,如果不存在 则返回-1: 2.java 的 split的方法:将一个字符串分割为子字符串,然后将结果作为字符串数组返回. ...
- [翻译] EAColourfulProgressView
EAColourfulProgressView 效果: EAColourfulProgressView is a custom progress view where the current fill ...
- 深入探索C++对象模型(1) 关于对象(思维导图)
通过上面整个关于对象的基础知识框架,我们来分析两个例子,看一下在内存中,对象究竟长什么样. Demo1:C++对象模型的内存布局 class Point { public: Point( floa ...
- java入门学习总结
1.jdk(java开发工具包)------> jre(java运行环境)------> jvm(java虚拟机) ------>应用(javac) -------> java ...
- charles license key
Download: http://www.charlesproxy.com/ (Official Web-site) Registered name: anthony ortolani License ...