Dzm*_*sky 6 html javascript video opera decode
我正在开发包含 6 个音频和视频元素的项目,这些元素一个接一个地播放。问题前的代码顺序是这样的:
然后视频 1 播放 2-3 秒并停止发送错误代码 3(3 = MEDIA_ERR_DECODE - 解码时发生错误)。我试图通过链接播放相同的视频,并且播放正常。
此外,该问题在某些浏览器的某些操作系统上随机发生。例如:
更新仅在第一次查看或禁用缓存时才会在 Win10 最新版 Opera 上发生。
更新 2视频编解码器是 H.264,音频编解码器是 AAC,帧率是 24。
媒体资源被确定为可用后,在解码媒体资源时发生某种描述错误。
尽管之前已确定可用,但在尝试解码媒体资源时发生错误,导致错误。
Firefox 错误消息(如本支持票中所示)
由于损坏问题或因为所使用的视频功能您的浏览器不支持,视频播放被中止。
视频已加密,但您未能解密。这可能是由于各种原因:
1)使用多种 DRM 方案(而不是只有一种)加密视频可能会导致在某些浏览器上解密失败;
2)您在开始播放之前忽略了对视频的解密(可能在您完成许可请求之前不小心将其设置为自动播放);
3)没有足够的资源来解码视频,因为几个视频缓冲区(即使它们不是加密视频)已经用完了。
您的浏览器不支持特定的媒体格式(例如 DASH)。这可以通过插件修复,具体取决于媒体类型。
您在<source>元素上设置了错误的 MIME 类型;请注意,某些浏览器更喜欢声明不同的 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.
Run Code Online (Sandbox Code Playgroud)
这是与 iOS 相关的答案的类似案例。
| 归档时间: |
|
| 查看次数: |
9556 次 |
| 最近记录: |