2013-05-08 103 views
4

首先,我想问这个问题。如果没有其他视频内容,我无法加载元数据。 preload = "metadata"不起作用。我在Win Chrome上测试,不知道它在Safari/FF/IE/Opera上的工作原理。因此我无法快速加载六个或更多视频剪辑。 Chrome可能会保留只有六个打开的连接在类似的端口/协议/域。如果我加载的视频超过六个,那么最后一个视频无法启动加载,而前六个视频完全完成 loading。仅从html5视频/音频加载元数据

jsfiddle需要吗?我可以创造,但我认为这不是必要的。例如。 HTML:10 html5 <video>每个大约100mb和preload=metadata属性。 JS(使用jQuery只是为了清晰):

$('video').on('loadedmetadata',function(){ 
    console.log(this.duration); 
}).each(function(i){ 
    this.load(); 
}); 

然后在Chrome开发工具中打开“网络”选项卡并重新加载页面。六个视频将开始加载并加载全部内容,而其他四个视频将以(pending)标记等待。起初,在控制台会出现6条消息。新消息将在完全加载任何第一个视频后出现。

我尝试了很多东西,但每个都有所下降。现在我关于在服务器端获取元数据的事情。 PHP上有没有解决方案?但JS解决方案会更好。

我也知道使用Youtube,可能Vimeo和一些其他网站的解决方案。这是保持一些子域名(s1.youtube.com,s2.youtube.com等)的视频。但我无法使用它。我制作网站模板,它有一些要求。

我有很多视频的视频库。玩家必须在第一次视频播放前显示持续时间并了解宽度/高度。另外,我想从视频中间的框架中获取视频海报。任何停止视频加载和关闭连接的解决方案都是我所需要的。它解决了获取元数据的麻烦。

回答

0

如果您想要在Chrome中加载超过6个视频,则需要使用.webm格式。

注:如果你有一大堆的来源在您的视频标签,就像这样:

<video width="320" height="240" controls autoplay> <source src="vid.webm" type="video/webm"> <source src="vid.mp4" type="video/mp4"> </video>

我认为铬会默认mp4而不是webm。你将不得不做一些jQuery的魔术才能使它工作。 Advice on that can be seen here.

+0

为什么会这样? – 2015-03-19 21:08:09

0

的情况,现在要和V42(目前是测试版 - 所以希望将其固定)更糟

现在尊重preload='metadata'但不释放连接回池中打完6个视频加载它只是完全卡住!

查看错误报告:https://code.google.com/p/chromium/issues/detail?id=468930

+0

刚刚发布的v42现在有这个问题'在野外'。它已被修正为希望v43,如在谷歌加纳利证实 – 2015-04-16 16:14:04

+0

看起来像错误仍然是今天开放。它4岁,拒绝死亡。 preload =“元数据”在第7次网络请求中停顿。 – Fawntasia 2016-11-29 02:25:07