如何识别 html5 媒体元素已停止并等待进一步的媒体继续播放

2023-12-07

我正在与MediaSource and SourceBuffer播放 html5 视频。我按顺序获取 DASH 片段以继续不间断的视频播放。但有时,由于网络状况,SourceBuffer数据耗尽无法继续游戏。当该数据到达时,比赛将继续。但在此期间,视频看起来停滞不前。我想在媒体元素上添加一些视觉指示,表明它在缓冲所需数据时暂停。

我尝试在视频上绑定“等待”和“停滞”事件,但没有一个事件被触发。

var vid = $('video')[0];
vid.addEventListener('stalled', function(e) { console.log('Media stalled...');})

有没有其他方法可以知道媒体是否已停止以及何时恢复?

Thanks.


使用停滞事件是正确的,但不幸的是,它并不总是按预期工作。

你可以使用媒体源扩展这使您可以完全控制缓冲区并允许您手动检测停顿。然而,使用它的解决方案有点超出了我的范围。

你可以使用timeupdate事件也是如此。

  • Have a setTimeout()以超时值运行
  • 在 - 的里面timeupdate事件,清除此计时器并设置一个新的
  • 如果计时器没有重置,则意味着没有时间进度,如果没有暂停或结束,则假设停止

示例(未经测试):

...
var timerID = null, isStalling = false;

vid.addEventListener("timeupdate", function() {
    clearTimeout(timerID);
    isStalling = false;
    // remove stalling indicator if any ...
    timerID = setTimeout(reportStalling, 2000);  // 2 sec timeout
});

// integrate with stalled event in some way -
vid.addEventListener("stalled", function() {isStalling = true})

function reportStalling() {
  if ((!vid.paused && !vid.ended) || isStalling) { ... possible stalling ... }
}
...

您可能需要进行一些额外的检查以消除其他可能性等等,但这只是为了给您提供总体思路,并且除了使用stalling event.

另一种方法是使用以下命令来监视加载的缓冲区段:buffered对象(参见这个答案在这里例如使用情况)。

这些可以用来看看你是否有任何进展,然后使用currentTime与范围进行比较,以查看时间是否位于范围的末尾和/或范围是否发生变化。

