FLV 数据封装格式
https://www.cnblogs.com/chyingp/p/flv-getting-started.html
https://blog.csdn.net/ai2000ai/article/details/77530741
从整个文件上开看,FLV是由 header 和 Body 组成.
1、Header
Signature: FLV 文件的前3个字节为固定的‘F’‘L’‘V’,用来标识这个文件是flv格式的.在做格式探测的时候,
如果发现前3个字节为“FLV”,就认为它是flv文件.
Version: 第4个字节表示flv版本号.
Flags: 第5个字节中的第0位和第2位,分别表示 video 与 audio 存在的情况.(1表示存在,0表示不存在)
DataOffset : 最后4个字节表示FLV header 长度.
2 FLV body = TagSize|Tag | TagSize | Tag... ...
FLV header之后,就是 FLV File Body.
FLV File Body是由一连串的back-pointers + tags构成.back-pointers就是4个字节数据,表示前一个tag的size.
3.FLV Tag
FLV文件中的数据都是由一个个TAG组成,TAG里面的数据可能是video、audio、scripts.
onMetaData 包含在scripts 中, 含有十分重要的信息, 比如宽高、duration、filesize 等
下表是TAG的结构:
1.FLVTAG
Field | Type | Comment |
Reserved | UB [2] | Reserved for FMS, should be 0 |
Filter | UB [1] |
Indicates if packets are filtered. 0 = No pre-processing required. 1 = Pre-processing (such as decryption) of the packet is required before it can be rendered. Shall be 0 in unencrypted files, and 1 for encrypted tags. See Annex F. FLV Encryption for the use of filters. |
TagType | UB [5] |
Type of contents in this tag. The following types are |
DataSize | UI24 |
Length of the message. Number of bytes after StreamID to end of tag (Equal to length of the tag – 11) |
Timestamp | UI24 |
Time in milliseconds at which the data in this tag applies. This value is relative to the first tag in the FLV file, which always has a timestamp of 0. |
TimestampExtended | UI8 |
Extension of the Timestamp field to form a SI32 value. This field represents the upper 8 bits, while the previous Timestamp field represents the lower 24 bits of the time in milliseconds. |
StreamID | UI24 | Always 0. |
AudioTagHeader |
IF TagType == 8 AudioTagHeader |
|
VideoTagHeader |
IF TagType == 9 VideoTagHeader |
|
EncryptionHeader |
IF Filter == 1 EncryptionTagHeader |
|
FilterParams |
IF Filter == 1 FilterParams |
|
Data |
IF TagType == 8 AUDIODATA IF TagType == 9 VIDEODATA IF TagType == 18 SCRIPTDATA |
Data specific for each media type. |
TagType: TAG中第1个字节中的前5位表示这个TAG中包含数据的类型,8 = audio,9 = video,18 = script data.
DataSize:StreamID之后的数据长度.
Timestamp和TimestampExtended组成了这个TAG包数据的PTS信息,记得刚开始做FVL demux的时候,并没有考虑TimestampExtended的值,直接就把Timestamp默认为是PTS,后来发生的现 象就是画面有跳帧的现象,后来才仔细看了一下文档发现真正数据的PTS是PTS= Timestamp | TimestampExtended<<24.
StreamID之后的数据就是每种格式的情况不一样了,接下格式进行详细的介绍.
Audio Tags
如果TAG包中的TagType==8时,就表示这个TAG是audio。
StreamID之后的数据就表示是AudioTagHeader,AudioTagHeader结构如下:
转载于:https://www.cnblogs.com/luoyinjie/p/11588392.html
FLV 数据封装格式相关推荐
- 【Android RTMP】RTMP 数据格式 ( FLV 视频格式分析 | 文件头 Header 分析 | 标签 Tag 分析 | 视频标签 Tag 数据分析 )
文章目录 安卓直播推流专栏博客总结 一. RTMP 格式解析 二. 文件头 Header 分析 三. 标签 Tag 分析 四. 视频标签 Tag 数据分析 安卓直播推流专栏博客总结 Android R ...
- C++实现flv封装格式解析(音视频学习笔记三)
这篇博文使用C++解析一个flv文件信息,对其中一些重要的信息进行log输出,对flv的数据封装格式信息不清楚的可以去看这篇博文-FLV 封装格式解析,里面详细说明了flv文件的结构信息.这篇博文参考 ...
- FLV 封装格式解析
本文为作者原创,转载请注明出处:https://www.cnblogs.com/leisure_chn/p/10662941.html FLV (Flash Video) 是由 Adobe 公司推出的 ...
- 视音频编解码学习工程:FLV封装格式分析器
===================================================== 视音频编解码学习工程系列文章列表: 视音频编解码学习工程:H.264分析器 视音频编解码学习 ...
- FLV封装格式分析器
===================================================== 视音频编解码学习工程系列文章列表: 视音频编解码学习工程:H.264分析器 视音频编解码学习 ...
- FLV封装格式介绍及解析
FLV(Flash Video)是Adobe公司推出的一种流媒体格式,由于其封装后的音视频文件体积小.封装简单等特点,非常适合于互联网上使用.目前主流的视频网站基本都支持FLV.采用FLV格式封装的文 ...
- FLV封装格式的分析
FLV封装格式的分析,各种详细的参数比较多没有详细解释,这是总体的格式分布.详细的参数说明可以参照文档. 以flv格式内封装的音频流是aac.视频流是h264分析: flv文件tag部分截图:可以看到 ...
- 我的开源项目:FLV封装格式分析器
本文介绍一个自己的开源小项目:FLV封装格式分析器.FLV全称是Flash Video,是互联网上使用极为广泛的视频封装格式.像Youtube,优酷这类视频网站,都使用FLV封装视频.我这个项目规模不 ...
- 什么是FLV视频格式?FLV视频格式是什么意思?
Q:什么是FLV视频格式?FLV视频格式是什么意思? FLV是就是FlashVideo,Flash视频,在网页中播放.FLV流媒体格式是一种新的视频格式,全称为FlashVideo.由于它形成的文件极 ...
最新文章
- 【Android动画】之Tween动画 (渐变、缩放、位移、旋转)
- 5.matlab 中的sort
- Ejabberd源码解析前奏--管理
- Linux下1号进程的前世(kernel_init)今生(init进程)----Linux进程的管理与调度
- 微信小程序知识点梳理
- C++赋值运算符和拷贝构造函数区别
- jer中无html文件,index.html
- P1618 三连击(升级版)-- python3实现
- php仿微信朋友圈网站源码,Smobiler仿微信朋友圈的消息代码实例
- python绘制饼图双层_如何在python中绘制双变量数据的饼图?
- scala迭代器_Scala选项和迭代器示例
- 数据结构-直接选择排序
- libpng error处理方式
- WINDOWS CMAKE与NMAKE
- C++黑客项目:U盘病毒免疫器
- 韩立春21日工作内容
- Neutron的Web Server启动过程中的关键参数
- 焦作网络赛K. Transport Ship
- RoI Pooling详解
- 文件及文件的操作-读、写、追加的t和b模式
热门文章
- wcf服务和寄主的关系
- 实验二 建立基本的游戏场景
- python怎么读取txt文件并统计其字数-python计算文件的行数和读取某一行内容的实现方法...
- python语言入门p-python初学者怎么入门
- python怎么读取列表-python读入列表
- python入门教程非常详细-Python该怎么入门?Python入门教程(非常详细)
- python入门教程共四本书籍-Python入门经典书籍有哪些?有这三本就够了
- python利器的使用-Python数据科学利器
- python中文软件-Python3.8.3下载
- python中的装饰器有哪些-Python中的@函数装饰器到底是什么?