gpt4 book ai didi

javascript - 如何强制 YouTube Player API iframe 嵌入的高质量缩略图?

转载 作者:数据小太阳 更新时间:2023-10-29 03:48:33 31 4
gpt4 key购买 nike

缩略图用了一年多还好好的,突然就变模糊了。页面加载时显示的缩略图看起来是正确的,但任何时候使用“player.cueVideoById”显示新缩略图时,它看起来都非常模糊。

文档中没有提及如何控制缩略图质量(只有视频质量设置,例如“setPlaybackQuality”可用)。文档:https://developers.google.com/youtube/iframe_api_reference

我怎样才能强制使用高质量的缩略图?

最佳答案

是的,这个问题很容易重现。我创建了一个 slightly modified version of the documentation example ,它加载视频并在一秒钟后调用 setPlaybackQuality。可以清楚地看到质量下降。事实上,原始缩略图是 https://i.ytimg.com/vi/M7lc1UVf-VE/sddefault.jpg,它正在被替换为 https://i1.ytimg。 com/vi/M7lc1UVf-VE/default.jpg.

虽然 Flash 播放器非常不透明,但对于 HTML5 播放器,我们可以看一下(相当模糊)source code .这段代码特别有趣(为了便于阅读而重新格式化):

var c;
if (!a.j)
{
var d = a.element.clientWidth,
e=a.element.clientHeight;
if (900 < d || 600 < e)
c = Av(b, "maxresdefault.jpg");
!c && (430 < d||320 < e) && (c = Av(b, "sddefault.jpg"))
}
c || (c = Av(b, "default.jpg"));

这表明您确实不应该控制缩略图质量,而是根据视口(viewport)大小进行设置。如果宽度超过 900 或高度超过 600,您将获得 maxresdefault.jpg,如果宽度超过 430 或高度超过 320,您将获得 sddefault.jpg,在所有其他情况下,您将获得 默认.jpg。这确实是这样工作的——对于初始加载。这似乎是预期的行为。

但是,这不是您通过 player.cueVideoById() 获得的结果 - 它始终是 default.jpg 大概是因为 a.j 已设置(无论可能是什么) 编辑:实际上,调试代码表明a.j 不是这里的罪魁祸首。相反,Av 函数在调用 "default.jpg" 以外的任何内容时返回 undefined,因为数据结构 (b.La map )没有完全初始化。对我来说,这看起来就像一个错误,而且它似乎已经是reported to Google了。 .

供引用,函数Av的源代码:

function Av(a,b)
{
if (30 == a.O)
{
// This branch isn't being entered
var c = a.La["default.jpg"];
return c?c:a.videoId?de("//docs.google.com/vt",{id:a.videoId,authuser:a.Wa,authkey:a.Kb}):"//docs.google.com/images/doclist/cleardot.gif"
}
b || (b="hqdefault.jpg");
return (c = a.La[b]) || "sddefault.jpg" == b || "maxresdefault.jpg" == b ?
c :
Mt(a.videoId, b)
}

Mt(a.videoId, b) 会返回正确的 URL,但函数返回 c 而不是 undefined

请注意,以上文字仅适用于 HTML5 播放器。 Flash 播放器的行为略有不同并且同样不一致。

关于javascript - 如何强制 YouTube Player API iframe 嵌入的高质量缩略图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27072718/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com