5

我正在使用 videojs-youtube 插件在我的网络应用程序中播放嵌入的 youtube 视频。最近我注意到,当网络应用程序被包装在 iframe 中时,视频会卡在无限加载中。由于此过程,控制台不会显示任何相关错误。

在尝试调试此问题时,我意识到 PlayerStatus(如 IFrame Player API 中所述)正在以错误的方式更改:当视频未包装在 iframe 中时,PlayerStatus 从“未启动”变为“缓冲”和“玩”。另一方面,当视频被包装在 iframe 中时,PlayerStatus 再次从“未启动”变为“缓冲”再到“未启动”

但是有一个奇怪的例外 - 当安装并激活 AdBlock 或 LastPass 等 chrome 扩展时,视频可以正常播放,即使它在 iframe 中也是如此。

知道为什么会这样吗?谢谢 :)

4

1 回答 1

0

我遇到了同样的问题,但我认为经过数小时的尝试,我已经找到了解决问题的方法......添加allow="autoplay"到 iframe 可以为我解决这个问题,这并不完全有意义,因为有时它确实可以在不添加它的情况下工作。

澄清一下,我在 iframe 中使用 video.js 和 videojs-youtube.js,在该 iframe 内,如果您播放 Youtube 视频,则会在 iframe 内创建另一个 iframe。而且我猜测单击视频播放器播放 Youtube 视频不被认为是用户与内部 iframe 交互,因为 videojs-youtube 以编程方式告诉 youtube 视频在该内部 iframe 中播放,而 Chrome 不允许视频在除非用户与之交互,否则 iframe 将被播放。

这并不能解释为什么 5% 的时间它可以正常播放。无论如何,将 allow=autoplay 添加到包含 videojs 播放器的外部 iframe 标记使其可以 100% 地工作。

于 2019-06-25T06:14:16.930 回答