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

时间:2013-02-18 22:24:40

标签: 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是否支持渐进式下载/播放?
  • 如果没有,是否有已知的解决方法?

由于

2 个答案:

答案 0 :(得分:4)

正如Foaster所说,元数据块需要在视频的早期,以便视频不必加载到它(这可能需要加载整个视频,如果它被放置在端)。

但是,您不需要从产品网站获取某个黑盒.exe文件来移动元数据块。以下是好老ffmpeg

的方法
ffmpeg \
-i input.mp4 \
-codec copy \
-movflags faststart \
-f mp4 output.mp4

这将:

  1. -i input.mp4:以input.mp4作为输入。
  2. -codec copy:按原样复制流(没有编码/解码步骤)。
  3. -movflags faststart:将元数据块移至开头。
  4. -f mp4 output.mp4:格式化为MP4文件并输出名称为output.mp4
  5. 链接到完整的ffmpeg文档here。各种平台的安装说明here(简单的brew install ffmpeg对Mac用户来说已经足够了。)

答案 1 :(得分:2)

问题既不是编解码器也不是浏览器......

问题是视频文件中的元块!

大多数浏览器只能在下载元数据时播放视频。一些编码工具将这个元块放在输出文件的末尾,因此浏览器必须将整个文件加载到"参见"元数据。

<强>解决方案:

http://rndware.info/products/metadata-mover.html

获取这个小工具,打开你的视频,让MetaData移动器发挥其魔力。

没有那么长时间,您的文件已准备好接收流式传输!