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封装格式中抽出来送给 ...
随机推荐
- Javascript周报#182
This week’s JavaScript news Read this issue on the Web | Issue Archive JavaScript Weekly Issue 182Ma ...
- ThreeJS模拟人沿着路径运动-路径箭头使用纹理offset偏移
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Esri大数据分析引擎GeoAnalytics Server部署经历
系统架构 Base WebGIS 4Cores 16GB Spatiotemporal Data Store 32GB SSD Disk 足够大的空间 GA Server 4Cores 16GB 足够 ...
- 中专生自学Android到找到工作的前前后后
我是一名中专生,在学校里读的是计算机专业,但是由于学校不好大部分同学都不爱学习来这里几乎大部分都是在混日子的,虽然我中考的成绩不差,但是因为家里穷考虑到以后没钱读大学我毅然来到这里,虽然是中专,但是我 ...
- JAVA中获取文件的大小和文件的扩展名
一.获取文件扩展名(该段代码来自博客园网站装男人的博客https://www.cnblogs.com/nanrenzhuang/archive/2013/05/19/6315546.html) pub ...
- 网络测速 php代码
<?php /*=====http://hi.csdn.net/yinyiniao=====*/ $fp=fopen("cs.txt","w"); for ...
- CSS中的line-height
基本概念 行高.行距 行高是指文本行基线间的垂直距离.那什么是基线呢?记不记得vertical-align属性有个baseline值,这个baseline就是基线. 注意:倒数第二根才是基线(base ...
- 检查 NaN 数据值 (C/C++/Python 实现)
NaN 是 Not a Number 的缩写.它是一个数值类型值,通常在浮点计算中,表示未定义或无法表示的值.而且,不能直接使用相等运算符 (==) 检查 NaN.由于在程序中,nan == nan ...
- 微信开发平台中有个接口是上传多媒体文件,我用的是java 开发的,我怎么样才能在后台实现呢?
/** * 文件上传到微信服务器 * @param fileType 文件类型 * @param filePath 文件路径 * @return JSONObj ...
- oracle 找回DROP掉的表
select * from pan ; --有数据 drop table pan; --删除表 select * from pan ; --表或视图不存在 flashback t ...