edt*_*edt 9 javascript video-thumbnails youtube-javascript-api
缩略图看起来很好,超过一年,但突然变得模糊.页面加载上显示的缩略图看起来是正确的,但只要使用"player.cueVideoById"显示新缩略图,它就会显得非常模糊.
文档中没有提及如何控制缩略图质量(仅提供视频质量设置,例如'setPlaybackQuality'可用).文档:https://developers.google.com/youtube/iframe_api_reference
如何强制使用高质量的缩略图?
Wla*_*ant 13
是的,这个问题很容易重现.我已经创建了一个稍微修改过的文档示例版本,它会加载视频并setPlaybackQuality稍后调用.可以清楚地看到质量下降.事实上,原始缩略图是https://i.ytimg.com/vi/M7lc1UVf-VE/sddefault.jpg,它正在被替换https://i1.ytimg.com/vi/M7lc1UVf-VE/default.jpg.
虽然Flash播放器非常不透明,但对于HTML5播放器,我们可以看一下(相当混淆的)源代码.这段代码特别有趣(为了便于阅读而重新格式化):
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"));
Run Code Online (Sandbox Code Playgroud)
这表明您确实不应该控制缩略图质量,而是根据视口大小进行设置.如果宽度超过900或高度超过600 maxresdefault.jpg,如果宽度超过430或高度超过320,则得到,sddefault.jpg并且在所有剩余的情况下得到default.jpg.这确实如此 - 对于初始负载.这似乎是预期的行为.
然而,这不是你得到的player.cueVideoById()- 它始终存在default.jpg,大概是因为.编辑:实际上,调试代码已经表明这a.j已经设定(无论可能是什么)a.j不是罪魁祸首.相反,当调用除了因为数据结构(特别是map)未完全初始化之外的任何其他Av函数undefined时,函数返回.对我而言,这看起来就像一个bug,似乎已经向Google报告了."default.jpg"b.La
供参考,功能源代码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)
}
Run Code Online (Sandbox Code Playgroud)
Mt(a.videoId, b)将返回正确的URL,但函数返回c意义undefined.
请注意,上述文本仅适用于HTML5播放器.Flash播放器的行为略有不同,同样不一致.
| 归档时间: |
|
| 查看次数: |
3719 次 |
| 最近记录: |