2017-03-31 115 views
2

如何運行自動播放視頻並將貓頭鷹傳送帶2的聲音靜音?如何運行自動播放視頻並將聲音靜音?

我的代碼 - https://jsfiddle.net/ufqp8Lku/

$('.owl-carousel').owlCarousel({ 
 
    items: 1, 
 
    merge: true, 
 
    loop: true, 
 
    margin: 10, 
 
    video: true, 
 
    lazyLoad: true, 
 
    center: true, 
 
    responsive: { 
 
    480: { 
 
     items: 1 
 
    }, 
 
    600: { 
 
     items: 1 
 
    } 
 
    } 
 
})
.owl-carousel, 
 
.owl-carousel .item-video { 
 
    height: 300px; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/OwlCarousel2/2.2.1/owl.carousel.min.js"></script> 
 
<link href="https://cdnjs.cloudflare.com/ajax/libs/OwlCarousel2/2.2.1/assets/owl.carousel.min.css" rel="stylesheet" /> 
 
<link href="https://cdnjs.cloudflare.com/ajax/libs/OwlCarousel2/2.2.1/assets/owl.theme.default.min.css" rel="stylesheet" /> 
 

 
<div class="owl-carousel owl-theme"> 
 
    <div class="item-video" data-merge="1"> 
 
    <a class="owl-video" href="https://vimeo.com/23924346"></a> 
 
    </div> 
 
    <div class="item-video" data-merge="1"> 
 
    <a class="owl-video" href="https://www.youtube.com/watch?v=JpxsRwnRwCQ"></a> 
 
    </div> 
 
    <div class="item-video" data-merge="1"> 
 
    <a class="owl-video" href="https://www.youtube.com/watch?v=FBu_jxT1PkA"></a> 
 
    </div> 
 
</div>

謝謝你,我會很樂意幫助!

+0

此傳送帶將您的視頻作爲** iframe **添加到html中。你需要添加**自動播放**和**靜音**歸因於像視頻這樣的人,但它的小技巧。這可能會幫助你https://developers.google.com/youtube/iframe_api_reference#Example_Video_Player_Constructors –

+0

possile dublicate http://stackoverflow.com/questions/22678720/owl-carousel-wont-autoplay –

+0

$('。owl-video- ())。click()這也可以幫助你 –

回答

1

如果你能解決我在jsfiddle中獲得的跨源問題將解決您的問題:

function muteCurrentYoutubeVideo(){ 
    var tempId = 'yt-' + +new Date(); 
    var activeFrame = document.querySelector(".owl-item.active iframe"); 
    activeFrame.setAttribute('id', tempId); 
    var player; 


    player = new YT.Player(tempId, { 
     events: { 
      'onReady': function(){ 
       player.mute(); 
       player.playVideo(); 
       activeFrame.setAttribute('id', ''); 
      } 
     } 
    }); 
} 

function toggleOwlVideos(){ 
    // set required elements here. 
    var currentSlide = document.querySelector(".owl-item.active"); 
    var playBtn = currentSlide.querySelector(".owl-video-play-icon"); 
    var frame = currentSlide.querySelector("iframe"); 
    var loading = Boolean(frame); 

    // if playBtn found and carousel is not loading the vimeo frame 
    if (playBtn && !loading){ 
     playBtn.click(); // toggle play state 
    } 

    if (frame){ // if vimeos frame is ready 
     frame.contentWindow.postMessage('{"method":"setVolume", "value":0}', '*'); // set value to 0 
     muteCurrentYoutubeVideo(); 
    } else { 
     setTimeout(toggleOwlVideos, 300); // try again in 300ms. 
    } 
} 

var owl = $('.owl-carousel').owlCarousel({ /* ... */ }); 

owl.on('changed.owl.carousel', function(event) { 
    // executed whenever owlcarousel changes. 
    // the timeout(0) is required unfortunately because 
    // otherwise this gets executed before the slide has 
    // successfully changed. 
    setTimeout(toggleOwlVideos, 0); 
}) 

而對於體積切換按鈕:

$(".mute-toggle").on("click", function(){ 
     var tempId = 'yt-' + +new Date(); 
     var activeFrame = document.querySelector(".owl-item.active iframe"); 
     activeFrame.setAttribute('id', tempId); 
     var player; 


     player = new YT.Player(tempId, { 
      events: { 
       'onReady': function(){ 
        if (player.isMuted()){ 
         player.unMute(); 
        } else { 
         player.mute(); 
        } 
        activeFrame.setAttribute('id', ''); 
       } 
      } 
     }); 
}); 

這裏是更新的小提琴:https://jsfiddle.net/05t1ryje/

我使用的postMessage與iFrame來溝通。

+0

感謝您的回答,自動啓動工作,但聲音不會消失 – Dmitriy

+0

你可以檢查,如果你不使用jsfiddle會發生什麼,但只是將該代碼添加到您的網頁?在嵌套iframe中運行時可能會出現問題。如果這也不起作用,我們將不得不使用不同的方法來嵌入這些視頻(例如手動 - 不使用owlCarousel自己的視頻實現)。 –

+0

我的測試頁面http://soledar10.com.ua/assets/templates/layout/sliderVideoYoutubeApi/,聲音不會關閉 – Dmitriy

1

調用jQuery的功能發揮()回調afterAction:

afterAction: function(current) { 
     current.find('video').get(0).play(); 
    } 

甚至這樣的:

(function($) { 
    $(document).ready(function() { 
     setTimeout(
      function() { 
       $(".active .owl-video-play-icon").trigger("click"); 
      }, 1000); 
    }); 
    $(document).on('click', '.owl-dot', function() { 
     if ($('.owl-item.active').hasClass('owl-video-playing')) {} else { 
      setTimeout(
       function() { 
        $(".active .owl-video-play-icon").trigger("click"); 
       }, 1000); 
     } 
    }); 
})(jQuery); 

例子:

http://codepen.io/vishpatel93/pen/gmqzQv

+0

謝謝,自動播放視頻的作品,但如何關閉聲音的視頻,以便它在後臺工作? – Dmitriy

+0

要靜音嗎? –

+0

如何刪除視頻的音量,但能夠打開音量? – Dmitriy