如果我有一个YouTube视频URL,有没有任何方法可以使用PHP和cURL从YouTube API获取相关的缩略图?
当前回答
我使用YouTube缩略图的方式如下:
$url = 'http://img.youtube.com/vi/' . $youtubeId . '/0.jpg';
$img = dirname(__FILE__) . '/youtubeThumbnail_' . $youtubeId . '.jpg';
file_put_contents($img, file_get_contents($url));
请记住,YouTube禁止直接从其服务器中包含图像。
其他回答
以下是针对手动使用而优化的最佳答案。无分隔符的视频ID令牌允许双击进行选择。
每个YouTube视频都有四个生成的图像。可预测的格式如下:
https://img.youtube.com/vi/YOUTUBEVIDEOID/0.jpg
https://img.youtube.com/vi/YOUTUBEVIDEOID/1.jpg
https://img.youtube.com/vi/YOUTUBEVIDEOID/2.jpg
https://img.youtube.com/vi/YOUTUBEVIDEOID/3.jpg
列表中的第一个是全尺寸图像,其他是缩略图图像。默认缩略图图像(即1.jpg、2.jpg、3.jpg之一)为:
https://img.youtube.com/vi/YOUTUBEVIDEOID/default.jpg
对于缩略图的高质量版本,请使用类似于以下内容的URL:
https://img.youtube.com/vi/YOUTUBEVIDEOID/hqdefault.jpg
还有一个中等质量的缩略图版本,使用类似于HQ的URL:
https://img.youtube.com/vi/YOUTUBEVIDEOID/mqdefault.jpg
对于缩略图的标准定义版本,请使用类似于以下内容的URL:
https://img.youtube.com/vi/YOUTUBEVIDEOID/sddefault.jpg
对于缩略图的最大分辨率版本,请使用类似于以下内容的URL:
https://img.youtube.com/vi/YOUTUBEVIDEOID/maxresdefault.jpg
以上所有URL也可以通过HTTP访问。此外,稍短的主机名i3.ytimg.com可以代替上面示例URL中的img.youtube.com。
或者,您可以使用YouTube数据API(v3)获取缩略图图像。
https://i.ytimg.com/vi/<--Video ID-->/default.jpg
图像大小权重120px高度90px
https://i.ytimg.com/vi/<--Video ID-->/mqdefault.jpg
图像大小重量320px高度180px
https://i.ytimg.com/vi/<--Video ID-->/hqdefault.jpg
图像大小重量480px高度360px
https://i.ytimg.com/vi/<--Video ID-->/sddefault.jpg
图像大小重量640px高度480px
https://i.ytimg.com/vi/<--Video ID-->/maxresdefault.jpg
图像大小重量1280px高度720px
这里是我为获取缩略图创建的一个简单函数。它易于理解和使用。
$link是在浏览器中完全复制的YouTube链接,例如,https://www.youtube.com/watch?v=BQ0mxQXmLsk
function get_youtube_thumb($link){
$new = str_replace('https://www.youtube.com/watch?v=', '', $link);
$thumbnail = 'https://img.youtube.com/vi/' . $new . '/0.jpg';
return $thumbnail;
}
您可以获取包含视频缩略图URL的视频条目。链接中有示例代码。或者,如果您想解析XML,这里有一些信息。返回的XML有一个media:tumbnail元素,其中包含缩略图的URL。
每个YouTube视频都有四个生成的图像。可预测的格式如下:
https://img.youtube.com/vi/<insert-youtube-video-id-here>/0.jpg
https://img.youtube.com/vi/<insert-youtube-video-id-here>/1.jpg
https://img.youtube.com/vi/<insert-youtube-video-id-here>/2.jpg
https://img.youtube.com/vi/<insert-youtube-video-id-here>/3.jpg
列表中的第一个是全尺寸图像,其他是缩略图图像。默认缩略图图像(即1.jpg、2.jpg、3.jpg之一)为:
https://img.youtube.com/vi/<insert-youtube-video-id-here>/default.jpg
对于缩略图的高质量版本,请使用类似于以下内容的URL:
https://img.youtube.com/vi/<insert-youtube-video-id-here>/hqdefault.jpg
还有一个中等质量的缩略图版本,使用类似于HQ的URL:
https://img.youtube.com/vi/<insert-youtube-video-id-here>/mqdefault.jpg
对于缩略图的标准定义版本,请使用类似于以下内容的URL:
https://img.youtube.com/vi/<insert-youtube-video-id-here>/sddefault.jpg
对于缩略图的最大分辨率版本,请使用类似于以下内容的URL:
https://img.youtube.com/vi/<insert-youtube-video-id-here>/maxresdefault.jpg
以上所有URL也可以通过HTTP访问。此外,稍短的主机名i3.ytimg.com可以代替上面示例URL中的img.youtube.com。
或者,您可以使用YouTube数据API(v3)获取缩略图图像。
推荐文章
- 移动一个文件到服务器上的另一个文件夹
- Laravel中使用雄辩的ORM进行批量插入
- PHP 5.4调用时引用传递-容易修复可用吗?
- 格式化字节到千字节,兆字节,千兆字节
- 如何在PHP中获得变量名作为字符串?
- 用“+”(数组联合运算符)合并两个数组如何工作?
- Laravel PHP命令未找到
- 如何修复从源代码安装PHP时未发现xml2-config的错误?
- 在PHP中对动态变量名使用大括号
- 如何从对象数组中通过对象属性找到条目?
- 如何从关联数组中删除键及其值?
- PHP字符串中的花括号
- PHP -如何最好地确定当前调用是否来自CLI或web服务器?
- 无法打开流:没有这样的文件或目录
- 在php中生成一个随机密码