为什么webkit浏览器需要在播放之前下载整个html5视频(mp4)?

sha*_*ton 11 html5 google-chrome html5-video

从Chrome/Safari(最新版和Chrome Canary版)开始播放HTML5视频需要相当长的时间.在播放开始之前,似乎需要下载整个视频文件.

在Firefox 18.0.2(HTML5)和IE 8,9,10(Flash)中,播放几乎是即时的.

在Chrome中,我在使用时看到了这个问题:

我发现在Chrome中打开本地mp4(h264)文件需要花费很长时间才能加载:开发人员网络工具显示视频正在加载/挂起,大文件需要10-15秒.

供参考,这是一段视频:http: //mediaelementjs.com/

在播放开始之前下载完整的视频文件(5MB).对于这个小视频来说并不是那么糟糕,但是对于大文件来说却相当痛苦.

我有两个问题:

  • Webkit是否支持渐进式下载/回放?
  • 如果没有,是否有一个已知的解决方法?

谢谢

Jam*_*rch 12

正如 Foaster 所说,元数据块需要在视频的早期,这样视频就不必加载到它(如果放在最后,可能需要加载整个视频)。

但是您不需要.exe来自产品网站的一些黑盒文件来移动元数据块。以下是使用 good old 的方法ffmpeg

ffmpeg \
-i input.mp4 \
-codec copy \
-movflags faststart \
-f mp4 output.mp4
Run Code Online (Sandbox Code Playgroud)

这会:

  1. -i input.mp4:input.mp4作为输入。
  2. -codec copy:按原样复制流(没有编码/解码步骤)。
  3. -movflags faststart:将元数据块移动到开头。
  4. -f mp4 output.mp4: 格式化为 MP4 文件并以名称输出output.mp4

此处链接到完整ffmpeg文档。各种平台的安装说明在这里(对于Mac用户来说一个简单的就足够了)。brew install ffmpeg