使用YoutubeAPI重新播放视频

5

我有一个使用YouTubeAPI(iframe)播放的视频。在控件被点击开始播放视频之前,图像代替了视频。 图像被视频替换后,视频开始播放。 当视频结束时,该过程被反转。问题是,我无法使用自定义控件启动视频的第二次重启。这是我的代码...

<script src="https://www.youtube.com/iframe_api"></script>

    <div class="video" id="vid">
        <a class="video-control" href="#"></a>
        <img id="video-front" src="<?= get_field('video_image') ?>" class="img-responsive" alt="">
        <div class="video-container">
            <iframe id="player" type="text/html"
src="http://www.youtube.com/embed/G5M721A0b_Q?enablejsapi=1&amp;rel=0&amp;autoplay=1"
frameborder="0"></iframe>
        </div>
    </div>
<script>
(function($){

//move vid control
vidControlHeight();



$('.video-control').css('left', '-' + wControl + 'px');

$('.video-control').on('click', function(event){
        event.preventDefault();

            $('#video-front').hide();
            $('.video-container').show();

            onYouTubeIframeAPIReady();

})

})(jQuery);

function vidControlHeight(){
var hBox        = $('#vid').height() / 2,
    hControl    = $('.video-control').height() / 2,
    boxPosition = hBox - hControl;
    wControl    = $('.video-control').width() / 2;


$('.video-control').css({'left':'-' + wControl + 'px', 'top': boxPosition + 'px'});
}
var player;
  function onYouTubeIframeAPIReady() {
    player = new YT.Player('player', {
      events: {
        'onReady': onPlayerReady,
        'onStateChange': onPlayerStateChange
      }
    });
  }

   function onPlayerReady(event) {
    event.target.playVideo();
  }

  function onPlayerStateChange(event) {

    if(event.data == YT.PlayerState.ENDED){
        $('#video-front').show();
        $('.video-container').hide();

    }

  }
</script>

如何使视频重复播放第二、第三、第四次?

你有看开发文档吗?https://developers.google.com/youtube/v3/docs/ - putvande
当然可以,但是我不知道如何重新启动。 - jhodgson4
2个回答

10

尽管已经调用了播放功能,但视频没有自动回到开头。我不得不手动设置。

player.seekTo(0);

在onPlayerStateChange()函数中。

function onPlayerStateChange(event) {

    if(event.data == YT.PlayerState.ENDED){

        player.seekTo(0);
        $('#video-front').show();
        $('.video-container').hide();

    }

  }

https://developers.google.com/youtube/js_api_reference#seekTo


0

你可以加一个 loop 参数:

function onYouTubeIframeAPIReady() {
    player = new YT.Player('player', {
        events: {
            'onReady': onPlayerReady,
            'onStateChange': onPlayerStateChange
        },
        loop: 1
    });
}

https://developers.google.com/youtube/player_parameters#loop

或者你可以在你的onPlayerStateChange中检查状态是否为0,这表示视频已经结束,然后调用event.target.playVideo();


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接