使用侧面缩略图嵌入YouTube html5视频播放器 - 按播放列表过滤视频?

时间:2014-10-21 18:49:47

标签: javascript html5 video youtube playlist

我使用以下代码显示html5 youtube播放器,其中包含显示在主视频右侧的其他视频的缩略图:

http://jsfiddle.net/NmvA9/490/

<html>
<head>
<script type='text/javascript' src='http://code.jquery.com/jquery-1.5.2.js'></script>
<script language="JavaScript">
    <!--      
/*
Copyright 2011 : Simone Gianni <simoneg@apache.org>

Released under The Apache License 2.0 
http://www.apache.org/licenses/LICENSE-2.0

*/
(function() {
    function createPlayer(jqe, video, options) {
        var ifr = $('iframe', jqe);
        if (ifr.length === 0) {
            ifr = $('<iframe scrolling="no">');
            ifr.addClass('player');
        }
         var src = 'http://www.youtube.com/embed/' + video.id;

        if (options.playopts) {
            src += '?';
            for (var k in options.playopts) {
                src+= k + '=' + options.playopts[k] + '&';
            }  
            src += '_a=b';
        }
        ifr.attr('src', src);
        jqe.append(ifr);  
    }

    function createCarousel(jqe, videos, options) {
        var car = $('div.carousel', jqe);
        if (car.length === 0) {
            car = $('<div>');
            car.addClass('carousel');
            jqe.append(car);

        }
        $.each(videos, function(i,video) {
            options.thumbnail(car, video, options); 
        });
    }

    function createThumbnail(jqe, video, options) {
        var imgurl = video.thumbnails[0].url;
        var img = $('img[src="' + imgurl + '"]');
        if (img.length !== 0) return;
        img = $('<img>');    
        img.addClass('thumbnail');
        jqe.append(img);
        img.attr('src', imgurl);
        img.attr('title', video.title);
        img.click(function() {
            options.player(options.maindiv, video, $.extend(true,{},options,{playopts:{autoplay:1}}));
        });
    }

    var defoptions = {
        autoplay: false,
        user: null,
        carousel: createCarousel,
        player: createPlayer,
        thumbnail: createThumbnail,
        loaded: function() {},
        playopts: {
            autoplay: 0,
            egm: 1,
            autohide: 1,
            fs: 1,
            showinfo: 0
        }
    };


    $.fn.extend({
        youTubeChannel: function(options) {
            var md = $(this);
            md.addClass('youtube');
            md.addClass('youtube-channel');
            var allopts = $.extend(true, {}, defoptions, options);
            allopts.maindiv = md;
            $.getJSON('http://gdata.youtube.com/feeds/users/' + allopts.user + '/uploads?alt=json-in-script&format=5&callback=?', null, function(data) { 

                var feed = data.feed;
                var videos = [];
                $.each(feed.entry, function(i, entry) {
                    var video = {
                        title: entry.title.$t,
                        id: entry.id.$t.match('[^/]*$'),
                        thumbnails: entry.media$group.media$thumbnail
                    };
                    videos.push(video);
                });
                allopts.allvideos = videos;
                allopts.carousel(md, videos, allopts);
                allopts.player(md, videos[0], allopts);
                allopts.loaded(videos, allopts);
            });
        } 
    });

})();

$(function() {
    $('#player').youTubeChannel({user:'nellrobinsonmusic'});
});   
 // -->
</script>  

<style type="text/css">
<!--
#player {
    width: 853px;
    height: 480px;
    overflow: hidden;
    background: none;
    position: absolute;
    border: none;
}

.youtube .carousel {
    width: 20%;
    height: 100%;
    overflow: auto;
    position: absolute;
    right: 0px;
    z-index: 3;
}

.youtube .thumbnail {
    margin: 2px;
    width: 80%;
    border: 1px solid black;  
}

.youtube iframe.player {
    width: 80%;
    height: 480px;  
    overflow: auto;
    border: 0;
}
-->
</style> 

    </head>
    <body>
         <div id="player">
        </div>      
    </body>
</html>

所有这一切都完全正常,但是,它列出了我的YouTube频道中的所有视频。有没有人知道如何将其限制在特定YouTube播放列表中的视频?

非常感谢任何帮助。谢谢!

0 个答案:

没有答案