如果我有一个youtube视频URL,有没有办法使用php和curl从youtube api获取相关的缩略图?


每个YouTube视频都有4个生成的图像。可以预见,它们的格式如下:

列表中的第一个是全尺寸图像,其他是缩略图。默认缩略图图像(即1.jpg2.jpg3.jpg中的一个)是:

对于高质量的缩略图版本,请使用类似以下内容的URL:

还有一个中等质量的缩略图版本,使用类似于HQ的URL:

对于缩略图的标准定义版本,请使用类似以下内容的URL:

要获得缩略图的最大分辨率版本,请使用类似以下内容的URL:

以上所有URL也可以通过HTTP访问。另外,在上面的示例URL中,稍短的主机名i3.ytimg.com代替img.youtube.com

或者,您可以使用YouTube数据API(v3)获取缩略图图像。


您可以使用YouTube数据API来检索视频缩略图、标题、描述、分级、统计信息等。API版本3需要密钥*。获取密钥并创建视频:列表请求:

示例PHP代码

产量

*不仅您需要一个密钥,还可能根据您计划发出的API请求的数量要求您提供账单信息。然而,每天只有几百万个请求是免费的。

源文章。


亚萨所说的是对的。然而,并非所有YouTube视频都包含全部九个缩略图。此外,缩略图的图像大小取决于视频(下面的数字基于一个)。

有七个缩略图保证存在:

此外,其他两个缩略图可能存在,也可能不存在。他们的存在可能是基于视频是否高质量。

您可以找到JavaScript和PHP脚本来检索缩略图和其他YouTube信息:

  • 如何用PHP获取YouTube视频信息
  • 使用javascript-json&api v2检索YouTube视频详细信息

您还可以使用YouTube视频信息生成器工具通过提交URL或视频ID来获取有关YouTube视频的所有信息。


在YouTube API v3中,我们还可以使用这些URL获取缩略图…它们是根据质量分类的。

为了最大的分辨率……

与第一个答案中的URL相比,这些URL的一个优点是它们不会被防火墙阻塞。


如果您想要从YouTube获取最大的图像作为特定的视频ID,那么URL应该是这样的:

使用API,您可以获取默认的缩略图图像。简单代码应该是这样的:


如果你想摆脱"黑条",像YouTube那样做,你可以使用:

如果您不能使用.webp扩展名,您可以这样做:

另外,如果您需要非标版本,请使用maxresdefault而不是mqdefault

注:如果您打算使用maxresdefault,我不确定长宽比。


我做了一个函数,只从YouTube获取现有的图像


在youtube data api v3中,您可以使用video s->list功能获取视频的缩略图。从snippet.thumbnails.(键)中,您可以选择默认的、中等或高分辨率的缩略图,并获取其宽度、高度和URL。

您还可以使用缩略图->设置功能更新缩略图。

例如,您可以查看YouTube API示例项目。(PHP的)


您可以获取包含视频缩略图的URL的视频条目。链接中有示例代码。或者,如果您想解析XML,这里有一些信息。返回的XML有一个media:thumbnail元素,其中包含缩略图的URL。



YouTube归Google所有,Google喜欢在不同的屏幕大小下拥有合理数量的图像,因此它的图像存储在不同的大小中,下面是一个他喜欢的缩略图的示例

低质量缩略图:

中等质量缩略图:

高质量缩略图:

最大质量缩略图:


YouTube API 3版**2分钟后启动并运行**

