当前位置:网站首页>FLV格式详解
FLV格式详解
2022-07-06 09:29:00 【狗蛋儿l】
FLV格式概述:
FLV(Flash Video)是Adobe公司设计开发的一种流行的流媒体格式,由于其视频文件体积轻巧、封装简单等特点,使其很适合在互联网上进行应用。此外,FLV可以使用Flash Player进行播放,而Flash Player插件已经安装在全世界绝大部分浏览器上,这使得通过网页播放FLV视频十分容易。
Flv文件格式
Flv由文件头(File Header)和 文件体(File Body)组成。
Flv Body由一系列的Tag组成,每个Tag又有一个preTagSize字段,标记着前面一个Tag的大小。
Flv Header
文件头由一下几部分组成:
Signature(3 Byte)+Version(1 Byte)+Flags(1 Bypte)+DataOffset(4 Byte)
Signature 占3个字节:
固定FLV三个字符作为标示。一般发现前三个字符为FLV时就认为他是flv文件。
Version 占1个字节:
标示FLV的版本号。这里我们看到是1
Flags 占1个字节:
内容标示。第0位和第2位,分别表示 video 与 audio 存在的情况.(1表示存在,0表示不存在)。看到0x05,也就是00000101,代表既有视频,也有音频。
DataOffset 占4个字节:
表示FLV的header长度。
下图是Flv Header的内容,(UI8表示无符号8位,也就是一个字节;UB[5]表示一个字节中的5位)
Flv Body
Flv Body由一个一个Tag组成,每个Tag都有一个preTagSize字段,标记着前面一个Tag的大小。
Tag有三种类型,Audio Tag(音频Tag),Video Tag(视频Tag),script Tag(又称Metadata Tag)
每个Tag由“Tag Header”和“Tag Data”组成,对于不同类型的Tag,“Tag Header”的格式都是相同的,“Tag Body”的格式就不一样了。
下面这张图归纳一下上面讲的内容,看完后对flv应该有个总体的了解了。
一般一个flv文件由一个头部信息,一个script Tag,以及若干个video Tag和audio Tag组成。
下面来详细讲解每种类型的Tag Data
Tag Data
Flv有三种tag:“Audio Tag Data”、“Video Tag Data”、“Script Tag Data”
Aideo tag是由tag Header + Tag Data组成:
tag Header:
TagType: 8 (1 byte)
TagType 代表含义如下:
8: audio
9 : video
18 : script data
DataSize: 7 (3 bytes)
tag Data大小
tag Header大小 = Previous Tag Size - DataSize
TimeStamp: 0 (3 bytes) 时间戳
TimestampExtended: 0 (1 byte) 扩展时间戳
StreamId: 0 (3 bytes) 流ID
Audio Tag Data:
Video tag 解析:
video tag是由tag Header + Tag Data组成:
tag Header:
TagType: 9 (1 byte)
TagType 代表含义如下:
- 8: audio
- 9 : video
- 18 : script data
DataSize: 50 (3 bytes)
tag Data大小
tag Header大小 = Previous Tag Size - DataSize
TimeStamp: 0 (3 bytes) 时间戳
TimestampExtended: 0 (1 byte) 扩展时间戳
StreamId: 0 (3 bytes) 流ID
Video Tag Data
scripts tag 解析:
该类型Tag又通常被称为MetadataTag,会放一些关于FLV视频和音频的元数据信息如:duration、width、height等。通常该类型Tag会跟在FileHeader后面作为第一个Tag出现,而且只有一个。
tag Header:
TagType: 18 (1 byte)
TagType 代表含义如下:
8: audio
9 : video
18 : script data
DataSize: 293 (3 bytes)
tag Data大小
tag Header大小 = Previous Tag Size - DataSize
TimeStamp: 0 (3 bytes) 时间戳
TimestampExtended: 0 (1 byte) 扩展时间戳
StreamId: 0 (3 bytes) 流ID
tag Data:
AMF包:第一个字节表示AMF包的类型
第一个AMF包:
第一个字节一般为0x02,表示字符串,第2-3个字节表示字符串的长度,一般为0x000A,后面跟的就是字符串,一般为"onMetaData"。
第二AMF包:
第一个字节为0x08,表示数组,第2-5个字节表示数组元素个数,后面跟着就是数组的元素,格式为:元素名长度(UI16) + 元素名(UI8[n]) + 元素的值(double),最后以“009”结尾。
边栏推荐
- 浏览器打印边距,默认/无边距,占满1页A4
- 力扣——第298场周赛
- OneForAll安装使用
- Configuration du cadre flask loguru log Library
- useEffect,函數組件掛載和卸載時觸發
- Remove the border when input is focused
- Effet d'utilisation, déclenché lorsque les composants de la fonction sont montés et déchargés
- Maximum product (greedy)
- Codeforces Round #799 (Div. 4)A~H
- Research Report on market supply and demand and strategy of double drum magnetic separator industry in China
猜你喜欢

第5章 NameNode和SecondaryNameNode

969. Pancake sorting

Advancedinstaller installation package custom action open file

第6章 DataNode

Advancedinstaller安装包自定义操作打开文件

Oneforall installation and use

业务系统兼容数据库Oracle/PostgreSQL(openGauss)/MySQL的琐事

Browser print margin, default / borderless, full 1 page A4

Local visualization tools are connected to redis of Alibaba cloud CentOS server

新手必会的静态站点生成器——Gridsome
随机推荐
Codeforces Round #803 (Div. 2)A~C
Codeforces Round #798 (Div. 2)A~D
useEffect,函数组件挂载和卸载时触发
读取和保存zarr文件
Maximum product (greedy)
Study notes of Tutu - process
Codeforces Round #801 (Div. 2)A~C
Research Report on market supply and demand and strategy of China's four seasons tent industry
Spark独立集群Worker和Executor的概念
Radar equipment (greedy)
AcWing:第56场周赛
第6章 Rebalance详解
Double specific tyrosine phosphorylation regulated kinase 1A Industry Research Report - market status analysis and development prospect prediction
第三章 MapReduce框架原理
Research Report of desktop clinical chemical analyzer industry - market status analysis and development prospect prediction
Codeforces Round #798 (Div. 2)A~D
Tert butyl hydroquinone (TBHQ) Industry Research Report - market status analysis and development prospect forecast
Flag framework configures loguru logstore
875. Leetcode, a banana lover
Some problems encountered in installing pytorch in windows11 CONDA