HTML5 视频 MEDIA_ERR_DECODE 随机发生

2023-12-23

我正在开发一个包含 6 个音频和视频元素的项目,这些元素依次播放。 发出前的代码顺序是这样的:

  1. 预加载所有媒体资源直到“canplaythrough”
  2. 播放视频-1
  3. 停止 video-1 并播放 audio-1
  4. 停止音频 1 并再次播放视频 1。

然后 video-1 播放 2-3 秒并停止发送错误代码 3(3 = MEDIA_ERR_DECODE - 解码时发生错误)。我尝试仅通过链接播放相同的视频,并且播放得很好。

此外,该问题在某些浏览器的某些操作系统上也会随机出现。 例如:

  • Win10最新Opera-出现
  • Win10最新Chrome--不错
  • MacOS 所有浏览器 - 很好
  • 另一个 MacOS 最新的 Chrome - 出现在十分之一的情况下
  • iPhone 所有浏览器 - 很好
  • iPad 所有浏览器 - 很好

UPDATE仅在第一次查看或禁用缓存时,才会在 Win10 最新 Opera 上发生。

UPDATE 2视频编解码器为 H.264,音频编解码器为 AAC,帧速率为 24。


MEDIA_ERR_DECODE 的定义

HTML5 媒体错误代码规范 http://w3c.github.io/html/semantics-embedded-content.html#error-codes

在确定资源可用后,解码媒体资源时发生某种描述的错误。

Mozilla MediaError 文档 https://developer.mozilla.org/en-US/docs/Web/API/MediaError

尽管之前已确定可用,但在尝试解码媒体资源时发生错误,导致错误。

Firefox 错误消息(如下所示支持票 https://support.mozilla.org/en-US/questions/1058608)

由于损坏问题或视频使用了您的浏览器不支持的功能,视频播放被中止。

解雇的常见原因

  • 视频已加密,但您无法解密。这可能是由于多种原因造成的:

    1)使用多种 DRM 方案(而不仅仅是一种)加密视频可能会导致在某些浏览器上解密失败;

    2)您在开始播放之前忽略了对视频进行解密(可能在您完成许可请求之前不小心将其设置为自动播放);

    3)没有足够的资源来解码视频,因为多个视频缓冲区(即使它们不是加密视频)已用完。

  • 您的浏览器不支持特定的媒体格式(例如 DASH)。根据媒体类型,这可以通过插件来修复。

  • 您的 MIME 类型设置错误<source>元素;请注意,某些浏览器更喜欢声明不同的 MIME 类型,以便解码某些视频格式。

  • 太多视频缓冲区已用完而未清除。

根据您的情况进行诊断

由于错误的触发相当不确定,这似乎是一个资源问题,而不是任何其他可能性。您有六个音频和视频元素依次播放,因此您应该在每次交付媒体时清除每个元素。您也不应该并排加载所有六个。

var video = document.getElementById('myVideo');
var nextVideo = document.getElementById('nextVideo');

video.addEventListener('ended', (event)=>{
    video.src = ""; // or the src attribute of the active <source> element.
    video.load();
    // If you aren't going to re-use this video element, you should also
    // remove all eventListeners from it and then remove it from the DOM.
    nextVideo.preload = "auto"; // I'm assuming the src has already been set.
    nextVideo.autoplay = true;
    // Second video should start playing now due to autoplay. If not, call load() again.
});

video.preload = "auto";
nextVideo.preload = "metadata";
video.src = "video.mp4";
nextVideo.src = "nextVideo.mp4";
video.autoplay = true;
nextVideo.load(); // I believe load() might not be necessary for preload = "metadata".
video.load(); // I believe load() is necessary for preload = "auto".
// First video should start playing now due to autoplay.

这是一个类似的案例这个答案 https://stackoverflow.com/a/30105846/5951226与iOS相关。

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

