FLV文件格式官方规范详解
|
Field
|
type
|
Comment
|
|
签名
|
UI8
|
’F’(0X46)
|
|
签名
|
UI8
|
‘L’(0X4C)
|
|
签名
|
UI8
|
‘V’(0x56)
|
|
版本
|
UI8
|
FLV的版本。0x01表示FLV 版本是1
|
|
保留字段
|
UB5
|
前五位必须是0
|
|
是否有音频流
|
UB1
|
音频流是否存在标志
|
|
保留字段
|
UB1
|
必须是0
|
|
是否有视频流
|
UB1
|
视频流是否存在标志
|
|
文件头大小
|
UI32
|
FLV版本1时填写9,表明的是FLV头的大小,为后期的FLV版本扩展使用。包括这四个字节。
数据的起始位置就是从文件开头偏移这么多的大小。
|
|
Field
|
type
|
Comment
|
| TAG类型 |
UI8
|
8: audio
9: video
18: script data——这里是一些描述信息。
all others: reserved其他所有值未使用。
|
|
数据大小
|
UI24
|
数据区的大小,不包括包头。包头总大小是11个字节。
|
|
时戳
|
UI24
|
当前帧时戳,单位是毫秒。相对于FLV文件的第一个TAG时戳。第一个tag的时戳总是0。——不是时戳增量,rtmp中是时戳增量。
|
|
时戳扩展字段
|
UI8
|
如果时戳大于0xFFFFFF,将会使用这个字节。这个字节是时戳的高8位,上面的三个字节是低24位。
|
|
流ID
|
U24
|
总是0
|
|
数据区
|
UI8[n]
|
|
|
Field
|
type
|
Comment
|
|
音频格式
|
UB4
|
0 = Linear PCM, platform endian
1 = ADPCM 2 = MP3 3 = Linear PCM, little endian 4 = Nellymoser 16-kHz mono 5 = Nellymoser 8-kHz mono 6 = Nellymoser 7 = G.711 A-law logarithmic PCM
8 = G.711 mu-law logarithmic PCM 9 = reserved
10 = AAC
11 = Speex 14 = MP3 8-Khz
15 = Device-specific sound
7, 8, 14, and 15:内部保留使用。
flv是不支持g711a的,如果要用,可能要用线性音频。
|
|
采样率
|
UB2
|
For AAC: always 3
0 = 5.5-kHz
1 = 11-kHz
2 = 22-kHz
3 = 44-kHz
|
|
采样大小
|
UB1
|
0 = snd8Bit
1 = snd16Bit
|
|
声道
|
UB1
|
0=单声道
1=立体声,双声道。AAC永远是1
|
|
声音数据
|
UI8[N] |
如果是PCM线性数据,存储的时候每个16bit小端存储,有符号。
如果音频格式是AAC,则存储的数据是AAC AUDIO DATA,否则为线性数组。
|
|
Field
|
type
|
Comment
|
|
帧类型
|
UB4
|
1: keyframe (for AVC, a seekable frame)——h264的IDR,关键帧,可重入帧。
2: inter frame (for AVC, a non- seekable frame)——h264的普通帧
3: disposable inter frame (H.263 only)
4: generated keyframe (reserved for server use only) 5: video info/command frame
|
|
编码ID
|
UB4
|
使用哪种编码类型:
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
|
|
视频数据
|
UI[N]
|
如果是avc,则参考下面的介绍:
AVCVIDEOPACKET
|
|
Field
|
type
|
Comment
|
|
AVC packet类型
|
UI8
|
0:AVC序列头
1:AVC NALU单元
2:AVC序列结束。低级别avc不需要。
|
|
CTS
|
SI24
|
如果AVC packet类型是1,则为cts偏移(见下面的解释),为0则为0
|
|
数据
|
UI8[n]
|
如果AVC packet类型是0,则是解码器配置,sps,pps。
如果是1,则是nalu单元,可以是多个,具体格式:将下面
|
|
Field
|
type
|
Comment
|
|
长度
|
UI32
|
nalu单元的长度,不包括长度字段。
|
|
nalu数据
|
UI8[N]
|
NALU数据,没有四个字节的nalu单元头,直接从h264头开始,比如:65 ** ** **,41 ** ** **
|
|
长度
|
UI32
|
nalu单元的长度,不包括长度字段。
|
|
nalu数据
|
UI8[N]
|
NALU数据,没有四个字节的nalu单元头,直接从h264头开始,比如:65 ** ** **,41 ** ** **
|
|
...
|
...
|
...
|
我 的微信公众号
FLV文件格式官方规范详解的更多相关文章
- FLV视频封装格式详解
FLV视频封装格式详解 分类: FFMpeg编解码 2012-04-04 21:13 1378人阅读 评论(2) 收藏 举报 flvheaderaudiovideocodecfile 目录(?)[-] ...
- 3dTiles 数据规范详解[1] 介绍
版权:转载请带原地址.https://www.cnblogs.com/onsummer/p/12799366.html @秋意正寒 Web中的三维 html5和webgl技术使得浏览器三维变成了可能. ...
- 【转】FLV视频封装格式详解
Overview Flash Video(简称FLV),是一种流行的网络格式.目前国内外大部分视频分享网站都是采用的这种格式. File Structure 从整个文件上开看,FLV是由The FLV ...
- 3dTiles 数据规范详解[3] 内嵌在瓦片文件中的两大数据表
转载请声明出处:全网@秋意正寒 零.本篇前言 说实话,我很纠结是先介绍瓦片的二进制数据文件结构,还是先介绍这两个重要的表.思前想后,我决定还是先介绍这两个数据表. 因为这两个表不先给读者灌输,那么介绍 ...
- CommonJs规范详解---【XUEBIG】
CommonJS是服务器模块的规范,Node.js采用了这个规范 1.CommonJs规范的出发点:JS没有模块系统.标准库较少.缺乏包管理工具:为了让JS可以在任何地方运行,以达到Java.C ...
- 3dTiles 数据规范详解[4.1] b3dm瓦片二进制数据文件结构
B3dm,Batched 3D Model,成批量的三维模型的意思. 倾斜摄影数据(例如osgb).BIM数据(如rvt).传统三维模型(如obj.dae.3dMax制作的模型等),均可创建此类瓦片. ...
- 各大厂 C/C++ 编程规范详解
来吧!各大厂知名规范体系~ 各有特点各有侧重~ Google C++ Style Guide Google C++ Style Guide,[中文版],简称 GSG,谷歌的 C++ 编程规范,在国内有 ...
- 百度MIP页规范详解 —— canonical标签
百度MIP的规范要求必须添加强制性标签canonical,不然MIP校验工具会报错: 强制性标签<link rel="/^(canonical)$/"> 缺失或错误 这 ...
- wav文件格式分析与详解
WAV文件是在PC机平台上很常见的.最经典的多媒体音频文件,最早于1991年8月出现在Windows 3.1操作系统上,文件扩展名为WAV,是WaveFom的简写,也称为波形文件,可直接存储声音波形, ...
随机推荐
- iPhone iPad 各种控件默认高度
iPhone和iPad下各种常见控件的宽度和标准是一样的,所以这里就用iPhone说明. 以下是常见的几种控件的高度.Statusbar,Navigationbar和Tabbar的宽度极其图标大小. ...
- [leetcode]117. Populating Next Right Pointers in Each NodeII用next填充同层相邻节点
Given a binary tree struct TreeLinkNode { TreeLinkNode *left; TreeLinkNode *right; TreeLinkNode *nex ...
- 内部存储 openFileInputStream openFileOutputStream
package com.qianfeng.gp08_day24_internalstorage; import java.io.FileInputStream; import java.io.File ...
- css布局---各种居中
居中是我们使用css来布局时常遇到的情况.使用css来进行居中时,有时一个属性就能搞定,有时则需要一定的技巧才能兼容到所有浏览器,本文就居中的一些常用方法做个简单的介绍. 注:本文所讲方法除了特别说明 ...
- (转)innodb 多版本并发控制原理详解
转自:https://blog.csdn.net/aoxida/article/details/50689619 多版本并发控制技术已经被广泛运用于各大数据库系统中,如Oracle,MS SQL Se ...
- java.text.SimpleDateFormat的使用
SimpleDateFormat 是一个以国别敏感的方式格式化和分析数据的具体类. 它允许格式化 (date -> text).语法分析 (text -> date)和标准化. Simpl ...
- with as 创建临时表,解决union all多个时出现内存出错的问题
with t(content_id, emp_id) as (VALUES('002', 416),('003', 416))SELECT * FROM t;
- 【转载】foreach+Control.Controls无法一次性移除所有子控件解决方法
博客转载地址:http://www.mzwu.com/article.asp?id=2254 //在panel1中添加20个Button ; ; ; i <= ; i++) { ) row++; ...
- 为程序使用内存缓存(MemoryCache)
为了程序的灵活性,可能为程序使用了XML等外部文件存储配置,但也有可能文件内容会被频繁读取,为了减少磁盘的读取次数,提高程序性能,可以将频繁读取的配置文件缓存到内存中,加速配置的读取.并且需要可以在配 ...
- hdu-2844(完全背包+二进制优化模板)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2844 思路:问1-m能的得到的硬币的值,所以dp[i]==i即可. #include<iostr ...