如何显示 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 嵌入链接的缩略图?
在 UITableViewCell 内显示 youtube 视频缩略图和标题