2013-08-03 4 views
12

लाएं जिनका मैं यूट्यूब उच्चतम थंबनेल "maxresdefault.jpg"यूट्यूब उच्चतम थंबनेल संकल्प

यह एक

http://i.ytimg.com/vi/Cj6ho1-G6tw/maxresdefault.jpg

मैं इस सरल php कोड

<?php 

$youtub_id = "Cj6ho1-G6tw"; 
echo "http://i.ytimg.com/vi/".$youtub_id."/maxresdefault.jpg"; 

?> 
उपयोग कर रहा हूँ की तरह

प्राप्त करना चाहते हैं

उपरोक्त कोड के साथ समस्या यह है कि इस तरह के वीडियो हैं http://youtu.be/VGazSZUYyf4नहीं एचडी

और परिणाम यूट्यूब

के ग्रे छोटे 404 छवि

http://i.ytimg.com/vi/VGazSZUYyf4/maxresdefault.jpg

तो उच्चतम यूट्यूब थंबनेल प्राप्त करने के लिए, इसलिए यदि "maxresdefault" उपलब्ध नहीं अगली बड़ी थंबनेल "hqdefault" मिलता है, अगर नहीं है अगले "mqdefault" आदि ...

मैं gdata youtube उपयोग करने के लिए कोशिश की, लेकिन किसी भी तरह से वीडियो HD या नहीं "maxresdefault" दिखाई नहीं दे रहा हो।

उत्तर

18

कारण यह है कि Making the Most of Maps पर संकल्प कम से कम 720p नहीं है।

api for this specific video पर देखकर, आप देख सकते हैं कि maxresdefault नहीं है।

केवल 720p या उच्चतर रिज़ॉल्यूशन वाले वीडियो maxresdefault हैं। यह उन एपीआई में एपीआई में सूचीबद्ध नहीं है जो उच्च हैं। तो उच्चतम रिज़ॉल्यूशन प्राप्त करने के लिए, आपको यह भी जांचना चाहिए कि maxresdefault भी काम करता है या नहीं।

<media:thumbnail url='http://i1.ytimg.com/vi/VGazSZUYyf4/default.jpg' height='90' width='120' time='00:15:12.500' yt:name='default'/> 
<media:thumbnail url='http://i1.ytimg.com/vi/VGazSZUYyf4/mqdefault.jpg' height='180' width='320' yt:name='mqdefault'/> 
<media:thumbnail url='http://i1.ytimg.com/vi/VGazSZUYyf4/hqdefault.jpg' height='360' width='480' yt:name='hqdefault'/> 
<media:thumbnail url='http://i1.ytimg.com/vi/VGazSZUYyf4/1.jpg' height='90' width='120' time='00:07:36.250' yt:name='start'/> 
<media:thumbnail url='http://i1.ytimg.com/vi/VGazSZUYyf4/2.jpg' height='90' width='120' time='00:15:12.500' yt:name='middle'/> 
<media:thumbnail url='http://i1.ytimg.com/vi/VGazSZUYyf4/3.jpg' height='90' width='120' time='00:22:48.750' yt:name='end'/> 

उच्चतम गुणवत्ता थंबनेल के लिए आपका सबसे अच्छा शर्त एपीआई का उपयोग और सबसे बड़ा yt:name विशेषता के साथ छवि प्राप्त करने के लिए है।

आदेश है: कार्रवाई में इस बात का

default 
mqdefault 
hqdefault 
sddefault 

उदाहरण कोड:

<?php 

$youtub_id = "VGazSZUYyf4"; 

$images = json_decode(file_get_contents("http://gdata.youtube.com/feeds/api/videos/".$youtub_id."?v=2&alt=json"), true); 
$images = $images['entry']['media$group']['media$thumbnail']; 
$image = $images[count($images)-4]['url']; 

$maxurl = "http://i.ytimg.com/vi/".$youtub_id."/maxresdefault.jpg"; 
$max = get_headers($maxurl); 

if (substr($max[0], 9, 3) !== '404') { 
    $image = $maxurl; 
} 

echo '<img src="'.$image.'">'; 

यह $youtub_id = "Cj6ho1-G6tw"; और $youtub_id = "VGazSZUYyf4"; पर दोनों काम करता है।

4

आप getimagesize() का उपयोग कर सकते हैं और जांच सकते हैं कि छवि मौजूद है (file_exists() भी है, लेकिन यह इस मामले में बहुत अच्छी तरह से काम नहीं कर सकता है)।

आप किसी विशेष वीडियो का सबसे बड़ा रिज़ॉल्यूशन स्क्रीनशॉट लाने के लिए इस फ़ंक्शन का उपयोग कर सकते हैं।

कोड:

function fetch_highest_res ($videoid) { 
    $resolutions = array('maxresdefault', 'hqdefault', 'mqdefault');  
    foreach($resolutions as $res) { 
     $imgUrl = "http://i.ytimg.com/vi/$videoid/$res.jpg"; 
     if(@getimagesize(($imgUrl))) 
      return $imgUrl; 
    } 
} 

उपयोग:

echo fetch_highest_res('Cj6ho1-G6tw').'<br>'; 
echo fetch_highest_res('VGazSZUYyf4'); 

आउटपुट:

http://i.ytimg.com/vi/Cj6ho1-G6tw/maxresdefault.jpg 
http://i.ytimg.com/vi/VGazSZUYyf4/hqdefault.jpg 

नोट: यह नहीं वें हो सकता है ई सबसे अच्छा समाधान, और यदि आप एपीआई का उपयोग नहीं करना चाहते हैं तो यह एक काम-आसपास है।

+0

+1, हालांकि, मैं यह इंगित करना चाहता हूं कि यह सर्वर को जितनी बार आवश्यक हो सकता है। –

+0

हाँ, आप सही हैं। एपीआई का उपयोग करना अधिक कुशल होगा। –

+0

क्या 'ब्रेक' यहां पूरी तरह से अनावश्यक नहीं है? – redanimalwar

4

स्थिर यूआरएल स्क्रैपिंग पर निर्भर अन्य सभी उत्तर समर्थित नहीं हैं। वे बदल सकते हैं और आपको हर समय अपना आवेदन बदलना पड़ सकता है।

इसके लिए आपको Data API v3 का उपयोग करना चाहिए। आपको id = videoId और part = snippet के साथ videos->list अनुरोध के साथ जाना चाहिए। प्रतिक्रिया में आप snippet.thumbnails.['high'].url

Upload Thumbnail example भी थंबनेल सूचीबद्ध करेंगे।

संबंधित मुद्दे