mp4 moov位置提前

1,454 阅读2分钟

最近在做视频相关的工作,发现即便是十几秒的视频首次加载都比较慢。一开始怀疑是网速的原因确实在网好的时候会比较快但是仍然会有卡顿。后面搜索发现与视频文件结构相关关键的moov被放在的后面但是如果服务器本身是支持seek的,那么mp4视频也是能正常边下边播的。但是却要多了寻找到末尾请求数据的时间从而也会增加相应下载播放的时间

image.png

mp4文件结构

每次视频首次加载都比较慢查看视频结构文件发现moov放在了最后面,moov中存放了视频的相关信息比如时长,分辨率,帧率。mdat中存放的是媒体数据即最终播放的数据。mp4只有加载完moov之后才能开始播放所以想要提升播放加载速度就要将moov提 前放在mdat前面
mp4boxjs视频分析地址:gpac.github.io/mp4box.js/t…

image.png MP4常用参考标准排列方式 image.png


如何将moov位置提前

1、ffmpeg

ffmpeg –i input.flv –c copy –f mp4 –movflags faststart output.mp4

我搜了几乎都是这个方法转的,但是对我来说不现实,第一我装了一天的ffmpeg都没安装成功可能是我网的问题确实公司的网不行,第二就是我们是有很多视频都是通过后台上传的让后端处理视频也不现实


2、handbrake
将web优化勾选上之后导出视频moov就被放在前面了并且相应box中的数据没有发生改变是比较方便且直接的方式,成本也很小

handbrakehandbrake.fr/downloads.p…

image.png 视频优化后

image.png

备注:如果公司有自己的视频同学一般的视频编辑软件都会有相应的针对媒体优化的选项比如我们公司用的是AE勾选上fast start导出的视频box结构中moov就放在了前面。因为所用视频都是公司产出所以选择了这个解决方案

image.png

参考文章

#5分钟入门MP4文件格式 www.cnblogs.com/chyingp/p/m…

# [贝聊科技]首屏视频的优化过程(补充moov的研究)juejin.cn/post/684490…

# 优化 MP4 视频以实现快速流式传输rigor.com/blog/optimi…