音视频编解码:FLV封装格式笔记

一、简介:
FLV是一种既可以做直播又可以做点播的封装格式。FLV应该算是3G时代到4G时代初期时的产物,因为那个时候受限于带宽能力及存储限制,FLV以其良好的画质效果,更小的体积而备受青睐,当然,随着5G时代短视频和直播领域的兴起,当存储空间不再是瓶颈,FLV终会被MP4/TS等取代,FLV封装有较为严格的音视频编码限制,即FLV封装的音频格式以AAC/MP3/SPEEX为主,视频则以H264为主。FLV的封装格式比较简单,均以FLVTAG的形式存在,并且每一个TAG都是独立存在的

二、FLVTAG介绍:
1.FLV文件格式分为两部分:一部分为FLV文件头,另一部分为FLV文件内容。FLV文件头解析如下:
在这里插入图片描述
可以看到,当码流文件的前三个字节被判定为FLV的时候,即认为是FLV封装。

2.跳过封装头之后,就是封装内容,文件封装内容排布如下:

FLV_HEADER PreTagSize0 TAG1 PreTagSize1 TAG2
flv文件头描述信息 大小总是为0(4字节) 第1个TAG 上一个TAG的大小:tag的header+body(4字节) 第2个TAG

3.TAG的header排布:
在这里插入图片描述
在这里插入图片描述
tag_header中包含了码流的timestamp,以及描述了后续tag_body是音频流还是视频流。

4.TAG的body排布:
tag_body根据音视频类型其内部关键字肯定是不一样的,如果从FLVTAG的Header中读取到TagType为0x09,则该TAG为视频数据TAG
在这里插入图片描述
在这里插入图片描述
如果从FLVTAG的Header中解析到TagType为0x08,则TAG为音频
在这里插入图片描述
在这里插入图片描述
四、FLV分析工具:
有网友自制的非常好用的工具FlvAnalyzer,解析出来的数据如下:
在这里插入图片描述
五,鸣谢:
博客大部分内容摘自刘歧、赵文杰著《FFmpeg从入门到精通》

猜你喜欢

转载自blog.csdn.net/achina2011jy/article/details/122171614