HTML5 视频 MEDIA_ERR_DECODE 随机发生 的相关文章

  • CSS 网格/布局框架,专注于固定元素和单页全屏布局

    经验法则 如果您在布局中过多地使用 CSS 请切换到框架 我已经研究了数十个网格 布局框架 其中大多数都专注于传统的文档网格布局 我的页面更像是一个 SPA 单页应用程序 它类似于桌面应用程序使用的布局 显然 HTML 不能很好地处理这个问
  • JavaScript 可以检测用户的浏览器是否支持 gzip 吗?

    我可以使用 JavaScript 来检测用户的浏览器是否支持 gzip 压缩内容 客户端 而不是 Node js 或类似内容 我正在尝试支持以下边缘情况 有很多可能的文件可以加载到特定的 Web 应用程序上 最好在应用程序运行时根据需要加载
  • html 图像 src 调用 javaScript 变量

    这是我的代码 我想问 我怎样才能做到这一点 img src img apple 我一直在尝试使用 call 函数和 document onload 但它根本不起作用 有人可以救我吗 我假设你只是想用 javascript 更新图像 src
  • 有没有办法在 React 中自动播放音频而不使用 onClick 事件?

    我在尝试在 componentDidMount 中播放音频时收到此错误 未捕获 承诺中 DOMException play 失败 因为用户没有先与文档交互 componentDidMount document getElementById
  • 为动态加载的 HTML 内容触发 Bootstrap JS 行为

    我正在动态加载包含 Bootstrap 标记的 HTML 模板 但是 Bootstrap Javascript 行为不会应用于加载的内容 例如 如果加载的内容包含 Bootstrap 模式的标记 则该模式将无法正确运行 有没有办法可以触发
  • 个人 Tumblr 帖子上的 Javascript

    我知道您可以编辑在 tumblr 博客上呈现所有帖子博客主页的 html AngularJS 但是 有什么办法可以添加自定义到各个帖子 我想在逐个帖子的基础上做一些 javascript 的东西 但似乎无法找到可以编辑代码的位置 或者 如果
  • 纯 JS 相当于 Jquery eq()

    jquery 的纯等价物是什么eq 例如 我怎样才能实现 class1 class2 eq 0 text 1254 在纯 JavaScript 中 要获取数组中的元素索引 可以使用 在 JavaScript 中 因此 要重现您的代码 您可以
  • vuejs 模板和 asp.net 部分视图,好的做法吗?

    我在网站中使用 Vue js 并将模板添加到 html 代码中 并将 js 代码添加到单个 js 文件中 所以我不想使用 vue Vuefy Browserfy 方法 而是稍后捆绑并缩小我的 js 文件 由于我必须使用 Asp Net MV
  • Chromium 中的 MP4 编解码器支持

    我们已将 Chromium 嵌入式框架集成到我们的 Windows 游戏中 以允许我们从应用程序内渲染网页 并且一切正常 除了 MP4 视频 据我所知 由于许可问题 Chromium 不包含此编解码器 但任何人都可以提供有关我们如何添加支持
  • CSS如何制作可滚动列表

    我正在尝试创建一个由标题和标题下方的项目列表组成的网页 我希望项目列表可以垂直滚动 我还希望网页占据整个窗口 但不要更大 目前我的问题是项目列表不可滚动 而是延伸到窗口底部下方很远 这导致窗口可滚动 应该做什么CSS属性位于html bod
  • 只保留 A-Z 0-9 并使用 javascript 从字符串中删除其他字符

    我正在尝试验证字符串以使它们成为有效的网址 我只需要保留 A Z 0 9 并使用以下命令从字符串中删除其他字符javascript or jquery 例如 贝儿餐厅 我需要将其转换为 百丽餐厅 所以字符被删除 只保留 A Z a z 0
  • IE localStorage 事件失火

    在 Internet Explorer 9 和 10 中 localStorage 实现意外地触发事件 这里有很棒的线索 Chrome 的 localStorage 实现存在错误 https stackoverflow com questi
  • 使用 JavaScript 防止网页导航离开

    如何使用 JavaScript 防止网页导航离开 Using onunload允许您显示消息 但不会中断导航 因为为时已晚 然而 使用onbeforeunload将中断导航 window onbeforeunload function re
  • 在 Chrome 开发者工具中禁用调试器语句

    我正在尝试对恶意 JavaScript 进行逆向工程 当我最初加载侧面时 会注入 JS 代码 其中包括 debugger 语句并将断点注入我的 chrome 开发人员控制台 通过stackoverflow阅读 禁用所有断点does not帮
  • 从检查元素隐藏 ''

    我有这个 HTML 和 PHP 联系表
  • 检查浏览器空闲的替代方法

    我有一个简单的网络信息亭 在鼠标未使用 jQuery 移动 30 秒后显示用户操作提示 var i null body wrap mousemove function clearTimeout i overlay fadeOut i set
  • 根据文本内容从 jquery 对象中过滤元素

    我正在尝试使用contains带有 this 关键字 但它给出了错误 JS function var check ul find li filter function return this contains two css color r
  • Array.of 与“[ ]”。何时使用 Array.of 而不是“[ ]”?

    当我发现时我正在读一些书Array of https developer mozilla org en docs Web JavaScript Reference Global Objects Array of 根据 MDN Array o
  • javascript:完全删除top.location.hash?

    如果我的地址栏中已经有一个哈希值 例如domain com whatever 我打电话 top location hash wathever 被转换为domain com 没有任何内容 是否可以完全删除哈希值 所以没有 left 因为如果我
  • 在 Firestore 文本字段中存储文本文件并删除换行符

    我正在尝试将 CSV 文件存储在 Cloud Firestore 内的文本字段中 然而 Firestore 正在删除所有换行符并将整个 CSV 文件存储为一行 这Firestore 数据类型文档 https firebase google

