获取多个嵌入式Youtube视频以按顺序自动播放

cli*_*ray 7 html youtube video youtube-api

是否有任何简单的方法可以在页面上放置多个嵌入的YouTube视频,并在页面打开后立即开始播放,第一个完成后第二个开始播放?

我希望这样的东西能起作用:

<object width="425" height="350"><param name="movie" value="http://www.youtube.com/v/OdT9z-JjtJk&autoplay=1"></param><embed src="http://www.youtube.com/v/OdT9z-JjtJk&autoplay=1" type="application/x-shockwave-flash" width="425" height="350"></embed></object>
<br>
<object width="425" height="350"><param name="movie" value="http://www.youtube.com/v/NlXTv5Ondgs&autoplay=2"></param><embed src="http://www.youtube.com/v/NlXTv5Ondgs&autoplay=2" type="application/x-shockwave-flash" width="425" height="350"></embed></object>
Run Code Online (Sandbox Code Playgroud)

它适用于第一个而不是第二个.我想我可能需要深入了解API.有人有什么建议吗?

Aar*_*ray 13

使用Youtube IFrame API,您可以轻松完成此操作.

您需要在此处配置的唯一部分是youtube ID数组.您可以在URL中的/ v /之后从部件中检索这些部分(如果需要,您可以修改javascript以加载URL而不是ID.我只是更喜欢这种方式.

<div id="player"></div>
<script src="//www.youtube.com/iframe_api"></script>

<script>
    /**
     * Put your video IDs in this array
     */
    var videoIDs = [
        'OdT9z-JjtJk',
        'NlXTv5Ondgs'
    ];

    var player, currentVideoId = 0;

    function onYouTubeIframeAPIReady() {
        player = new YT.Player('player', {
            height: '350',
            width: '425',
            events: {
                'onReady': onPlayerReady,
                'onStateChange': onPlayerStateChange
            }
        });
    }

    function onPlayerReady(event) {
        event.target.loadVideoById(videoIDs[currentVideoId]);
    }

    function onPlayerStateChange(event) {
        if (event.data == YT.PlayerState.ENDED) {
            currentVideoId++;
            if (currentVideoId < videoIDs.length) {
                player.loadVideoById(videoIDs[currentVideoId]);
            }
        }
    }
</script>
Run Code Online (Sandbox Code Playgroud)


Mat*_*ela 5

以下是使用YouTube Iframe播放器API的示例.

有两个独立的嵌入(player1和player2).当player1加载时视频自动播放,并在播放完成时启动播放器2.

如果你想玩它,这是jfiddle.

和代码:

<div id="player1"></div>
<div id="player2"></div>
<script>
    var tag = document.createElement('script');
    tag.src = "//www.youtube.com/iframe_api";
    var firstScriptTag = document.getElementsByTagName('script')[0];
    firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);

    var player1;
    var player2;

    function onYouTubeIframeAPIReady() {
        player1 = new YT.Player('player1', {
            height: '350',
            width: '425',
            videoId: 'OdT9z-JjtJk',
            events: {
                'onReady': onPlayerReady,
                    'onStateChange': onPlayerStateChange
            }
        });
        player2 = new YT.Player('player2', {
            height: '350',
            width: '425',
            videoId: 'NlXTv5Ondgs'
        });
    }

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

    function onPlayerStateChange(event) {
        if (event.data == YT.PlayerState.ENDED) {
            player2.playVideo();
        }
    }
</script>
Run Code Online (Sandbox Code Playgroud)