Youtube 获取缩略图

Posted

技术标签:

【中文标题】Youtube 获取缩略图【英文标题】:Youtube Get Thumbnail 【发布时间】:2014-08-05 09:09:48 【问题描述】:

尝试在我的新 Wordpress Youtube 利基主题中做一些事情。我的主题中有一个标签供用户输入 Youtube watch?v=xxxxxxxxxxx id。当他们输入 xxxxxxxxxxx url 时,它会输出视频,通过“循环”查询显示每个标签 16 个帖子。

工作示例here

我研究了这个 Google 开发者控制台 api 的东西...对我来说完全是胡言乱语。我正在为您将在我的网站上看到的 4 个类别使用自定义帖子类型。现在只填充“喜剧”。

新编辑:这有效。感谢所有帮助我解决这个问题的人!

<?php
  $new_query = new WP_Query();
  $new_query->query( array('post_type' => array( 'comedy' ), 'orderby' => 'title', 'order' => 'asc','showposts' => 16, 'paged'=>$paged ));

  while ($new_query->have_posts()) : $new_query->the_post();

  $url = get_post_meta ($post->ID, 'comedy_url', $single = true);

  include(TEMPLATEPATH . '/library/variables.php');

  $code = 'http://www.youtube.com/watch?v=' . $url;
  $json = file_get_contents('http://www.youtube.com/oembed?url='.urlencode($code));
  $video = json_decode($json);
?>

<img src="<?php echo $video->thumbnail_url ?>" />

拉动缩略图时,有些人可能会注意到缩略图顶部和底部的黑色边框。要解决此问题,请使用以下代码:

<a href="<? if($code) ?><?php echo $code; ?><?  ?>">
  <div class="yt-thumbnail" style="background:url('<?php echo $video->thumbnail_url ?>') center no-repeat;"></div>
</a>

// in your css file 
.yt-thumbnail
    height: 164px;
    width: 300px;
    background-size: 300px 220px;

【问题讨论】:

【参考方案1】:

您可以使用 oEmbed API 获取缩略图、上传者名称和标题。您只需要对视频的 URL 进行编码,例如:

http://www.youtube.com/oembed?url=http%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%3D9FOWI6Zftpg

这将返回一个 JSON 响应:


  "provider_name":"YouTube",
  "version":"1.0",
  "author_url":"http:\/\/www.youtube.com\/user\/NScherzingerVEVO",
  "type":"video",
  "author_name":"NScherzingerVEVO",
  "thumbnail_url":"http:\/\/i1.ytimg.com\/vi\/9FOWI6Zftpg\/hqdefault.jpg",
  "provider_url":"http:\/\/www.youtube.com\/",
  "title":"Nicole Scherzinger - Your Love",
  "height":270,
  "width":480,
  "thumbnail_height":360,
  "html":"\u003ciframe width=\"480\" height=\"270\" src=\"http:\/\/www.youtube.com\/embed\/9FOWI6Zftpg?feature=oembed\" frameborder=\"0\" allowfullscreen\u003e\u003c\/iframe\u003e",
  "thumbnail_width":480

获取观看次数有点困难,详情请参阅答案here。

编辑:

这是一个如何在 PHP 中获取缩略图的示例:

<?php
  $url = 'http://www.youtube.com/watch?v=9FOWI6Zftpg';
  $json = file_get_contents('http://www.youtube.com/oembed?url='.urlencode($url));
  $video = json_decode($json);
?>
<img src="<?php echo $video->thumbnail_url ?>" />

【讨论】:

这是我的误解...如何从 ftp 中获取 JSON 文件?我想我可以做到:http://www.youtube.com/oembed?url=http%3A%2F%2Fwww.youtube.com%2Fwatch%3Fv%&lt;? if($url) ?&gt;&lt;?php echo $url; ?&gt;&lt;? ?&gt; 但我将如何拉动缩略图并调用它? 也找到了this...正在调查。 在我的回答中添加了一个例子。 我可以通过将$url = 'http://www.youtube.com/watch?v=9FOWI6Zftpg'; 更改为$code = 'http://www.youtube.com/watch?v=' . $url; 来实现此功能,因此它仍然符合我的自定义字段。谢谢!

以上是关于Youtube 获取缩略图的主要内容,如果未能解决你的问题,请参考以下文章

Youtube 获取缩略图

如何使用 php 获取 youtube 和 vimeo 嵌入代码的视频缩略图?

如何显示 youtube 视频缩略图

如何使用 Youtube javascript API 在特定“秒”获取 youtube 视频的缩略图或快照?

html 从视频ID获取YouTube缩略图

JavaScript 获取YouTube视频ID和缩略图