动态更改视频标签源时移动 Safari 崩溃

Posted

技术标签:

【中文标题】动态更改视频标签源时移动 Safari 崩溃【英文标题】:Mobile Safari crash when changing video tag source dynamically 【发布时间】:2014-08-13 04:15:00 【问题描述】:

我最近一直在尝试解决一个处理动态视频源更改的代码的问题:

vid.src = "some_movie_url";

最终导致移动 Safari 崩溃。

流程有点复杂,所以我不在这里发布(太多异步/事件回调处理)。

实际问题是这样的,我在设备日志中看到抛出以下异常:

“一个 AVPlayerItem 不能与多个 AVPlayer 实例关联”

移动 Safari 中视频标签上的哪些操作可能会导致此类问题?

我看到很多问题涉及到 Objective C 原生应用程序,但不是移动 safari 导致这个问题的地方。

【问题讨论】:

【参考方案1】:

假设您使用 javascript 来简单地使用 DOM 操作替换视频元素的 src 属性,也许您可​​以通过完全删除视频节点来解决此问题,使用 src 创建一个新视频节点您想要的属性,并将其附加到 DOM。

类似的东西:

var oldVidNode, vidNodeParent, newVidNode, newVidSrc;
oldVidNode = document.querySelector("video");
vidNodeParent = oldVidNode.parentNode;
vidNodeParent.removeChild(oldVidNode);
newVidNode = document.createElement("video"); 
newVidSrc = document.setAttribute("src", "foo.m4v");
vidNodeParent.appendChild(newVidNode);

【讨论】:

虽然这可能有效,但对我来说不是一个有效的选择,因为我正在处理一个大系统,因此无法缓解这种变化,它增加了额外的引导来处理元素之间的转换。谢谢!

以上是关于动态更改视频标签源时移动 Safari 崩溃的主要内容,如果未能解决你的问题,请参考以下文章

更改源时 React-native-video 不更改视频

在不使用海报的情况下,HTML5 视频标签在移动 Safari 上不显示缩略图

HTML5 视频标签在移动 Chrome 上的奇怪行为,但适用于 SAFARI

Safari HTML 5 视频标签在链接标签内不起作用

如何在移动 Safari 中播放视频

Safari:无法从 blob url 动态加载视频