FLV封装格式

简介: FLV封装格式介绍及解释,本文介绍 FLV 里面各种tag的作用。

FLV 是众多封装格式中比较简单的一种,所以本书先讲它。实际上了解这些二进制格式,只要找到一个好用的工具,然后看下相关文档或者网络上的文章,就能理解各个字段的含义。这里介绍一些 分析 FLV 文件的工具。

1,FlvAnalyzer,下载地址:百度网盘, 提取码:yld0

2,flvparse ,百度网盘 ,提取码:od94

然后 FLV 是 adobe 公司出的。 标准文档 video_file_format_spec_v10 下载地址:百度网盘,提取码:4j92


下面提供一个 FLV 文件 juren.flv ,方便读者对照,下载地址:百度网盘,提取码:ptk8 ,

用 FlvAnalyzer 打开这个 juren.flv 文件,截图如下:

网络异常,图片无法展示
|

从上图可以看出,FLV 总体分为 两个部分,FLV Header + FLV Body。然后 FLV Header 一共占 9 个字节,FLV Header 的字段如下:

1,前面 3 个字节是 FLV 的 ASII 码对应的数字。

2,TypeFlagsAudio 跟 TypeFlagsVideo 分别代表这个 FLV 文件是否有音频 跟 视频。

3,DataOffset 字段是头部的大小。


然后 FLV body 由 很多个 Tag 组成。

FLV file body = PreviousTagSize0 + Tag1 + PreviousTagSize1 + Tag2 + ... + PreviousTagSizeN-1 + TagN

从上图可以看到,juren.flv 主要有 3种 Tag。

1,Script Tag,这种 Tag 通常只有一个,而且在开头的位置,主要是存储文件的基本信息,帧率,采样率,持续时间之类的。

2,Video Tag,存放 一帧视频的数据,通常是 一帧。

3,Audio Tag,存放一帧音频的数据,通常是一帧。


FLV body 的字段比较多,我挑两个重点的字段来讲,视频流的 PTS 与 DTS 分别是哪个字段。如下截图:

网络异常,图片无法展示
|

上图中这个 TimeStamp 就是 DTS,视频帧的解码时间,下面那个 TimeStampExtended 是扩展字段,如果 3 字节不够存储时间,就加多一个字节存储。

大家可能会有点疑问,DTS 在这里,那 PTS 在哪里?因为 只有 视频 Tag 才有两个时间,音频没有,所以 FLV 标准为了不破坏公用结构,PTS 是存放在 Tag Data 里面的,就是上图 圈出来的 CompositionTime Offset,这个是偏移时间,TimeStamp + CompositionTime Offset 才是真正的 PTS。


FLV 格式中其他字段的含义可以在以下资料看到。

1,《FFmpeg从入门到精通》3.2章节 "音视频文件转FLV格式"

2,标准文档 video_file_format_spec_v10

3,《FLV封装格式介绍及解析》


目录
相关文章
|
1月前
|
编解码 算法 安全
flv 和 mp4 区别
【10月更文挑战第26天】FLV和MP4格式在容器格式、编码标准、视频质量、兼容性、流媒体支持以及编辑制作等方面都存在一定的区别。用户在选择使用哪种格式时,应根据具体的需求和应用场景来决定。如果注重网络流媒体播放和实时性,FLV格式可能更适合;如果追求更好的视频质量、广泛的兼容性和方便的编辑制作,MP4格式则是更好的选择。
|
7月前
|
存储 编解码 Android开发
点播封装格式
点播封装格式
52 5
|
编解码 API 内存技术
|
存储 编解码 JSON
MP4封装格式
MP4封装格式介绍及解释,本文介绍 mp4 里面各种 box 的作用,包括 mdat box, moov box,mdhd box 等等。
421 0
|
存储 网络协议 Linux
视频文件的封装格式
MP4是一套用于音频、视频信息的压缩编码标准,由国际标准化组织(ISO)和国际电工委员会(IEC)下属的“动态图像专家组”(Moving Picture Experts Group,即MPEG)制定
|
存储 编解码 网络协议
封装格式介绍
音视频封装格式介绍,FLV,MP4,音视频同步
155 0
|
编解码 vr&ar 内存技术
FFmpeg中的音频文件的封装格式和编码格式
FFmpeg对于音频文件的封装和编码是非常简单的,欢迎大家深入使用
|
JSON 数据格式
FFMPEG音视频开发:获取flv视频格式的时长
FFMPEG音视频开发:获取flv视频格式的时长
323 0
|
存储 编解码 数据安全/隐私保护
FLV 封装格式解析
FLV (Flash Video) 是由 Adobe 公司推出的一种封装格式,主要用于流媒体系统。FLV 封装的媒体文件具有体积轻巧、封装播放简单等特点,很适合网络应用。目前各浏览器普遍使用 Flash Player 作为网页播放器,使得安装有浏览器的计算机终端不需要另外安装播放器,这也是 FLV 格式广为流行的原因之一。
406 0
FLV 封装格式解析
|
存储 编解码 API
FFmpeg编解码处理4-音频编码
基于 FFmpeg 4.1 版本。
383 0
FFmpeg编解码处理4-音频编码

热门文章

最新文章