视频服务器 存储优化,短视频秒播优化实践(二)

之前我们介绍了在线短视频秒播优化的方方面面,从服务器,cdn部署接入,数据连接/获取,客户端缓存,出帧策略,到视频文件I帧位置等。

今天从视频文件格式的另外一个角度介绍,MP4文件的box排列顺序是如何影响,在线短视频的播放以及秒播优化的。MP4文件中的所有数据都装在box中 (iso-14496-12/14)

(QuickTime中为atom)即mp4是由若干个box组成的

先简单介绍几个重要的box,以便诸位在后续学习时心中有数:1、 ftyp box,在文件的开始位置,描述的文件的版本、兼容协议等;

2、

moov box,这个box中不包含具体媒体数据,但包含本文件中所有媒体数据的宏观描述信息,moov box下有mvhd和trak

box。mvhd中记录了创建时间、修改时间、时间度量标尺、可播放时长等信息。trak中的一系列子box描述了每个媒体轨道的具体信息。

3、 moof box,这个box是视频分片的描述信息。并不是MP4文件必须的部分,但在我们常见的可在线播放的MP4格式文件中(例如Silverlight Smooth Streaming中的ismv文件)确是重中之重。

4、 mdat box,实际媒体数据。我们最终解码播放的数据都在这里面。

5、 mfra box,一般在文件末尾,媒体的索引文件,可通过查询直接定位所需时间点的媒体数据。

760ec09cb6a9167983570f68e5ab7298.png

48444798dc4fa1cbfbc8cf49acf92c12.png

e1498a5de7662c193d5cb69c010b1207.png

13c05b473798f1cab915f4fe94b6b47f.png

964f9d667819ad228c8e6203cf3298ef.png

8f6d91e7b0c4ee6ec39e43ec0f022ab2.png

MP4文件的生成与解析,播放

两个重要的box,moov and mdat

1.生成:先写入mdat后写入moov,因此绝大多数工具都会把moov数据放到mdat后边,比如android的mp4writer,ffmpeg等工具

2.解析:解析播放的时候,先读取moov,才能解析mdat

播放影响

1.本地播放,没有影响,播放软件可以先seek到末尾,读取moov

2.在线播放

(1).需要http服务器支持seek

(2).服务器不支持seek,是个非常不友好的方案,要先把数据下载完成才能播放(无论下载到哪里,新服务器,本地内存或存储)

(3).(1)和(2)多多少少会引入延时,尤其(2),影响秒开

42ae0e97e150f57ccdde30df181b659f.png

e5f3166aa222b28ed464fa35656eb3de.png

446def3c964858eadb7a06dc7cff6c31.png

市面上短视频mp4 box排列抖音,火山等小视频moov排在前边,不用seek;

快手,360等moov排在后边需要seek;

在线短视频MP4 moov box排在后边的解决方案

1.修改文件把moov box排在前面,在MP4在设备上生成的时候或传到服务器上后进行,这个方法一劳永逸,还能提升秒开的速度

工具:

ffmpeg option faststart

qt-faststart

4e7a01c59991c55ccc5f23f47eebec7b.png

89939bc9da1086a798647b93ad117d24.png

af3c9b24fae95febdf2d710932ad7051.png

08b9e83cfc56f3e8dc1bef4fbcb425ea.png

原创作者:Walker.Xu,原文链接:https://segmentfault.com/a/1190000014405913

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值