Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么webkit浏览器在播放之前需要下载整个html5视频(mp4)?_Html_Google Chrome_Html5 Video - Fatal编程技术网

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

为什么webkit浏览器在播放之前需要下载整个html5视频(mp4)?,html,google-chrome,html5-video,Html,Google Chrome,Html5 Video,从Chrome/Safari(最新版本和Chrome Canary)开始播放HTML5视频需要一段时间。在播放开始之前,似乎需要下载整个视频文件 在Firefox18.0.2(HTML5)和IE 8,9,10(Flash)中,播放几乎是即时的 在Chrome中,我看到了使用时出现的问题: chrome本地播放器 VideoJS MediaElementJS 我发现,即使在Chrome中打开本地mp4(h264)文件也需要相当长的时间才能加载:开发者网络工具显示视频正在加载/挂起,对于一个大文

从Chrome/Safari(最新版本和Chrome Canary)开始播放HTML5视频需要一段时间。在播放开始之前,似乎需要下载整个视频文件

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

在Chrome中,我看到了使用时出现的问题:

  • chrome本地播放器
  • VideoJS
  • MediaElementJS
我发现,即使在Chrome中打开本地mp4(h264)文件也需要相当长的时间才能加载:开发者网络工具显示视频正在加载/挂起,对于一个大文件,这需要10-15秒

以下是一段视频供参考:

播放开始前,下载完整的视频文件(5MB)。这个小视频不错,但大文件让人很痛苦

我有两个问题:

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

谢谢

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

问题在于视频文件中的元块

大多数浏览器只能在下载元数据后播放视频。一些编码工具将此元块放在输出文件的末尾,因此浏览器必须加载整个文件才能“查看”元数据

解决方案:

得到这个小工具,打开你的视频,让元数据移动器发挥它的魔力


不需要那么长时间,您的文件就可以流式传输了

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

但移动元数据块不需要产品网站上的一些黑盒
.exe
文件。以下是如何使用好的旧电脑:

这将:

  • -i input.mp4
    :将
    input.mp4
    作为输入
  • -编解码器复制
    :按原样复制流(无编码/解码步骤)
  • -movflags faststart
    :将元数据块移动到起始位置
  • -f mp4 output.mp4
    :格式化为mp4文件,并以名称
    output.mp4
    输出

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

    您应该确保视频文件是用H.264编码的。只有这样,视频才会在完全加载之前开始播放。如果您的视频编码为例如MPEG-4,则可能会导致加载问题。我建议您查看此链接:解决方案是指向
    .exe
    的非现场链接,因此:1)有一天可能会由于链接损坏而丢失;2) 只能在Windows上工作;3)是一个完整的黑匣子。下面是一个简单的、独立于操作系统的、开源的移动元数据块的方法。@JamieBirch:1)你的解决方案有更多的外部链接2)很好的一点没有想到3)只是没有。。。链接页面非常清楚地说明了它的功能和工作方式。。。但是,最终ffmpeg是更好的解决方案。对于不了解终端的人来说,这既不是最简单的,也不是最快的;)非常简单的解决方案。尝试了元数据移动器。使用手刹视频转换器,效果非常神奇+1.
    ffmpeg \
    -i input.mp4 \
    -codec copy \
    -movflags faststart \
    -f mp4 output.mp4