无论如何,希望这能提供一些意见。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何识别 html5 媒体元素已停止并等待进一步的媒体继续播放 的相关文章

  • 在iframe中显示本地htm文件?

    我使用 MailBee NET 对象以 htm 格式在本地计算机上保存一些电子邮件 例如 使用服务器上的电子邮件 messageID 为每封电子邮件创建一个单独的文件夹 D 电子邮件 GmailId1380ec660e0e656a doc
  • 根据屏幕尺寸更改图像 src

    我正在尝试使用媒体查询根据屏幕尺寸更改图像 src 我尝试过背景 url x 但它不起作用 我在某处读到我应该使用 content url x 代替 但是当我这样做时 我得到一个空白页面 谁能告诉我我的代码有什么问题吗 HTML div c
  • 如何使用css网格制作一个垄断板?

    I want to create a monopoly board like There are following features in the board 角是方形的 比其他盒子大 每行的文本都面向特定的角度 我的基本 html 结构
  • JavaScript 中的安全数据

    我必须为 Web 测试创建生成器 使用 HTML 和 JavaScript 测试必须离线和在线进行 正确答案和分数评估必须是生成的测试的一部分 最终用户的分数仅发送到服务器 无法在服务器上进行评估 并且服务器对问题一无所知 它只保存最终分数
  • 数据表 - 从 AJAX 源过滤数据

    我有一个数据表 正在从 api 获取数据 现在我的状态是活动的 非活动的 如果标志是活动的 那么我需要在数据表中显示 否则我不应该显示过期的 这是我的fiddle https jsfiddle net lakshmipriya001 qLp
  • Xpath 获取 if href 包含字符串的一部分

    您好 我尝试获取包含 href p random tagged see 的所有元素 这是我的路线 div preceding h2 text Most recent div div a href p tagged see 我该如何修复此代码
  • 指定 body CSS 宽度安全吗?

    现在通常满足于以一定的尺寸居中 div Blah div 不使用包装器进行对齐和大小并直接将其应用到body tag 像这样 Blah 尺寸是
  • chrome css 动画上的抖动

    尝试使用两个具有相同背景图像 svg 的居中 div 制作一个从中心淡入图像的 css 动画 并为其宽度和背景位置设置动画 问题是 在 chrome 上 存在严重的抖动问题 也许是 chrome 循环执行动画步骤 而不是同时执行它们 这是j
  • 调用一个从 AngularJS 表达式本地计算值的函数是不是很糟糕?

    我读了关于使用范围的一些 AngularJS 陷阱的文章 http thenittygritty co angularjs pitfalls using scopes 并且它指出您不应在表达式中使用函数 并且我知道每次框架认为需要时都可能会
  • HTML5 Canvas 性能:加载图像与绘图

    我正计划使用 javascript canvas 编写一个游戏 我只有一个问题 在加载图像与仅使用 canvas 的方法进行绘图方面 我应该考虑什么样的性能考虑因素 因为我的游戏将使用非常简单的几何图形 圆形 正方形 直线 所以任何一种方法
  • 根据窗口大小调整 div 及其内部内容的大小

    我已经查找了一百万种技术 但我无法让它发挥作用 我知道还有其他类似的帖子 如果它给任何人带来麻烦 我很抱歉 但我需要针对我的代码的具体说明 因为我很愚蠢 提前非常感谢 我希望 div 容器 contentContactBox 以及其中的所有
  • iframe 随着内容变化自动调整高度

    我有一个 iframe 您可以在以下链接中看到 http one2onecars com http one2onecars com iframe 是屏幕中央的在线预订 我遇到的问题是 虽然 iframe 的高度在页面加载时没问题 但我需要它
  • 如果使用jquery,如何在html5中查看显示分钟和秒的CurrentTime

    我想在显示器上看到当前时间分钟和秒的视频 var id main video player alert id get 0 currentTime worked i see 12 324543356 var minnow id get 0 c
  • 如何使用expressjs发送多个文件?

    我希望能够发送许多文件 如果可能的话 发送整个目录 以便我可以在从 html 文件调用的其他 js 文件中访问它 const app require express const http require http Server app co
  • 有条件地在 html.RadioButtonFor (MVC4/Razor) 中包含选中的属性

    当您在手动编码的 html 元素 例如单选按钮 中显式包含 checked 属性时 您可以使用 bool 来确定该属性是否存在于该元素上正如这里所看到的 http www davidhayden me blog conditional at
  • 框架可以用什么代替?

    假设我有一个包含 50 个网页的网站 每个页面由 A Header 导航 左侧内容 右侧内容 Footer 不使用 Frames 服务器端编程 第三方工具和软件 构架 我需要将这 5 个部分的代码 HTML 标记 分别放入这 50 个页面中
  • Firefox CSS 旋转与 Chrome 旋转不同

    我想制作一个 3D 矩形 平行六面体 用户可以用箭头移动它 它在 Chrome 中工作得很好 但在 Firefox 中 一些转换 实际上很多 与 Chrome 不同 看着this https jsfiddle net 7273yur9 2
  • CSS 按钮将线性渐变背景转换为透明背景

    我有一个带有线性渐变背景 橙色边框和一些文本的按钮 当我将鼠标悬停在按钮上时 我希望背景变得透明 而不更改按钮的其他属性 我尝试将不透明度转换为 0 但显然 这会隐藏边框和文本 我也尝试过转换背景 但它不起作用 因为我没有要转换到的端点 因
  • 向上/向下滚动到带有固定按钮的部分

    我想构建一个用于向上 向下滚动到页面部分标签的脚本 我的源代码如下所示 HTML div class move div class previous UP div div class next DOWN div div section Fi
  • 黑色左/右三角形大小不同

    我使用黑色左指三角形 右左指三角形几何形状作为网站上的链接 并使用它们的 HTML 代码 和 9664 9654 由于某种原因 即使我在没有其他元素的空白页面上使用三角形 它们也不会以相同的大小显示 在 Chrome 上 向左指向的位置比向

