取消静音后,无法通过iframe API播放YouTube视频

时间:2019-02-18 19:31:12

标签: javascript google-chrome youtube embed youtube-javascript-api

自Chrome更新到版本72后,我在YouTube Iframe API上运行的自定义播放器停止运行。它仍然可以在Firefox或Chrome <= 71上完美运行。

使用下面的代码,当触发play()函数时,视频开始缓冲,然后停止,而不播放。

function onYouTubeIframeAPIReady() {
  ytIframe = $("#player")[0];
  ytPlayer = new YT.Player(ytIframe, {
    events: {
      'onReady': () => {},
      'onStateChange': () => {}
    }
  });
}

function play() {
  ytPlayer.playVideo();
}

使其生效的唯一方法是在iframe src上使用mute=1 url参数嵌入视频。但是即使执行此操作,如果我尝试在playVideo之后取消播放器的静音(使用ytPlayer.unMute()),视频也会再次停止。

有关此Chrome 72更新有哪些更改的任何想法?这是YouTube / Chrome错误还是预期的行为?

谢谢!

2 个答案:

答案 0 :(得分:1)

“ player.play()”不适用于最新版本的chrome,我们可以通过在您的父iframe中添加allow =“ autoplay”属性来解决该问题

要了解根本原因,您可以检查:“正在发生什么变化?” @ https://developers.google.com/web/updates/2019/01/user-activation

答案 1 :(得分:0)

您描述了Chrome的新行为。

您现在必须手动单击iframe才能开始播放或取消静音。

要使用“自动播放”,还必须使用“静音”。确保不要禁用“控件”,因为用户必须单击扬声器符号以启用声音。