Youtube JavaScript API-播放任一Youtube视频时暂停音频

Youtube JavaScript API-播放任一Youtube视频时暂停音频,javascript,user-controls,youtube,html5-audio,Javascript,User Controls,Youtube,Html5 Audio,我有一个网站的背景噪音,客户希望在整个网站上循环播放,所以我设置了一个标签,可以自动播放和循环 在几个页面上,我有多个Youtube嵌入式iFrame,它们是使用Youtube视频页面中的嵌入式代码声明的,例如: 他们想要的是,当播放/恢复youtube视频时,音频暂停,当停止/暂停youtube视频时,然后恢复音频 有人知道如何使用Youtube Javascript API实现这一点吗?来自: 事件 状态变化 每当玩家的状态发生变化时,此事件就会触发。API传递给事件侦听器函数的值将指定

我有一个网站的背景噪音,客户希望在整个网站上循环播放,所以我设置了一个
标签,可以自动播放和循环

在几个页面上,我有多个Youtube嵌入式iFrame,它们是使用Youtube视频页面中的嵌入式代码声明的,例如:

他们想要的是,当播放/恢复youtube视频时,音频暂停,当停止/暂停youtube视频时,然后恢复音频

有人知道如何使用Youtube Javascript API实现这一点吗?

来自:

事件

状态变化 每当玩家的状态发生变化时,此事件就会触发。API传递给事件侦听器函数的值将指定 对应于新玩家状态的整数。可能的值为:

    -1 (unstarted)
    0 (ended)
    1 (playing)
    2 (paused)
    3 (buffering)
    5 (video cued).
当播放器首次加载视频时,它将广播一个未开始的(-1)事件。 当视频提示并准备播放时,播放机将播放视频提示(5)事件。 在代码中,可以指定整数值,也可以使用以下选项之一 命名空间变量:

    YT.PlayerState.ENDED
    YT.PlayerState.PLAYING
    YT.PlayerState.PAUSED
    YT.PlayerState.BUFFERING
    YT.PlayerState.CUED
对于播放/暂停视频使用:

播放视频

player.playVideo():Void 播放当前提示/加载的视频。此函数执行后的最终播放器状态为播放(1)

注意:如果播放是通过播放机中的本机播放按钮启动的,则播放仅计入视频的官方视图计数

player.pauseVideo():Void 暂停当前正在播放的视频。此函数执行后的最终播放机状态将暂停(2),除非播放机处于 调用函数时的结束(0)状态,在这种情况下,播放机 国家不会改变


您应该能够使用Youtube Javascript播放器API来实现这一点。您可以在所有嵌入式播放器上收听onStateChange事件,当其中任何一个播放器发出“1”(播放)时,您可以暂停播放。当出现“2”(暂停)或“0”(结束)时,您可以再次恢复

这对我很有用:

<html>
  <head>
    <script language="javascript">
      var player = null;
      var lobbyAudio = null;

      function onYouTubePlayerReady(playerapiid) {
        player = document.getElementById(playerapiid);
        lobbyAudio = document.getElementById('lobby-audio');
        player.addEventListener("onStateChange", "onYouTubePlayerStateChange");
      }

      function onYouTubePlayerStateChange(state) {
        switch (state) {
          case 1:  // playing
            lobbyAudio.pause();
            break;
          case 0:  // ended
          case 2:  // paused
            lobbyAudio.play();
            break;
        }
      }
    </script>
  <body>
    <audio id="lobby-audio" src="lobby-audio.mp3" autoplay="True" controls="True" loop="True"></audio>

    <object width="640" height="360">
      <param name="movie"
      value="https://www.youtube.com/v/t-aOvEweUEw?enablejsapi=1&playerapiid=ytplayer1&version=3"></param>
      <param name="allowFullScreen" value="true"></param>
      <param name="allowScriptAccess" value="always"></param>
      <embed
          id="ytplayer1"
          src="https://www.youtube.com/v/t-aOvEweUEw?enablejsapi=1&playerapiid=ytplayer1&version=3"
          type="application/x-shockwave-flash" allowfullscreen="true"
          allowScriptAccess="always" width="640" height="360">
      </embed>
    </object>
  </body>
</html>

var-player=null;
var lobbyAudio=null;
函数onYouTubePlayerReady(playerapiid){
player=document.getElementById(playerapiid);
lobbyAudio=document.getElementById('lobby-audio');
player.addEventListener(“onStateChange”、“onyouteplayerstatechange”);
}
函数onYouTubePlayerStateChange(状态){
开关(状态){
案例1://游戏
lobbyAudio.pause();
打破
案例0://结束
案例2://暂停
lobbyAudio.play();
打破
}
}

  • API演示页面:
  • 提及以下内容也可能有用:

  • 对于您在此处声明的两个函数,这些函数是否覆盖Youtube Javascript API函数?我在代码中看不到您执行它们的任何地方-因此我假设这些是通过API执行的?我在API引用中找到了我的注释的答案。我通常要花几个小时才能熟悉新的参考指南。。谢谢,呵呵。是的,它们都是从API执行的,就像基于事件的API一样。onYouTubePlayerReady()是一个硬编码名称。onYouTubePlayerStateChange我要求玩家首先调用addEventListener。