基本概念
文件头(Header)+文件体(Body)

flv文件头
主要是看signture和typeflags

flv文件体
重点:Tag包数据

Tag结构详细说明

注意:
- 每个Tag的头字段DataSize只是该Tag下data部分的大小,不包括Tag的header部分的大小
音频 AudioTag Data
所在位置
⾳频Tag Data区域开始:
-
第⼀个字节包含了⾳频数据的参数信息
-
第⼆个字节以后为⾳频流数据
视频 Video Tag Data
所在位置

视频Tag Data区域开始:
-
第⼀个字节包含了视频数据的参数信息
-
第⼆个字节以后为视频流数据
总结
时间戳存放位置
位置:
Timestamp:每一个Tag的头信息第5个字节-第7个字节,一共三个字节
TimestampExtended:还有一个扩展字节
一共4个字节
时间戳占4个字节 其中第四个字节是⾼位 前三个字节是低位(每个tag的5~8字节),毫秒级
数据存放位置
位置:
音频Tag Data:
● 第⼀个字节包含了⾳频数据的参数信息,
● 第⼆个字节开始为⾳频流数据。
视频Tag Data:
● 第⼀个字节包含视频数据的参数信息------帧类型4+编码器4
● 第⼆个字节开始为视频流数据
怎么区别 音频 视频数据
位置:
TagType
视频码流包序列
当前序列:
其中TS、flv⼀般按照编码顺序排列
编码顺序 I P P B B B......
对应帧号 0 1 5 3 2 4.......