如果您只想搜索YouTube并获取相关属性:

  • 获取一个公共API——这个链接提供了很好的方向
  • 2.使用下面的查询字符串。例如,URL字符串中的搜索查询(由q=表示)为stackoverflow。然后YouTube会向您发送一个JSON回复,您可以在其中分析缩略图、代码片段、作者等。


    用途:

    上面是链接。使用它,您可以找到视频的YouTube特性。找到特征后,您可以获得所选类别的视频。之后,您可以使用asaph的答案找到选定的视频图像。

    尝试上述方法,您可以解析YouTube API中的所有内容。


    我使用YouTube缩略图的方式如下:

    记住,YouTube禁止直接从其服务器包含图像


    我发现了这个漂亮的工具,可以让你在图片上放置YouTube播放按钮来创建图片:

    • 安装在服务器上进行脚本编写:https://github.com/halgatewood/youtube-thumbnail-enhancer

    另一个好的选择是使用由YouTube支持的oEmbed API。

    您只需将YouTube的URL添加到oEmbed的URL中,就可以收到一个JSON,其中包括一个缩略图和用于嵌入的HTML代码。

    例子:

    会给你:

    有关详细信息,请阅读文档。


    为了增加/扩展给出的解决方案,我觉得有必要注意到,由于我自己也遇到了这个问题,实际上可以通过一个HTTP请求获取多个YouTube视频内容,在本例中是缩略图:

    在本例中,使用REST客户机httpful,您可以这样做:


    我为youtube缩略图创建的一个简单的php函数,类型是

    • 违约
    • HQ默认值
    • MQ默认值
    • 默认值
    • 最大缺省值

      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
      14
      15
      16
      17
      function get_youtube_thumb($link,$type){

          $video_id = explode("?v=", $link);
              if (empty($video_id[1])){
                 $video_id = explode("/v/", $link);
                 $video_id = explode("&", $video_id[1]);
                 $video_id = $video_id[0];
              }
          $thumb_link ="";
          if($type == 'default' || $type == 'hqdefault' || $type == 'mqdefault' || $type == 'sddefault' || $type == 'maxresdefault'){

              $thumb_link = 'http://img.youtube.com/vi/'.$video_id.'/'.$type.'.jpg';

          }elseif($type =="id"){
              $thumb_link = $video_id;
          }
          return $thumb_link;}

    如果您正在使用公共API,最好的方法是使用if语句。

    如果视频是公开的或未列出的,则使用URL方法设置缩略图。如果视频是私有的,则使用API获取缩略图。


    YouTube数据API

    YouTube通过数据API(v3)为我们提供了每段视频的4个生成图像,用于-

  • https://i.ytimg.com/v i/v_zwalcr8du/maxresdefault.jpg

  • https://i.ytimg.com/v i/v_zwalcr8du/sddefault.jpg

  • 网址:https://i.ytimg.com/v i/v_zwalcr8du/hqdefault.jpg

  • https://i.ytimg.com/v i/v_zwalcr8du/mqdefault.jpg

  • 通过API访问图像

  • 首先在google api控制台上获取公共api密钥。
  • 根据API文档中YouTube的缩略图参考,您需要访问snippet.thumbnail s上的资源。
  • 根据这个,你需要这样表述你的网址-

    www.googleapis.com/youtube/v3/videos?part=snippet&id=yourVideoId&key=yourApiKey

  • 现在,将您的video id和您的rapikey更改为各自的视频ID和API键,它的响应将是一个JSON输出,提供snippet变量缩略图中的4个链接(如果全部可用)。


    您可以使用parse_url、parse_str从youtube视频URL获取视频ID,然后插入到图像的预测URL中。感谢YouTube提供的预测性网址

    您可以使用此工具生成YouTube缩略图

    https://codeatools.com/get-youtube-video-缩略图


    我认为他们对缩略图有很多答案,但我想添加一些其他的网址,以便非常容易地获得YouTube的缩略图。我只是从阿萨夫的回答中提取一些文本。以下是一些获取YouTube缩略图的URL

    对于高质量的缩略图版本,请使用类似以下内容的URL:

    还有一个中等质量的缩略图版本,使用类似于HQ的URL:

    对于缩略图的标准定义版本,请使用类似以下内容的URL:

    要获得缩略图的最大分辨率版本,请使用类似以下内容的URL:

    希望它能在不久的将来帮助别人。



    最适合手动使用的答案。不带分隔符的视频ID令牌可以通过双击进行选择。

    每个YouTube视频都有4个生成的图像。可以预见,它们的格式如下:

    列表中的第一个是全尺寸图像,其他是缩略图。默认缩略图图像(即1.jpg2.jpg3.jpg之一)为:

    对于高质量的缩略图版本,请使用类似以下内容的URL:

    还有一个中等质量的缩略图版本,使用类似于HQ的URL:

    对于缩略图的标准定义版本,请使用类似以下内容的URL:

    要获得缩略图的最大分辨率版本,请使用类似以下内容的URL:

    以上所有URL也可以通过HTTP访问。另外,在上面的示例URL中,稍短的主机名i3.ytimg.com代替img.youtube.com

    或者,您可以使用YouTube数据API(v3)获取缩略图图像。


    方法1:

    你可以通过json页面找到YouTube视频中的所有信息,甚至还有"缩略图"的网址。http://www.youtube.com/oembed?format=json&url=此处显示您的视频url

    像最终的url look+php测试代码

    产量

    有关详细信息,您还可以访问https://www.youtube.com/watch?V= MXDE7Q59BI8视频教程1

    方法2:使用YouTube img链接https://img.youtube.com/vi/"在此处插入youtube视频ID"/默认.jpg

    方法3:使用浏览器源代码通过视频URL链接获取缩略图-转到视频源代码并搜索thumbnailurl现在您可以将此URL用于您的代码:img src="https://img.youtube.com/vi/"在此处插入youtube视频ID"/default.jpg"

    有关详细信息,请参见http://hzonesp.com/php/get-youtube-video-thumbnail-using-id/或https://www.youtube.com/watch?V= 9F6E8MEM6PI视频教程2


    使用这个-img.youtube.com/vi/youtubeid/imageformat.jpg,这里的图像格式不同,如default、hqdefault和maxresdefault。


    这是我为获取缩略图创建的一个简单函数,很容易理解和使用。$link youtube链接是否与浏览器上的链接完全相同,例如https://www.youtube.com/watch?V= BQ0MXQXMLSK


    这是我的客户端唯一不需要API密钥的解决方案。

    代码:

    公用工程image.js

    公用工程url.js



    文件另存为.js