概述
最近搞了一个视频播放页面: 《江格尔英雄赞》安达组合,超赞,如何下载CCTV视频? ,里面有两个从youtube下载的视频文件...乐队的夏天,可是播放的时候,要缓存好久,等播放的时候,几乎是100%缓存。
现在的人哪有那耐心,我就很好奇,啥原因?
搜了以下,网上普遍的回复是,mp4有个索引数据moov需要在mdat数据之前才行,如果是视频文件的末端,只能等浏览器读取到moov才行,所以要想一开始边播放边下载,就需要让索引数据moov移动在mdat数据之前,有个ffmpeg小工具可以做到,那就是-qt-faststart,在github上有分享,但没编译。
我附件分享一个编译好的exe文件,下载后,放在ffmpeg的安装目录bin下。
我使用了mp4info.exe这个小工具,神奇的发现:
我的这个moov在mdat数据之前,只是后面有堆堆长传的索引数据,看似不正常,但既然是从youtube下载的,理应符合边播边下的道理。
不管它,利用ffmpeg处理以下:
ffmpeg -i 视频前.mp4 -codec copy -movflags faststart 视频后.mp4
再次用mp4info.exe查看修改后的数据索引,一下子就很规整了。
上传测试,直接是秒开播放,赞。
特此记录以下.
附件分享
mp4info.exe
qt-faststart.exe