javascript - 如何从列表中播放随机视频?

标签 javascript jquery html video youtube

我有一个数组中的视频列表,我希望能够使播放器在当前视频结束后播放列表中的另一视频。我遇到的问题是,它会在结束时重复播放同一视频,而不是选择要播放的新视频。我一直在寻找类似的问题,还没有找到任何使它起作用的方法。任何意见,将不胜感激!

var tag = document.createElement('script');

tag.src = "https://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.
function rotateYT() {
    var videos = [
        'be0T_owA1PU',
        'Kp7eSUU9oy8',
        'Th0V-fxo9CE',
    ];

    var index=Math.floor(Math.random() * videos.length);
    return videos[index];
}

var player;
function onYouTubeIframeAPIReady() {
    var videoID = rotateYT();
    player = new YT.Player('player', {
        height: '300',
        width: '300',
        videoId: videoID,
        events: {
            'onReady': onPlayerReady,
            'onStateChange': onPlayerStateChange
        }
    });
}

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

// 5. This should play another random video
function onPlayerStateChange(event) {        
    if(event.data === 0) {
        event.target.setShuffle(true); 
        event.target.playVideo();
    }
}

我可能把代码写错了,所以这是jsfiddle ive一直在努力的地方

https://jsfiddle.net/bbasham/L20k7x1o/2/

最佳答案

您的问题是您没有告诉YouTube播放器使用视频的播放列表。相反,您一次只能设置一个视频ID,因此shuffle方法将不起作用。您需要更新方法,以便在重新启动之前交换视频ID:

// 5. This should play another random video
function onPlayerStateChange(event) {        
    if(event.data === 0) {
        //event.target.setShuffle(true); //useless unless the player has a playlist
        event.target.loadVideoById( rotateYT() ); 
        event.target.playVideo();
    }
}

这将导致播放器在重新启动播放器之前抓取新视频并将其设置为源。另外,您可以提供播放列表,然后使用随机播放。

Documentation

关于javascript - 如何从列表中播放随机视频?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42865046/

相关文章:

jquery - 当屏幕尺寸改变时如何停止这个 jQuery 运行?

javascript - 使用 Angular 工厂来保存应用程序其余部分访问的值,以最大限度地减少服务器调用

javascript - 想要使用 jquery 单击特定按钮时禁用我的复选框(变灰)

jQuery 插件验证 : onfocusin doesn't works

javascript - 使用jquery在html中搜索文件名

html - Jekyll markdown 不显示像原始和一般样式问题

javascript - 如何设置丰富:calendar Date via JavaScript?

javascript - React 函数没有从功能组件传递到功能组件

javascript - 我可以将菜单项添加到 IOS Webkit 复制/定义弹出菜单吗?

javascript - JQuery 自动完成,并在字段内提供提示