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
defined:
8 = audio
9 = video
18 = script data

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 数据封装格式相关推荐

  1. 【Android RTMP】RTMP 数据格式 ( FLV 视频格式分析 | 文件头 Header 分析 | 标签 Tag 分析 | 视频标签 Tag 数据分析 )

    文章目录 安卓直播推流专栏博客总结 一. RTMP 格式解析 二. 文件头 Header 分析 三. 标签 Tag 分析 四. 视频标签 Tag 数据分析 安卓直播推流专栏博客总结 Android R ...

  2. C++实现flv封装格式解析(音视频学习笔记三)

    这篇博文使用C++解析一个flv文件信息,对其中一些重要的信息进行log输出,对flv的数据封装格式信息不清楚的可以去看这篇博文-FLV 封装格式解析,里面详细说明了flv文件的结构信息.这篇博文参考 ...

  3. FLV 封装格式解析

    本文为作者原创,转载请注明出处:https://www.cnblogs.com/leisure_chn/p/10662941.html FLV (Flash Video) 是由 Adobe 公司推出的 ...

  4. 视音频编解码学习工程:FLV封装格式分析器

    ===================================================== 视音频编解码学习工程系列文章列表: 视音频编解码学习工程:H.264分析器 视音频编解码学习 ...

  5. FLV封装格式分析器

    ===================================================== 视音频编解码学习工程系列文章列表: 视音频编解码学习工程:H.264分析器 视音频编解码学习 ...

  6. FLV封装格式介绍及解析

    FLV(Flash Video)是Adobe公司推出的一种流媒体格式,由于其封装后的音视频文件体积小.封装简单等特点,非常适合于互联网上使用.目前主流的视频网站基本都支持FLV.采用FLV格式封装的文 ...

  7. FLV封装格式的分析

    FLV封装格式的分析,各种详细的参数比较多没有详细解释,这是总体的格式分布.详细的参数说明可以参照文档. 以flv格式内封装的音频流是aac.视频流是h264分析: flv文件tag部分截图:可以看到 ...

  8. 我的开源项目:FLV封装格式分析器

    本文介绍一个自己的开源小项目:FLV封装格式分析器.FLV全称是Flash Video,是互联网上使用极为广泛的视频封装格式.像Youtube,优酷这类视频网站,都使用FLV封装视频.我这个项目规模不 ...

  9. 什么是FLV视频格式?FLV视频格式是什么意思?

    Q:什么是FLV视频格式?FLV视频格式是什么意思? FLV是就是FlashVideo,Flash视频,在网页中播放.FLV流媒体格式是一种新的视频格式,全称为FlashVideo.由于它形成的文件极 ...

最新文章

  1. 【Android动画】之Tween动画 (渐变、缩放、位移、旋转)
  2. 5.matlab 中的sort
  3. Ejabberd源码解析前奏--管理
  4. Linux下1号进程的前世(kernel_init)今生(init进程)----Linux进程的管理与调度
  5. 微信小程序知识点梳理
  6. C++赋值运算符和拷贝构造函数区别
  7. jer中无html文件,index.html
  8. P1618 三连击(升级版)-- python3实现
  9. php仿微信朋友圈网站源码,Smobiler仿微信朋友圈的消息代码实例
  10. python绘制饼图双层_如何在python中绘制双变量数据的饼图?
  11. scala迭代器_Scala选项和迭代器示例
  12. 数据结构-直接选择排序
  13. libpng error处理方式
  14. WINDOWS CMAKE与NMAKE
  15. C++黑客项目:U盘病毒免疫器
  16. 韩立春21日工作内容
  17. Neutron的Web Server启动过程中的关键参数
  18. 焦作网络赛K. Transport Ship
  19. RoI Pooling详解
  20. 文件及文件的操作-读、写、追加的t和b模式

热门文章

  1. wcf服务和寄主的关系
  2. 实验二 建立基本的游戏场景
  3. python怎么读取txt文件并统计其字数-python计算文件的行数和读取某一行内容的实现方法...
  4. python语言入门p-python初学者怎么入门
  5. python怎么读取列表-python读入列表
  6. python入门教程非常详细-Python该怎么入门?Python入门教程(非常详细)
  7. python入门教程共四本书籍-Python入门经典书籍有哪些?有这三本就够了
  8. python利器的使用-Python数据科学利器
  9. python中文软件-Python3.8.3下载
  10. python中的装饰器有哪些-Python中的@函数装饰器到底是什么?