我認爲這與YouTube根據視口大小選擇縮略圖有關。我認爲如果iframe的寬度爲430px或更小,您會發現縮略圖將正確顯示。當它高於此值時,出於某種原因,它只會顯示播放列表的第一個縮略圖。
iframe(width="280" height="158" src="https://www.youtube.com/embed/videoseries?list=PLaQokWZfgbykfIr6NKIcOMxsUC0cltOwE&index=2" frameborder="0" allowfullscreen)
VS
iframe(width="720" height="405" src="https://www.youtube.com/embed/videoseries?list=PLaQokWZfgbykfIr6NKIcOMxsUC0cltOwE&index=2" frameborder="0" allowfullscreen)
同一播放列表。不同的縮略圖。注意280px顯示正確的縮略圖。
如果您僅嵌入視頻並將播放列表附加到該視頻,縮略圖將是正確的。
iframe(width="720" height="405" src="https://www.youtube.com/embed/K-mG66pwQ5M?list=PLaQokWZfgbykfIr6NKIcOMxsUC0cltOwE")
這是我看到的東西you've already discovered。你已經手動製作了陣列,所以我想我會更進一步。
並自動生成播放列表中的視頻數組。然後更改您的iframe src以顯示帶有附加到url的播放列表的視頻。
基於此Retrieve all videos from youtube playlist using youtube v3 API我創建了一個JavaScript的東西,從播放列表中拉出所有videoIds;將它們添加到數組中;然後從陣列中選擇一個隨機視頻;並將其放入iframe src中。
這是代碼。你必須在那裏放置你自己的API密鑰。 http://codepen.io/anon/pen/vLoRyL
我是一個總noob在這。因此,我的代碼的任何建設性的批評將不勝感激。希望這可以幫助其他任何人。
$(function() {
// GET A RANDOM VIDEO FROM ALL PLAYLISTS
function randomVideo() {
// VARIABLES
// the playlist
var playlistDon = {url:"PLaQokWZfgbykfIr6NKIcOMxsUC0cltOwE", count:4, name:"Don's Design Lab"};
// get random video from that playlist
var indexRando = Math.floor((Math.random() * playlistDon.count));
// making the array of videos in playlist
var sum = 0;
var videoArray = [];
// CONNECTING TO API
function getVids(PageToken){
$.get(
"https://www.googleapis.com/youtube/v3/playlistItems",{
part : 'snippet',
maxResults : 50,
playlistId : playlistDon.url, // selecting the random playlist
pageToken : PageToken,
key: 'YOUR API KEY'
},
function(data){
myPlan(data);
}
);
}
// GETTING LIST OF VIDEOiDS FROM PLAYLIST
function myPlan(data){
var total = data.pageInfo.totalResults;
var nextPageToken = data.nextPageToken;
// cycle through the data
for(var i=0;i<data.items.length;i++){
// add .items to videoArray
videoArray.push(data.items[i].snippet.resourceId.videoId);
sum++ ;
if(sum === (total)){ // if the current item number equals the total number of items
sum = 0; // reset the count
updateIframe(); // update the iframe
return;
}
}
if(sum < (total)){
getVids(nextPageToken);
}
}
function updateIframe() {
// put that video into the iframe
var videoUrl = "https://www.youtube.com/embed/" + videoArray[indexRando] +"?list=" + playlistDon.url + "&index=" + indexRando + "&showinfo=1";
$('.video.random iframe').attr("src", videoUrl);
}
getVids();
}
$('button').on('click', function() {
randomVideo();
});
});