随机推荐

  • Python 中 _ 的作用是什么? [复制]

    这个问题在这里已经有答案了 我在某处看到过关于 Python 中使用的字符如下 print 有人可以帮我解释一下它的作用吗 在交互式翻译中 始终指最后输出的值 gt gt gt 1 1 2 gt gt gt print 2 gt gt gt
  • 如何从 IBM Websphere 迁移到 Tomcat?

    我想要将现有的 IBM Websphere 应用程序服务器迁移到等效的 Tomcat 应用程序服务器吗 其次 如何使用 IBM HTTP Server ihs 配置这个迁移后的 Tomcat 应用服务器 简单介绍一下当前的系统 我们正在使用
  • C/C++ 代码的编码和命名约定测试

    我正在寻找一个可以自定义的脚本 工具来检查和强制执行 C C 代码的编码 命名约定 它应该检查例如 代码行以一定长度包裹 私有变量有前缀 代码缩进正确 所有功能均已记录 我正在从事的许多项目都是由客户外包的 这些客户往往有各种内部编码和命名
  • 是否可以在 android 中将动画 gif 文件设置为动态壁纸?

    我是 Android 平台的新手 我希望开发一个动态壁纸应用 当我在搜索引擎中搜索到此内容时 他们中的许多人创建了动态壁纸作为他们的代码 使用SurfaceView and Canvas 我对此了解不多 我的疑问是 任何可以将 gif 图像
  • Bootstrap 4:如何拥有一个包含容器中内容的全宽导航栏(如 SO 导航栏)?

    我正在使用 Bootstrap 4 如何制作像 SO 导航栏一样的导航栏 内容像 容器 一样对齐 但 Bootstrap 4 中 容器流体 的宽度 我想要 固定顶部 导航栏设置的宽度 而不是固定顶部和 容器 中的导航栏内容 我会提供一个示例
  • Python求和地理半径内的纬度/经度点并求和到网格

    基本上 我的实验程序试图找到给定时间落在有效点半径 例如 50 公里 内的点的数量 我的数据是结构化的 但如果需要的话我可以重组 在三个单独的数组中 例如 1 LAT 1 LON 1 TIM 其中 1 LAT 1 LON 1 TIM 均包含
  • 如何让窗体在按退出键时关闭?

    我有一个小窗体 当我按下 Windows 窗体应用程序中的按钮时会出现该窗体 我希望能够通过按退出键关闭表单 我怎么能这样做呢 我不确定要使用的事件 形式 关闭 如果表单上已有关闭表单的按钮 则可以在表单上设置一个属性来为您执行此操作 Se
  • 如何从视觉工作室外部打开WorkItem(VS-Team Explorer)?

    我想使用 C 代码从 Visual Studio 外部打开工作项 是否可以 我尝试过这个 IWorkItemDocument widoc null try string tfsName http rd tfs no2 8080 tfs si
  • .NET 中的 Getter 和 Setter 声明[重复]

    这个问题在这里已经有答案了 我想知道 getter 和 setter 的声明之间有什么区别 以及是否有首选方法 以及原因 第一个可以由 Visual Studio 自动生成 其他人呢 谢谢 1st string myProperty get
  • Java 中接口的重要性[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 假设我们有两个班级 Tiger an
  • Windows Remote 上 OpenGL 的现状和解决方案 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 OpenGL 和 Windows Remote 不能很好地配合 此问题的解决方案取决于用例 并且答案分散在网络的各个角落 当我开始研究这个
  • 在 Crystal Reports 中将行数据转置为列

    我从存储过程返回以下数据 Staff Category Amount Bob Art 123 Bob Sport 777 Bob Music 342 Jeff Art 0 Jeff Sport 11 Jeff Music 27 即使金额为零
  • Mac OS X:从目录服务获取当前用户的当前用户名和主目录

    我的应用程序是用 Objective C 编写的 如何通过目录服务获取当前登录用户的用户名和主目录 细节 我的 Cocoa 应用程序使用 getenv USER getenv HOME 获取当前用户名和主目录 显然 如果用户通过目录服务登录
  • leafletjs 添加可滚动弹出窗口?

    使用带有弹出窗口的 leafletjs 当我的弹出窗口包含最少的文本时 一切正常 如果我把它们做得更大 它们仍然可以正常工作 如果我添加太多 我会添加 maxHeight 到弹出窗口 它使弹出窗口可滚动 如果我一开始没有足够的内容来填充页面
  • 如何在 MediaPlayer setDataSource 中包含 http 标头?

    我正在将 URI 传递给设置数据源方法 http developer android com reference android media MediaPlayer html setDataSource 28java lang String
  • 使用动态发出的 POCO 进行快速序列化和反序列化

    我目前正在将 SQL 表行序列化为二进制格式 以实现高效存储 我将二进制数据序列化 反序列化为List每行 我正在尝试升级它以使用 POCO 它将动态生成 发出 每列一个字段 我在网上搜索了几个小时 偶然发现了像 EF T4 Expando
  • 如何替换字符串中的最后一个单词

    有谁知道如何替换字符串中的最后一个单词 目前我正在做 someStr someStr replace someStr substring someStr lastIndexOf 1 New Word 上面的代码替换了字符串中出现的每个单词
  • 如何使用 Flexbox 实现浮动侧边栏布局,内容环绕侧边栏?

    我正在尝试实现在桌面上看起来像这样的响应式布局 在手机上就像这样 请注意以下要求 侧边栏应仅占据适合内容所需的垂直空间 在侧边栏下方 主要部分的内容应占据整个宽度 在移动设备上 侧边栏应显示在主要内容下方 这是一个包含我最初的 HTML 和
  • 使用装饰器自动注册类方法

    我希望能够创建一个 python 装饰器 自动在全局存储库中 注册 类方法 带有一些属性 示例代码 class my class object register prop1 prop2 def my method arg1 arg2 met
  • HTML5 视频 MEDIA_ERR_DECODE 随机发生

    我正在开发一个包含 6 个音频和视频元素的项目 这些元素依次播放 发出前的代码顺序是这样的 预加载所有媒体资源直到 canplaythrough 播放视频 1 停止 video 1 并播放 audio 1 停止音频 1 并再次播放视频 1