停止缓冲HTML5视频,但保留缓冲数据。然后恢复

时间:2015-04-03 15:44:31

标签: html5 video-streaming html5-video

我正在一个可以在两个或多个视频之间切换的项目中工作。

因此,如果 Video-A 正在播放,我切换到视频-B 我希望能够停止缓冲 Video-A ,开始缓冲并播放视频-B 。然后,如果您想返回视频-B ,请停止 B 并恢复 A ,而无需再次开始缓冲。

我想阻止App一次缓冲多个视频以节省带宽。

到目前为止,我找到的唯一解决方案是删除视频源并重新放入。

video.src = ""

我不喜欢这个解决方案。我希望在视频API中提供此功能,例如:

video.stopBuffering()
vide.resumeBuffering()

但似乎并非如此。有任何想法吗?

2 个答案:

答案 0 :(得分:2)

简短回答:无法完成。

没有API公开方法可以做到这一点,而且几乎完全取决于浏览器如何处理实际的加载/缓冲策略(有一些已定义的步骤,但策略不是这样)。

standard 中定义的内部结构:

  

下载率也可能会被自动限制   用户代理,例如平衡下载与其他连接   共享相同的带宽。

     

用户代理可能决定不会随时下载更多内容,例如   在缓冲五分钟的一小时媒体资源之后,同时   等待用户决定是否播放资源,   在等待交互式资源[...]

中的用户输入时

  

用户代理可以使用获取资源所需的任何方法   (在本规范和其他规范提出的限制范围内);   例如,面对网络错误重新连接到服务器,   使用HTTP范围检索请求或切换到流式传输   协议。用户代理必须仅考虑错误的资源   已经放弃了尝试获取它。

您可以随时暂停视频。这可能会使浏览器在几秒钟后暂停下载数据,但同样,浏览器如何实际处理这一点。

因此,总而言之:无论我们喜欢与否,它都是这样的。

答案 1 :(得分:1)

媒体preload属性对于探索很有用,尽管它只能用于in some browsers

HTML5规范似乎预测了您的确切用例: http://www.w3.org/TR/html5/embedded-content-0.html#attr-media-preload

  

注意:作者可能会将属性从“无”或“元数据”切换为“自动”   用户开始播放后动态显示。例如,在带有的页面上   许多视频可能用于表示许多视频   除非有要求,否则不得下载,但一旦请求,则不得下载   它是积极下载的。