随机推荐

  • 在 SvelteKit 中,如果未保存用户状态,是否有办法取消 popstate 事件?

    我有一个允许用户编辑其状态的组件 这会触发一个notSaved多变的 我有一个beforeunload事件处理程序来处理重新加载和退出页面以提醒用户保存状态 但是使用 SvelteKit 使用浏览器中的后退按钮似乎不会触发beforeunl
  • R:根据多个变量的值定义不同的模式[重复]

    这个问题在这里已经有答案了 这是我所拥有的 data frame x c 0 0 0 1 1 1 y c 0 0 1 0 1 1 x y 1 0 0 2 0 0 3 0 1 4 1 0 5 1 1 6 1 1 这就是我想要的 data fr
  • .net:有没有办法从下到上读取txt文件? [复制]

    这个问题在这里已经有答案了 可能的重复 如何在C 中使用迭代器反向读取文本文件 我想知道是否有一种方法可以从下到上读取文本文件而不会造成任何性能损失 即 readLine movenext 方法 但相反 这种事情在 net 中可能吗 为了让
  • python:utcfromtimestamp 与 fromtimestamp,当时间戳基于 utcnow() 时

    很确定这是一件容易的事 但我不明白 我当地的 TZ 目前是 GMT 3 当我从datetime utcnow timestamp 这确实比我少了3个小时datetime now timestamp 在我的流程中的另一个过程中 我采用 utc
  • 在 Magento 之外但在同一域中获取购物车内容

    我需要以某种方式使 Magento 商店中当前的购物车和客户信息可供 Magento 之外的网站的其余部分访问 例如 mysite com blog 位于 mysite com store 之外 在我的域的基础上 我运行了这段代码 但它只返
  • 重命名数据帧切片上的列未按预期执行

    我试图清理数据框中的列名 但只是清理一部分列 当尝试以某种方式替换数据帧切片上的列名称时 它不起作用 为什么呢 假设我们有以下数据框 Note 底部是可复制的代码来重现数据 Value ColAfjkj ColBhuqwa ColCouiq
  • 为什么 awk 中的“1”打印当前行?

    In 这个答案 awk 2 no 3 N A 1 file 被接受了 请注意1在 AWK 脚本的末尾 答案的作者在评论中说 1 是 一种显示当前行的神秘方式 我很困惑 这是如何运作的 In awk Since 1总是评估为true 执行默认
  • 将 NSArray 转换为 JSON 对象数组

    我想从 resultsArray 创建一个 JSON 对象数组 NSMutableArray resultsArray NSMutableArray array FMResultSet resultsSet database execute
  • 请求的资源上不存在“Access-Control-Allow-Origin”标头

  • jQuery-UI 对话框内存泄漏

    我正在使用 IE7 和一些 jQuery 对话框 每个打开的对话框都会遇到大约 6meg 的泄漏 我假设这与关闭有关 但到目前为止我为删除它们所做的一切都没有帮助 此时 我认为我已经处理了除传入的回调函数之外的所有闭包 但即使在关闭并删除对
  • 在 iOS 中从 Internet URL 或本地文件播放 .mp4 或 .mov 视频?

    我怎样才能玩 mp4 or mov视频来自任一Internet URL or a local file in iOS 如何在集合视图控制器中添加多个视频 试试这个 MPMoviePlayerController NSArray paths
  • 地图 API 不适用于 HTML 中的 Windows Phone

    最近遇到这个奇怪的问题 我更像是一名网络程序员 而且我才刚刚涉足应用程序开发 我一直在尝试使用 HTML 在 Windows Phone 8 1 上开发这个地图应用程序 但遇到了一个问题 当我尝试集成 Bing 地图时 我应该将其作为脚本添
  • Typeahead.js - 无法选择建议

    我一定是个白痴 我正在使用Typeahead js插入 我正在尝试使用自定义模板来获取建议 当我的自定义模板出现时 我无法使用箭头键实际选择项目 如果我将鼠标悬停在某个项目上 该选择也不会突出显示 我认为这可能只是一个样式问题 但是 如果出
  • iOS 中的富文本编辑器 [关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 我正在寻找一个示例项目 它应该具有基本的富文本编辑功能 粗体 斜体 下划线 对齐 附加图像 我浏览了谷歌搜索结果 有几个编辑器可供使用iOS但这些都是通过使用开发的UIWebView
  • .NET 2.0 Web 应用程序身份验证失败:“提供的票证无效”

    我有一个 NET 4 0 应用程序和一个 2 0 应用程序作为子应用程序 Web 应用程序不在多服务器环境中 只有一台服务器参与服务这些请求 两个应用程序都使用自定义身份验证 并且两个应用程序具有相同的machineKey属性和值 当我访问
  • 如何使用 Node.js 创建不存在的目录

    如果目录不存在 以下创建目录的正确方法是吗 它应该具有脚本的完全权限并且可供其他人读取 var dir dirname upload if path existsSync dir fs mkdirSync dir 0744 对于个人目录 v
  • MySQL - 在 WHERE 子句中使用 COUNT(*)

    我正在尝试在 MySQL 中完成以下任务 请参阅pseudo code SELECT DISTINCT gid FROM gd WHERE COUNT gt 10 ORDER BY lastupdated DESC 有没有办法在 WHERE
  • 设置独立于模型名称的种类名称(App Engine 数据存储区)

    作为一名 Python 程序员 我喜欢我的代码是可重用的 我试图避免代码中的种类名称冲突 其中两个不同的模型共享相同的种类名称 目前 我只是在模型的类名前面添加一些有意义的文本 但这非常不符合Python风格 能够显式设置模型的种类将解决我
  • 如何自动升级 Firebreath 插件

    最近 我使用 Firebreath 编写了一个跨浏览器插件 并为所有浏览器制作了一个安装程序 我在 stackoverflow 中搜索了自动插件安装 并找到了很多很好的答案 FireBreath插件自动安装 在网页上部署 Firebreat
  • 如何识别 html5 媒体元素已停止并等待进一步的媒体继续播放

    我正在与MediaSource and SourceBuffer播放 html5 视频 我按顺序获取 DASH 片段以继续不间断的视频播放 但有时 由于网络状况 SourceBuffer数据耗尽无法继续游戏 当该数据到达时 比赛将继续 但在