为什么有的mp4视频文件,不能边播放边加载,而是要等到视频全部缓存完毕才开始播放?

xc
xc
2024-01-29 / 0 评论 / 277 阅读 / 正在检测是否收录...

概述

最近搞了一个视频播放页面: 《江格尔英雄赞》安达组合,超赞,如何下载CCTV视频? ,里面有两个从youtube下载的视频文件...乐队的夏天,可是播放的时候,要缓存好久,等播放的时候,几乎是100%缓存。
现在的人哪有那耐心,我就很好奇,啥原因?
搜了以下,网上普遍的回复是,mp4有个索引数据moov需要在mdat数据之前才行,如果是视频文件的末端,只能等浏览器读取到moov才行,所以要想一开始边播放边下载,就需要让索引数据moov移动在mdat数据之前,有个ffmpeg小工具可以做到,那就是-qt-faststart,在github上有分享,但没编译。
我附件分享一个编译好的exe文件,下载后,放在ffmpeg的安装目录bin下。

我使用了mp4info.exe这个小工具,神奇的发现:

mp4info截图

我的这个moov在mdat数据之前,只是后面有堆堆长传的索引数据,看似不正常,但既然是从youtube下载的,理应符合边播边下的道理。
不管它,利用ffmpeg处理以下:

ffmpeg -i 视频前.mp4 -codec copy -movflags faststart 视频后.mp4

再次用mp4info.exe查看修改后的数据索引,一下子就很规整了。

mp4info截图

上传测试,直接是秒开播放,赞。
特此记录以下.

附件分享

mp4info.exe
qt-faststart.exe

0

评论 (0)

取消
使用 Typecho 建站,并搭配 joe 主题(有修改)
蜀ICP备2022005623号-2 川公网安备 51012202001212号
本站已运行 00000000
Copyright © 1970 ~ Xcshare All rights reserved.