Muting an embedded vimeo video

前端 未结 12 2209
攒了一身酷
攒了一身酷 2020-12-14 07:42

On a website I am building I have a vimeo video embedded. The client needs to keep the sound on the video obviously for people that find it on vimeo. However for her website

相关标签:
12条回答
  • 2020-12-14 07:54

    You try insert ?muted=1 after link in attribute src

    For example

    <iframe id="vimeo_player" src="https://player.vimeo.com/video/257992348?muted=1">
    
    0 讨论(0)
  • 2020-12-14 07:57

    For non-paying members

    You just need to add the muted parameter. E.g.:

    <iframe src="https://vimeo.com/48400332?autoplay=1&loop=1&muted=1" ></iframe>
    

     

    For paid members

    According to Vimeo, the background parameter is only supported for videos hosted by paid members.

    Source: https://help.vimeo.com/hc/en-us/articles/115004485728-Autoplaying-and-looping-embedded-videos

    0 讨论(0)
  • 2020-12-14 07:59

    I tried the examples in the answers with no luck. After looking into the documentation I noticed there is missing the parameter &player_id=IFRAME_ID. Maybe something changed in the Vimeo API, anyway the following example works for me:

    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
    <script src="https://f.vimeocdn.com/js/froogaloop2.min.js"></script>
    <iframe id="vimeo_player" src="//player.vimeo.com/video/4415083?api=1&player_id=vimeo_player&autoplay=1&loop=1&color=ffffff" width="1920" height="1080" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>
    
    <script>
    $(function() {
        var vimeo_iframe = $('#vimeo_player')[0];
        var player = $f(vimeo_iframe);
    
        player.addEvent('ready', function() {
            player.api('setVolume', 0);
        });
    });
    </script>

    0 讨论(0)
  • 2020-12-14 08:00

    I've found a way to do it. You start the video muted so it autoplays, then on the first timeupdate you set the volume to 1.

    var options = {
        id: 'video_id_here',
        width: 640,
        loop: false,
        muted: true,
        autoplay: true
    };
    
    var player = new Vimeo.Player('vimeo', options);
    
    player.setVolume(0);
    
    player.on('timeupdate', set_autoplay_volume );
    
    function set_autoplay_volume(){
        player.setVolume(1);
        player.off('timeupdate', set_autoplay_volume );
    }
    
    0 讨论(0)
  • 2020-12-14 08:02

    @Gadss answer works great but I found that you need update the iframe src to include the activation of the Vimeo api. Just include api=1 after the vimeo id.

    I've also found that this sometimes doens't work on Safari for some reason.

    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
        <script src="//f.vimeocdn.com/js/froogaloop2.min.js"></script>
        <iframe id="vimeo_player" src="http://player.vimeo.com/video/4415083?api=1&title=0&amp;byline=0&amp;portrait=0&amp;color=d01e2f&amp;autoplay=1" width="500" height="281"  frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe>
        <script>
        var iframe = $('#vimeo_player')[0],
            player = $f(iframe),
            status = $('.status');
    
            player.addEvent('ready', function() {
                player.api('setVolume', 0);
            });
        </script>
    
    0 讨论(0)
  • 2020-12-14 08:04

    **Here is my solution: http://jsfiddle.net/jakeoblivion/phytdt9L/5/

    (You will need your own play/pause mute/unmute icons)

      //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', 'pink');
        } else {
          //unpause video
          video.vimeo("play");
          $(this).css('background', 'blue');
        }
      });
    
      //toggle mute/unmute
      $('#mute-unmute').click(function() {
        $(this).toggleClass('mute');
        if ($(this).hasClass('mute')) {
          //unmute video
      video.vimeo("setVolume", 1);
          $(this).css('background', 'green');
    
        } else {
          //mute video
      video.vimeo("setVolume", 0);
          $(this).css('background', 'red');
        }
      });
    

    Spent ages trying and nothing seemed to work to.

    I just wanted to have a Vimeo autoplay muted (volume 0) with simple Play/Pause Mute/Unmute controls, instead of their default ones. (feel free to use icons instead of the temporary colours I put).

    (if you want to add the default controls back but keep muted, remove "?background=1". By default background=1 will set video.vimeo("setVolume", 0) and hide controls, so I also added the mute on load without the background=1 set).

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

    0 讨论(0)
提交回复
热议问题