如何显示 youtube 视频缩略图

Posted

技术标签:

【中文标题】如何显示 youtube 视频缩略图【英文标题】:how to show youtube video thumbnails 【发布时间】:2011-03-25 05:16:49 【问题描述】:

我的网站允许用户上传 youtube 视频代码。我正在尝试通过显示上传视频的缩略图来制作播放列表,并在单击特定缩略图后播放相应的视频。

我想知道使用youtube的嵌入代码上传的视频的标题和缩略图的获取方法?

编辑:

为了让问题更清楚,我的用户上传如下代码:

<object  ><param name="movie" value="http://www.youtube.com/v/-L8DFfSJbqU&hl=en_US&fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/-L8DFfSJbqU&hl=en_US&fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true"  ></embed></object>

那么我如何从这些代码中首先找到视频 ID,然后再找到缩略图?

【问题讨论】:

【参考方案1】:

您可以使用这些网址尝试不同类型的 YouTube 视频缩略图 -

对于默认和正常质量的缩略图:

http://img.youtube.com/vi/<youtube-video-id>/default.jpg

对于高质量 (HQ) 缩略图:

http://img.youtube.com/vi/<youtube-video-id>/hqdefault.jpg

还有一个中等质量的缩略图:

http://img.youtube.com/vi/<youtube-video-id>/mqdefault.jpg

对于最大分辨率缩略图:

http://img.youtube.com/vi/<youtube-video-id>/maxresdefault.jpg

例如。

YouTube link - http://www.youtube.com/watch?v=4EvNxWhskf8
YouTube video id - 4EvNxWhskf8

这样-

<img src="http://img.youtube.com/vi/4EvNxWhskf8/hqdefault.jpg" title="YouTube Video"  />

【讨论】:

完美的感谢:D【参考方案2】:

您可以从视频网址加载的缩略图。

视频网址

http://www.youtube.com/watch?v=Xzf0rvQa4Mc

缩略图网址

http://i1.ytimg.com/vi/Xzf0rvQa4Mc/default.jpg

http://i2.ytimg.com/vi/Xzf0rvQa4Mc/default.jpg

http://i3.ytimg.com/vi/Xzf0rvQa4Mc/default.jpg

http://i4.ytimg.com/vi/Xzf0rvQa4Mc/default.jpg

将图像复制到新视频的所有缩略图 url(可能是服务器)需要一些时间。

如果没有缩略图,则返回带有相机的图像(长度正好是 893 字节)。

示例

http://i4.ytimg.com/vi/Xzf0rvQa4Md/default.jpg

【讨论】:

更好地使用这个正则表达式 (youtube\.com\/(watch\?v=)?(v\/)?([\w\-]+)) 它可以处理两个 url (with /v/ 和 watch?v=) preg_match('/youtube\.com\/v\/([\w\-]+)/', $code, $match);回声 $match[3]; 没问题。但是学习 youtube 的 GData API。如果您现在能够解析视频 ID,则可以获取更多信息(标题,...)。 这些缩略图可以通过https而不是http检索吗?【参考方案3】:

使用 YouTube API:

   /* Some stuff goes before here to initialize API connection */

   /* Then get started: */
   $yt = new Zend_Gdata_YouTube()
   $videoEntry = $yt->getVideoEntry('the0KZLEacs'); //Video-ID
   $videoThumbnails = $videoEntry->getVideoThumbnails()

   echo 'Video: ' . $videoEntry->getVideoTitle() . "\n";
   echo 'Video ID: ' . $videoEntry->getVideoId() . "\n";
   echo 'Updated: ' . $videoEntry->getUpdated() . "\n";
   echo 'Description: ' . $videoEntry->getVideoDescription() . "\n";
   echo 'Category: ' . $videoEntry->getVideoCategory() . "\n";
   echo 'Tags: ' . implode(", ", $videoEntry->getVideoTags()) . "\n";
   echo 'Watch page: ' . $videoEntry->getVideoWatchPageUrl() . "\n";
   echo 'Flash Player Url: ' . $videoEntry->getFlashPlayerUrl() . "\n";
   echo 'Duration: ' . $videoEntry->getVideoDuration() . "\n";
   echo 'View count: ' . $videoEntry->getVideoViewCount() . "\n";
   echo 'Rating: ' . $videoEntry->getVideoRatingInfo() . "\n";
   echo 'Geo Location: ' . $videoEntry->getVideoGeoLocation() . "\n";
   echo 'Recorded on: ' . $videoEntry->getVideoRecorded() . "\n";

