FLV科普6 FLV Tag以及Tag头信息解析
2015-12-21 19:52
239 查看
每个FLVtag 包含音频、视频、脚本、可选的加密元数据以及负载等信息。
tag头信息 占11个字节 [b](主要信息为当前tag是音频还是视频 不含头信息的tag数据大小 时间戳信息)[/b]
Reserved 占2位 固定为0
Filter 占1位 表示是否经过滤波 一般为0
TagType 占5位 表示tag的类型 8为音频 9为视频 18为脚本数据 其它数据为保留值(其中18一般在第一个tag中,一般tag第一个字节为0x12表示脚本数据 第一个字节为0x08 表示音频数据 第一个字节为0x09表示视频数据)
DataSize 占24位 表示当前tag的后续长度等于当前整个tag长度减去11(tag头信息)
Timestamp占24位为相对第一个Tag的时间戳,因此第一个Tag的时间戳为0。也可以将所有Tag的时间戳全配置为0,解码器会自动处理。 每个tag的第五个字节开始
TimestampExtended 占8位 时间戳总共占用32位 这里指示它的高8位
StreamID 占24位 一直为0
以上总共11个字节 为tag头信息
解析相关头信息
如果TagType为8 解析音频头信息 详见 FLV科普8 FLV音频头信息
如果TagType为9 解析视频头信息 详见 FLV科普10 FLV视频头信息
如果Filter为1 解析相关滤波信息
解析数据信息
如果TagType为8 解析具体音频数据 FLV科普9 FLV音频信息
如果TagType为9 解析具体视频数据 FLV科普11 FLV视频信息
如果TagType为18 解析具体脚本数据数据(为ScriptDataObject,但该项因为内容不固定,所以在FLV文件中可以没有该Tag内容) 详见
FLV科普12 FLV脚本数据解析-Metadata Tag解析
标准文档:
以下图选定区域的一个tag为例“
Reserved 占2位 固定为0 当前值为:00 (图中12中的前两位为00)
Filter 占1位 一般值为0 不滤波 当前值为:0
TagType 占5位 表示tag的类型 当前值为12 (前3位不算 10010 (18表示脚本数据))
DataSize 占24位 表示当前tag的后续长度 当期值为 00 01 74 (372) 等于当前整个tag长度-11 = 383-11
Timestamp占24位为相对第一个Tag的时间戳,因此第一个Tag的时间戳为0。值0x:00 00 00
TimestampExtended 占8位 时间戳总共占用32位 这里指示它的高8位 值0x: 00
StreamID 占24位 一直为0 值:0x 00 00 00
以上总共11个字节 为tag头信息
tag头信息 占11个字节 [b](主要信息为当前tag是音频还是视频 不含头信息的tag数据大小 时间戳信息)[/b]
Reserved 占2位 固定为0
Filter 占1位 表示是否经过滤波 一般为0
TagType 占5位 表示tag的类型 8为音频 9为视频 18为脚本数据 其它数据为保留值(其中18一般在第一个tag中,一般tag第一个字节为0x12表示脚本数据 第一个字节为0x08 表示音频数据 第一个字节为0x09表示视频数据)
DataSize 占24位 表示当前tag的后续长度等于当前整个tag长度减去11(tag头信息)
Timestamp占24位为相对第一个Tag的时间戳,因此第一个Tag的时间戳为0。也可以将所有Tag的时间戳全配置为0,解码器会自动处理。 每个tag的第五个字节开始
TimestampExtended 占8位 时间戳总共占用32位 这里指示它的高8位
StreamID 占24位 一直为0
以上总共11个字节 为tag头信息
解析相关头信息
如果TagType为8 解析音频头信息 详见 FLV科普8 FLV音频头信息
如果TagType为9 解析视频头信息 详见 FLV科普10 FLV视频头信息
如果Filter为1 解析相关滤波信息
解析数据信息
如果TagType为8 解析具体音频数据 FLV科普9 FLV音频信息
如果TagType为9 解析具体视频数据 FLV科普11 FLV视频信息
如果TagType为18 解析具体脚本数据数据(为ScriptDataObject,但该项因为内容不固定,所以在FLV文件中可以没有该Tag内容) 详见
FLV科普12 FLV脚本数据解析-Metadata Tag解析
标准文档:
以下图选定区域的一个tag为例“
Reserved 占2位 固定为0 当前值为:00 (图中12中的前两位为00)
Filter 占1位 一般值为0 不滤波 当前值为:0
TagType 占5位 表示tag的类型 当前值为12 (前3位不算 10010 (18表示脚本数据))
DataSize 占24位 表示当前tag的后续长度 当期值为 00 01 74 (372) 等于当前整个tag长度-11 = 383-11
Timestamp占24位为相对第一个Tag的时间戳,因此第一个Tag的时间戳为0。值0x:00 00 00
TimestampExtended 占8位 时间戳总共占用32位 这里指示它的高8位 值0x: 00
StreamID 占24位 一直为0 值:0x 00 00 00
以上总共11个字节 为tag头信息
相关文章推荐
- java多线程学习-java.util.concurrent详解(四) BlockingQueue
- linux命令学习(3)
- swift 新功能介绍
- 我的vimrc
- 第十四周 项目五-是否二叉树?
- Allocation Tracker(Android Studio) 分析应用内存问题
- 创建计算字段
- 获取当前用户的网络状态--iOS
- hive中,向map类型插入数据时,需要str_to_map一下
- Error digesting Registry data org.xml.sax.SAXNotSupportedException
- hadoop支持lzo完整过程
- 常用排序算法(冒泡、选择、归并、快排、插入)
- 图形学优化_3: ogre设计模式_Factory Method (工厂方法模式)
- Android Studio插件和一些小技巧
- vi命令汇总
- java中queue的使用
- Animation动画详解(三)—— 代码生成alpha、scale、translate、rotate、set及插值器动画
- Coderforce题解
- 17个提升iOS开发效率的必用工具
- 正則表達式基础及java使用