हां, यह समस्या आसानी से पुन: उत्पन्न होती है। मैंने 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
द्वारा प्रतिस्थापित किया जा रहा है।
जबकि फ्लैश प्लेयर बहुत अपारदर्शी है, HTML5 प्लेयर के लिए हम (सुंदर obfuscated) 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
यहां अपराधी नहीं है। इसके बजाय, Av
फ़ंक्शन undefined
लौटाता है जब "default.jpg"
के अलावा कुछ भी कहा जाता है क्योंकि डेटा संरचनाएं (b.La
विशेष रूप से मानचित्र) पूरी तरह से प्रारंभ नहीं होती हैं। मेरे लिए, यह बस एक बग की तरह दिखता है, और ऐसा लगता है कि यह पहले से ही 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 प्लेयर पर लागू होता है। फ्लैश प्लेयर का व्यवहार थोड़ा अलग और समान असंगत है।