我不确定应该在哪里称呼“获取缩略图”。 现在我在里面叫它:
var done = false;
function onPlayerStateChange(event) {
if (event.data == YT.PlayerState.PLAYING) {
timestamp_callback();
}
switch(event.data) {
case YT.PlayerState.PLAYING:
// get video title
// get video date
// get video thumbnail
“正在播放”部分,因为我也解析了视频标题和其中的其他信息并且可以正常工作,所以在更改视频时它也会更改,但是缩略图仅会更改某些视频。
无论如何,这是我在上面的 onPlayerStateChange(event)中使用的功能:
// get video thumbnail
$.get("https://www.googleapis.com/youtube/v3/videos?part=snippet&id=" + curvideID + "&key=" + ytApiKey, function(data) {
var snip = data.items[0].snippet.thumbnails;
quality = snip.maxres.url;
if (quality) {
bgThumb.src = quality;
bgThumb.style.setProperty("display", "block");
}else{
quality = snip.standard.url;
if (quality) {
bgThumb.src = quality;
bgThumb.style.setProperty("display", "block");
}else{
quality = snip.high.url;
if (quality) {
bgThumb.src = quality;
bgThumb.style.setProperty("display", "block");
}else{
quality = snip.medium.url;
if (quality) {
bgThumb.src = quality;
bgThumb.style.setProperty("display", "block");
}else{
quality = snip.default.url;
if (quality) {
bgThumb.src = quality;
bgThumb.style.setProperty("display", "block");
}else{
bgThumb.style.setProperty("display", "none");
}
}
}
}
}
});
请不要介意可疑的序列,我敢肯定有较短的方法可以做到这一点,但这就是我想方设法检查视频播放的最大分辨率的方法(除非这是我的原因)失败)。
更新:我发现该函数的调用在正确的位置,if链存在问题,实际上,如果视频没有,则仅尝试第一个与该分辨率匹配,“ if链”不会下降,因此根本不显示任何内容。