縮略圖看起來很好,但一下子變得模糊不清。 頁面加載時顯示的縮略圖看起來正確,但每次使用'player.cueVideoById'顯示新的縮略圖時,它看起來都非常模糊。如何強制YouTube播放器API嵌入iframe的高質量縮略圖?
在文檔中沒有提及如何控制縮略圖質量(只有視頻質量設置,如'setPlaybackQuality'可用)。該文檔:https://developers.google.com/youtube/iframe_api_reference
如何強制高品質的縮略圖圖像?
縮略圖看起來很好,但一下子變得模糊不清。 頁面加載時顯示的縮略圖看起來正確,但每次使用'player.cueVideoById'顯示新的縮略圖時,它看起來都非常模糊。如何強制YouTube播放器API嵌入iframe的高質量縮略圖?
在文檔中沒有提及如何控制縮略圖質量(只有視頻質量設置,如'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"));
這表明你確實不應該控制縮略圖質量,這是根據視大小而設置。如果寬度超過900或高度超過600,則獲得maxresdefault.jpg
,如果寬度超過430或超過320,則獲得sddefault.jpg
,在所有其他情況下獲得default.jpg
。這確實是這樣工作的 - 對於初始加載。這似乎是預期的行爲。
然而,這不是你得到什麼player.cueVideoById()
- 有它總是default.jpg
,
大概是因爲
。 編輯:實際上,調試代碼表明a.j
設置(不管這可能是)
a.j
不是這裏的罪魁禍首。如果調用"default.jpg"
以外的任何值,則Av
函數將返回undefined
,因爲數據結構(特別是b.La
圖)未完全初始化。對我而言,這看起來像一個bug,看起來它已經是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)
將返回正確的網址,但該函數返回c
,而不是意undefined
。
請注意,上述文本僅適用於HTML5播放器。 Flash播放器的行爲略有不同,同樣不一致。