MP4文件在线播放首屏慢的问题
背景:客户录制文件上传到OSS后,打开文件比较慢,想要针对此进行优化
问题现象
访问url后需要等待加载10s左右,才出现首屏页面。使用各种软件均能复现(chrome、ffplay、vlc)
最终原因
研发大佬回复MP4文件moov在文件的末尾导致首屏慢
网上找的相应的解释:
播放器在播放视频文件时,之所以知道该怎么去解码,以什么样的时间间隔去显示每一帧,是因为metadata记录了当前视频文件的图像尺寸、编码格式、帧率、码率等等信息,播放器通过解析metadata得到了这些信息,才能控制视频的显示,也就是说播放器要先解析完metadata才会开始播放。
我们拿MP4作为例子来说明,不同容器的封装在数据存储上会存在一些差异,MP4视频文件结构如下所示:
它对应的metadata信息称为moov,mdat包含了音频和视频数据。MP4在实际制作中,moov有可能被放到了mdat后面,所以我们要保证制作出来的MP4的moov是放置在mdat前面的,这样才可以实现边下边播功能。如果不是这样,可以用FFmpeg的faststart命令(ffmpeg -i input.mp4 -movflags +faststart output.mp4)处理一下。 另外值得一提的是,如果moov比较大,播放器需要较多的时间去解析,所以在播放之前可能会出现较长的缓冲时间,特别是视频文件较大的情况下,所以现在有些点播网站会采用每段mdat都有自己独立的metadata的封装方式,这样就可实现渐进式下载和快速缓冲的效果。
使用的软件
-
mp4info
网上有很多文章,但都是下载的软件。
本人踩坑,大于2G的文件,在MP4info这个软件中打开就会报错。