首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何避免在同一页面中重复重载HTML视频?

如何避免在同一页面中重复重载HTML视频?
EN

Stack Overflow用户
提问于 2011-08-12 22:19:40
回答 7查看 4.2K关注 0票数 18

在同一个页面中使用同一个视频两次似乎会强制进行不必要的媒体重新加载。

将加载视频与加载图像进行比较:

代码语言:javascript
复制
<img src="image.png"/>
<img src="image.png"/>
<video src="video.webm"></video>
<video src="video.webm"></video>

根据Firefox5的web控制台,这将加载图像一次,但加载视频两次。

我从http://www.w3.org/TR/html5/video.html#dom-media-mediagroup了解到,规范的作者希望在这两种情况下都进行一次重新加载(“引用相同媒体资源的多个媒体元素将共享一个网络请求”),但这并没有发生在我身上。

我尝试过使用服务器缓存参数(我使用的是普通的web.py),但没有效果,我怀疑这是在找错地方。有什么特别的东西我应该看的吗?HTML元元素?

请注意,这与同一视频具有多个来源的常见问题相反。在这里,我关注的是具有相同源的多个视频元素并排播放(例如,在不同的时间点)。

EN

回答 7

Stack Overflow用户

发布于 2011-12-31 22:38:34

我认为人们误解了这里的规范。

如果你看一下规范中的例子,他们特别提到了包含多个音轨的单个资源(文件)。这两个视频元素包含对同一文件的引用,但该文件中的轨道不同。然后,通过媒体组同步播放这两个音轨。

如果你有两个视频标签引用相同的文件和相同的曲目,我不希望它们在默认情况下同步播放。我可以想象,通过在同一媒体组中指定它们,这可能会实现这一点,并因此允许两个元素使用单个请求流的单个连接。

如果两个视频不能同步播放,那么期望浏览器跨单个请求集加载这两个视频是不合理的。请注意,这是一个请求集,视频可能会向服务器生成许多请求,因为视频或媒体会话(考虑停止、暂停和重新启动)可能比服务器或客户端愿意保持打开单个连接的时间长得多。

想象一下,如果这两个元素具有不同的控件。您暂停第一个视频,并让第二个视频继续播放。30分钟过去了,你重新开始了第一个视频。浏览器根本不会缓存来自服务器的可能超过100兆字节的内容,以便在不向服务器发出新请求的情况下播放第一个视频。

如果您期望使用HTTP在单个连接上发送两个离散的流内容,那么我认为这是不可能的(好吧,目前已经实现了)。这就是多路复用,据我所知,HTTP服务器不支持多路复用。请注意,这与keep alive连接不同,在keep alive连接中,多个内容片段是串行提供的,多路复用描述的是并行提供多个内容片段。要实现这一点,通常的方法是简单地打开两个套接字,对于客户端和服务器来说,这比尝试对单个流进行多路分解要简单得多。

票数 2
EN

Stack Overflow用户

发布于 2011-10-10 21:59:26

如果你检查下载的视频的大小,他们是否都在下载完整的视频?

在我的测试中,大多数浏览器下载一小块(足以显示拇指),然后在需要时下载完整的视频-所以我想知道你是否将其算作两个完整下载,而实际上它只是一个完整下载和一个部分下载。

我在六月份在Bruce Lawson的帮助下做了一些测试,我们发现一些浏览器比我上面描述的两个浏览器执行更多的加载。

HTML 5 Video In Real Life (Tests)

票数 1
EN

Stack Overflow用户

发布于 2011-12-28 22:31:52

如果您使用的是HTML5,那么最好使用Canvas。它将加载视频一次。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7041454

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档