如何显示YouTube视频缩略图

6

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

我想知道如何获取使用YouTube嵌入代码上传的视频的字幕和缩略图图片的方法?

编辑:

为了使问题更加清晰,我的用户上传像下面给出的代码一样的代码:

<object width="640" height="385"><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" width="640" height="385"></embed></object>

那么从这些代码中,我如何首先找到视频ID,其次是缩略图图片?

6个回答

24
你可以使用以下URL尝试不同类型的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" alt="YouTube Video" />

1
完美的,非常感谢:D - Vipertecpro

12

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

视频网址

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-]+)),它可以处理包含/v/和watch?v的URL。preg_match('/youtube.com/v/([\w-]+)/', $code, $match); echo $match[3]; - retro
1
没问题。但是要学习GData API for youtube。如果你现在能解析视频ID,那么你就可以获取更多信息(标题,...)。 - retro
这些缩略图能否通过https而不是http进行检索? - timmackay

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";

所有内容均可在此处找到:开发者指南


如何从上述代码中提取API的“the0KZLEacs”视频ID - KoolKabin

2

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

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 ...";  

                }
                ?>

1

如果您有视频ID,可以使用本文中描述的链接。

链接格式如下:

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

更新

如果这是你的代码:

<object width="640" height="385"><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" width="640" height="385"></embed></object>

那么这是视频链接:

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

那么这就是视频ID:

-L8DFfSJbqU

所以你的缩略图链接是:

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

1
如何使用PHP提取它?有什么建议吗? - KoolKabin
你可以使用正则表达式,例如这个正则表达式可以帮助你:"http://www.youtube.com/v/(.{11})"。你可以使用这个函数获取它:http://php.net/manual/en/function.preg-match.php。 - Łukasz W.

1

这对了解API非常有用,我也很快会查看它。 - KoolKabin

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接