14|MP4 & FLV:不要再说AVI了
李江
你好,我是李江。
前面我们花了很长的时间学习了视频编码和视频传输弱网对抗的知识点。从今天开始我们来学习几个视频封装和播放的知识点。我们先来学习一下什么是音视频封装。之后我们再学习如何做音视频同步。
其实相比视频编码和传输,音视频封装应该是非常简单的知识点了。而且我们前面还学习过 RTP 打包,RTP 打包音视频数据其实一定程度上也可以算是一种封装。我们今天再介绍两种常用的封装,一种是 FLV,一种是 MP4,相信你对这两种文件一点儿也不陌生。
音视频封装其实就是将一帧帧视频和音频数据按照对应封装的标准有组织地存放在一个文件里面,并且再存放一些额外的基础信息,比如说分辨率、采样率等信息。那到底怎么组织这些基础信息还有音视频数据呢?我们接下来先看看 FLV 是怎么做的。
FLV
FLV 是一种非常常见的音视频封装,尤其是在流媒体场景中经常用到。FLV 封装也是比较简单的封装格式,它是由一个个 Tag 组成的。Tag 又分为视频 Tag、音频 Tag 和 Script Tag,分别用来存放视频数据、音频数据和 MetaData 数据。
下图就是 FLV 的总体结构图:
其总体格式图如下:
FLV Header
其中,FLV Header 占用 9 个字节。前 3 个字节是文件的标识,固定是 FLV。之后的 1 个字节表示版本。在之后的 1 个字节中的第 6 位表示是否存在音频数据,第 8 位表示是否存在视频数据,其他位都为 0。最后的 4 个字节表示从文件开头到 FLV Body 开始的长度,一般就是等于 9。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
本文深入介绍了FLV和MP4两种常用的音视频封装格式,重点探讨了它们的结构、存储方式以及在音视频数据存放和组织方面的差异。FLV由视频Tag、音频Tag和Script Tag组成,适合于流媒体场景,尤其在直播RTMP协议和HTTP-FLV协议中应用广泛。而MP4由ftyp box、moov box和mdat box组成,是常见的视频文件封装格式,需要重点掌握与sample相关的box。文章还介绍了计算每一个sample在文件中的具体位置、判断关键帧以及计算时间的方法,涉及了stco、stsc、stsz、stss、stts和ctts等关键概念。对于想要深入了解音视频封装格式的读者来说,本文提供了清晰的概览和技术特点,有助于读者快速了解和掌握这一领域的知识。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《攻克视频技术》,新⼈⾸单¥59
《攻克视频技术》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(13)
- 最新
- 精选
- 裕鹏请问,如果有sei帧,那是保存在和sps pps同一个位置吗?
作者回复: 一般放在sps、pps之后,I帧或者P帧的前面。
2022-08-24归属地:浙江1 - 何祖坚总体格式图中 tag header 只展示了10个字节, 但实际有11个字节。还有个字节哪去了呢?
作者回复: 确实这个地方笔误了,多谢指正
2022-09-13归属地:浙江 - Geek_6b760c想问一下老师,flv的一个视频tag还有mp4的一个sample是对应一个帧还是对应一个NALU呢
作者回复: 是一帧的
2022-08-17归属地:浙江2 - 阿甘不是太明白这些视频格式flv/avi/mpeg/rmvb等跟前面谈到的视频编码和传输控制有什么关系?希望老师能够解答一下。
作者回复: flv和mp4像一个容器,里面装着编码后的音频和视频数据。h264只是其中视频数据编码方式的一种。跟传输没什么关系。
2022-03-114 - 一身龙骨因为flv结构简单稳定,所以更适合流媒体
作者回复: 是的,而且没有索引之类的这种东西。适合流媒体
2022-01-11 - 陈诚请问一下:mp4文件中,sps,pps只是存储一组吗?后续来的sps,pps直接丢弃,还是sps,pps也可以存储多组?
作者回复: sps和pps是单独放在stsd box里面的AVCDecoderConfigurationRecord中,里面可以存放多个SPS和PPS。但是可能常用播放器不会支持多SPS。有一种方法是把SPS PPS和IDR帧当成一个NALU放进去。
2021-12-24 - 翻山越岭1)flv,mpeg和rmvb文件可以任意大小,不需要通过索引分包,任意位置可以直接解析分包 2)mp4,avi一定要依赖索引表才行,开始就要固定好位置,如果索引表在尾部,就没办法解析2021-12-225
- 葱本sample是什么,我还是没太理解,和frame 有什么关系。另外视频元数据在哪呀2022-05-1511
- Wales思考题: FLV格式的①音视频数据和②解码必要信息是均匀分布的,在时间和空间上颗粒度都很小,对于实时生成的音视频数据,以流的方式传输和解码,实时性好。 而MP4格式的音视频数据和解码必要信息是分开存放的,时空颗粒度很大,不方便以流的形式传输和实时解码。2022-07-05
- 药师老师 标题“MP4 & FLV:不要再说AVI了”文中没有呼应呢2022-04-22
收起评论