我们的网站包含一些YouTube视频列表,其缩略图与电影本身相关联。我们从YouTube API中获取缩略图网址,并在YouTube服务器上就地链接到这些网址。所以我们的图片标签看起来像:
<img src="http://i.ytimg.com/vi/o6CHqSN7O-o/2.jpg" alt="" width="133" height="78" />
问题在于有时会删除视频 - 缩略图也是如此。我们不知道何时会发生这种情况,而我们的缩略图只会变成破碎的图像。我们怎么办呢?
有许多解决方案:
下载缩略图并将其存储在本地 - 当然,如果删除电影,电影将无法正常工作,但是没关系,它会解释它已被删除,我们可以避免损坏图像。
< / LI>定期检查API以查看图像缩略图是否已更改 - 如果不再存在,请替换我们自己的“已删除影片”缩略图。这对API调用非常重要!
使用JavaScript替换损坏的图像(不太喜欢这个)
我们理想的解决方案是将img src指向YouTube上的某个位置,该位置会在电影关闭时显示友好的“移动移动”图像。但是,这似乎并不存在。
其他人处理过此事吗?谢谢!
答案 0 :(得分:1)
在服务器端从YouTube请求缩略图,将其保存到服务器的缓存中,显示缓存的图像。这样,即使原件被删除,您仍然会在服务器上放置缩略图。每个视频只会请求一次缩略图。 类似PHP的伪代码:
<?php
$filename = $this->get_thumbnail_filename_from_url($url); // any way to map an image URL into a filename - e.g. strip everything except [a-zA-Z0-9] from URL
if (!file_exists($cachedir . '/' . $filename)) {
$filename = $this->get_image_from_web_save_to_cache($url,$cachedir); // makes a HTTP request to the URL, saves the returned image (if any) into cache
}
$filename = basename($filename);
echo "<img src=\"/cache/$filename\">"; // display your cached thumbnail
?>
一个陷阱:如果缩略图发生变化,您的缓存版本将保持不变;但不是YT视频的常见问题。这可以通过使缓存更加智能来解决 - 但您必须开始存储元数据(age,max-age,...)并处理HTTP缓存头。缓存伪代码:
答案 1 :(得分:0)
如果HTTP响应代码为200,请使用PHP来请求文件并仅将缩略图放在那里。如果是404或其他一些错误,请在那里添加其他内容(您决定)。