【问题标题】:Is there a way to specify the timeout of a HTML5 video element?有没有办法指定 HTML5 视频元素的超时?
【发布时间】:2017-04-16 01:06:51
【问题描述】:

我正在寻找一种在 HTML5 视频元素报告网络错误之前设置超时的方法 (HTML5 media element error code 2)

在测试时,我注意到如果我停止互联网连接,视频元素会挂起,并且似乎在显示媒体错误代码 2 之前缓冲了很长时间。我可以减少这个时间吗?

在某些情况下它根本不报告错误并且似乎永远缓冲。这是有原因的吗?

【问题讨论】:

    标签: javascript html video video-streaming html5-video


    【解决方案1】:

    不幸的是,我认为您不能,这取决于每个浏览器供应商的实现。根据 resource fetch algorithm 中的 HTML5 Video spec,您可以阅读:

    停顿超时是用户代理定义的时间长度,应该是大约三秒当积极尝试获取媒体数据的媒体元素在等于停顿超时的持续时间内未能接收任何数据时,用户代理必须排队一个任务以在该元素处触发一个名为停顿的简单事件.

    用户代理可能允许用户选择性地阻止或减慢媒体数据下载。当媒体元素的下载完全被阻止时,用户代理必须像它被停止一样行事(而不是像连接关闭一样行事)。下载速率也可以由用户代理自动限制,例如以平衡下载与共享相同带宽的其他连接。

    用户代理可能随时决定不下载更多内容,例如在缓冲一小时媒体资源的五分钟后,等待用户决定是否播放该资源,或者等待用户在交互资源中输入。 当媒体元素的下载被挂起时,用户代理必须将 networkState 设置为 NETWORK_IDLE 并将任务排队以在元素上触发一个名为挂起的简单事件。如果资源下载恢复时,用户代理必须将 networkState 设置为 NETWORK_LOADING

    【讨论】:

    • 有没有办法伪造或模拟媒体错误代码 2 来测试是否正确/优雅地处理?
    • MEDIA_ERR_NETWORK=2. A network error of some description caused the user agent to stop fetching the media resource, after the resource was established to be usable. 所以,我想,只要拔掉你的互联网并使用 HTML5 事件 developer.mozilla.org/en-US/docs/Web/Guide/Events/Media_events 来处理任何可能的错误。
    • 如果浏览器没有响应,可能是浏览器内部的问题。规范仅描述行为,浏览器供应商负责实施。
    猜你喜欢
    • 1970-01-01
    • 2011-02-28
    • 2010-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多