首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将youtube嵌入式播放器编程为在单击时取消静音

如何将youtube嵌入式播放器编程为在单击时取消静音
EN

Stack Overflow用户
提问于 2013-05-25 06:23:22
回答 3查看 15.3K关注 0票数 5

如何将youtube embedded player设置为单击后取消静音。你可以在http://www.harvestarmy.org主页上看到我提到的嵌入式播放器。右边的那个显示“来自YouTube的最新视频。我将其设置为默认静音,但我想让它在有人点击时自动取消静音。

下面是我使用的代码:

代码语言:javascript
复制
<!-- 1. The <iframe> (and video player) will replace this <div> tag. -->
<div id="player"></div>

<script>
  // 2. This code loads the IFrame Player API code asynchronously.
  var tag = document.createElement('script');

  // This is a protocol-relative URL as described here:
  //     http://paulirish.com/2010/the-protocol-relative-url/
  // If you're testing a local page accessed via a file:/// URL, please set tag.src to
  //     "https://www.youtube.com/iframe_api" instead.
  tag.src = "//www.youtube.com/iframe_api";
  var firstScriptTag = document.getElementsByTagName('script')[0];
  firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);

  // 3. This function creates an <iframe> (and YouTube player)
  //    after the API code downloads.
  var player;
  function onYouTubeIframeAPIReady() {
    player = new YT.Player('player', {
      height: '98',
      width: '175',
      playerVars: {
        'list': 'UUFwY5Al1Doy7f0MdKnJ-gaw',
        'modestbranding': 1,
        'showinfo': 0,
        'autoplay': 1
      },
      events: {
        'onReady': onPlayerReady
      }
    });
  }

  // 4. The API will call this function when the video player is ready.
  function onPlayerReady(event) {
    event.target.mute();
  }

</script>
EN

回答 3

Stack Overflow用户

发布于 2016-04-06 04:48:18

谢谢你的回答!我的实现稍有不同,将其添加到onYouTubeIframeAPIReady函数中。

我还反转了isUnMuted变量的初始化值。它在功能上是相同的,但这样做更有意义。

代码语言:javascript
复制
var player;
var isUnMuted = false;
window.onYouTubeIframeAPIReady = function() {
    player = new YT.Player('youTube', {
        videoId: '[myVideoId]',
        playerVars: {
            'rel': 0,
        },
        events: {
            'onReady': function() {
                player.mute();
                player.playVideo();
            },
            'onStateChange': function () {
                if (player.isMuted() && player.getPlayerState() == 2 && !isUnMuted) {
                    player.unMute();
                    player.playVideo();
                    isUnMuted = true;
                }
            }
        }
    });
}

这非常类似于Facebook新闻提要中嵌入视频的行为。

票数 4
EN

Stack Overflow用户

发布于 2013-05-25 06:46:51

我不认为这是可能的,因为没有‘点击’或‘激活’事件。但是,您可以尝试向"onStateChange“事件添加事件处理程序,并取消静音和取消暂停播放器。我还没有试过,但试一试,看看它是否有效:

代码语言:javascript
复制
var isUnMuted = true;

player.addEventListener("onStateChange", function(event) {
     if( player.isMuted() && player.getPlayerState() == 2 && isUnMuted ) {
          player.unMute();
          player.playVideo(); // resume playback
          isUnMuted = false;  // you want to run this once only! 
     }
});
票数 1
EN

Stack Overflow用户

发布于 2016-05-29 20:30:25

这是可行的。但不幸的是,当视频被点击时,暂停图标会淡入。即使视频继续运行,它也不是一个干净的解决方案。我修复了它,在实际的视频iframe上放置了一个大小完全相同的<div>,并使用它的click()函数取消了视频的静音。

HTML:

代码语言:javascript
复制
  <div class="video-container">
    <div class="video-dummy">
    </div>
    <div id="player">
    </div>
  </div>

CSS:

代码语言:javascript
复制
.video-container {
  position: relative;
  width: 640px;
  height: 390px;
}

.video-dummy {
  width: 640px; 
  height: 390px;
  position: absolute;
}

Javascript:

代码语言:javascript
复制
$('.video-dummy').click(function(){
  player.unMute();
});

这对我来说很好。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16744436

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档