Vimeo 嵌入加载时自动静音

Vimeo embed auto mute on load

我有一个 vimeo 嵌入式视频,但似乎无法在加载时集成静音。

这是我的视频代码

<div id="vimeo"> </div> 

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
<script src="https://f.vimeocdn.com/js/froogaloop2.min.js"></script>

和使用

的 js
 <script>
// URL of the video 
        var videoUrl = 'http://www.vimeo.com/76979871?api=1?player_Id=vimeoyo';

        var endpoint = 'http://www.vimeo.com/api/oembed.json';
        var callback = 'embedVideo';
        var url = endpoint + '?url=' + encodeURIComponent(videoUrl)+ '&autoplay=true' + '&callback=' + callback + '&width=420';
        function embedVideo(video) {
            document.getElementById('vimeo').innerHTML = unescape(video.html);
        }
        function init() {
            var js = document.createElement('script');
            js.setAttribute('type', 'text/javascript');
            js.setAttribute('src', url);
            document.getElementsByTagName('head').item(0).appendChild(js);
            var player = 'vimeoyo';
            player.api('setVolume', 0);
        }


        window.onload = init;


  </script>

我遇到的问题还在于该视频不是 iframe。

编辑:有一个使用 iframe 静音的答案。这里

Muting an embedded vimeo video

但是使用这个 fiddle 测试过后,它似乎也没有使视频静音。 http://jsfiddle.net/serversides/gfcpjLsy/

由于您是从 vimeo api 动态创建 iframe,因此您应该仅在加载 iframe 后设置音量。因此,在您的 embedVideo 函数中,将 HTML 插入 div 后,您必须获取 div 的第一个 child(它是 iframe),然后向其中添加一个 onload 事件。

iframe加载完成后,必须使用froogaloop的$f函数将iframe封装到其库中,然后才能使用api方法将音量设置为零。

在您的示例中,您试图在 string 中调用 api 方法,但它永远不会起作用。

function embedVideo(video) {
  var div = document.getElementById('vimeo');
  div.innerHTML = unescape(video.html);

  var ifr = div.firstChild;
  ifr.addEventListener('load', function(e) {
    var player = $f(ifr);
    player.api('setVolume', 0);
  });
}

function init() {
  var js = document.createElement('script');
  js.setAttribute('type', 'text/javascript');
  js.setAttribute('src', url);
  document.getElementsByTagName('head').item(0).appendChild(js);
}

我已经创建了一个 plnkr for you,您的示例有效。

**这是我的解决方案:http://jsfiddle.net/jakeoblivion/phytdt9L/5/

(您需要自己的 play/pause mute/unmute 图标)

  //load video muted
  var video = $("#myvideo");
  video.vimeo("play");
  video.vimeo("setVolume", 0);

    //toggle play/pause
  $('#play-pause').click(function() {
    $(this).toggleClass('play');
    if ($(this).hasClass('play')) {
      //pause video
      video.vimeo("pause");
      $(this).css('background', 'url("http://unclebarts.co.uk/wp-content/themes/bungabunga_bootstrap/img/video-controls/play.png") no-repeat');
    } else {
      //unpause video
      video.vimeo("play");
      $(this).css('background', 'url("http://unclebarts.co.uk/wp-content/themes/bungabunga_bootstrap/img/video-controls/pause.png") no-repeat');
    }
  });

  //toggle mute/unmute
  $('#mute-unmute').click(function() {
    $(this).toggleClass('mute');
    if ($(this).hasClass('mute')) {
      //unmute video
  video.vimeo("setVolume", 1);
      $(this).css('background', 'url("http://unclebarts.co.uk/wp-content/themes/bungabunga_bootstrap/img/video-controls/volume.png") no-repeat');

    } else {
      //mute video
  video.vimeo("setVolume", 0);
      $(this).css('background', 'url("http://unclebarts.co.uk/wp-content/themes/bungabunga_bootstrap/img/video-controls/mute.png") no-repeat');
    }
  });

花了很长时间尝试,但似乎没有任何效果。

我只是想用简单的 Play/Pause Mute/Unmute 控件而不是默认控件将 Vimeo 自动播放静音(音量 0)。

(如果你想添加回默认控件但保持静音,删除“?background=1”。默认情况下 background=1 将设置 video.vimeo("setVolume",0)并隐藏控件,所以我还在没有设置 background=1 的情况下添加了加载静音。

另请注意:"You’ll need to be running on a web server instead of opening the file directly in your browser. Flash and JS security restrictions will prevent the API from working when run locally."

http://www.taxidermyart.co.uk