原因是因为Making the Most of Maps的分辨率不是至少720p。
看着api for this specific video,你可以看到没有maxresdefault
。
只有720p或更高分辨率的视频才有maxresdefault
。这不在API中更高的视频中列出。所以为了获得最高分辨率,您还应该检查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'/>
您提供最高质量的缩略图最好的办法是使用API,并与最大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";
。
+1,不过,我想指出的是,这可能是必要的点击服务器多次。 –
是的,你说得对。使用API会更有效率。 –
是不是'break'这里是完全没有必要的? – redanimalwar