都可以在这里找到:Developers Guide

【讨论】:

如何从我上面的代码中提取 api 的“the0KZLEacs”视频 id【参考方案4】:

您可以轻松访问我的网站,我为此创建了一个应用程序,

http://shofnee.com/metal_shofnee/apps/youtube_app/youtube_app.php

这也是我为使这个应用程序使用 php 语言而编写的代码

 <?php
                //getting and validating the embed code
                $cde = $_POST['txt_embd'];
                if(!empty($cde))
                
                $part_one_cde = explode("/",$cde);

                $part_2_cde = explode("?",$part_one_cde[4]);

                $img_1 = "http://img.youtube.com/vi/$part_2_cde[0]/0.jpg";
                $img_2 = "http://img.youtube.com/vi/$part_2_cde[0]/1.jpg";
                $img_3 = "http://img.youtube.com/vi/$part_2_cde[0]/2.jpg";

                echo "Img 1";
                echo "<br />";
                echo "<img src=\"$img_3\" width=\"100\" height=\"100\" />";
                echo"<br /><br />";
                echo "Img 2";
                echo "<br />";
                echo "<img src=\"$img_2\" width=\"150\" height=\"150\" />";
                echo"<br /><br />";
                echo "Img 3";
                echo "<br />";
                echo "<img src=\"$img_1\" width=\"200\" height=\"200\" />";

                
                else
                
                echo "Please put any embed code to get it's pics ...";  

                
                ?>

【讨论】:

【参考方案5】:

YouTube 的 GData API 允许您获取有关提要、用户、视频等的信息。

此链接描述了与缩略图相关的回复部分:

http://code.google.com/apis/youtube/2.0/reference.html#youtube_data_api_tag_media:thumbnail

不要对 URL 进行硬编码,因为 Google 可以随时更改它们。使用 API。

【讨论】:

了解 api 非常有用...很快也会检查出来【参考方案6】:

如果您有视频 ID,则可以使用 this article 中描述的链接

链接格式如下:

http://img.youtube.com/vi/VIDEO_ID/default.jpg

更新

如果这是您拥有的代码:

<object  ><param name="movie" value="http://www.youtube.com/v/-L8DFfSJbqU&hl=en_US&fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/-L8DFfSJbqU&hl=en_US&fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true"  ></embed></object>

那么这是视频链接:

http://www.youtube.com/v/-L8DFfSJbqU&hl=en_US&fs=1

那么这是视频 ID:

-L8DFfSJbqU

所以你的缩略图链接是:

http://img.youtube.com/vi/-L8DFfSJbqU/default.jpg

【讨论】:

如何用php解压?任何建议 您可以使用正则表达式,例如这是一个可以帮助您“youtube.com/v(.11)”的正则表达式。你可以使用这个函数php.net/manual/en/function.preg-match.php

以上是关于如何显示 youtube 视频缩略图的主要内容,如果未能解决你的问题,请参考以下文章

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

如何在 ruby​​ on rails 中显示 vimeo 和 youtube 嵌入链接的缩略图?

获取 YouTube 视频缩略图并将其与 PHP 一起使用

在 UITableViewCell 内显示 youtube 视频缩略图和标题

从youtube嵌入缩略图和视频(php - Wordpress)

YouTube 嵌入视频:设置不同的缩略图