使用PHP从Youtube视频URL获取Youtube视频缩略图

4
假设我有一个YouTube视频链接www.youtube.com/watch?v=B4CRkpBGQzU&feature=youtube_gdata&par1=1&par2=2 我想要获取视频缩略图 -> i3.ytimg.com/vi/B4CRkpBGQzU/default.jpg 我只需要一个简单的php脚本,我将输入$url并获取$img 如果可能,我想去除所有其他参数,只保留www.youtube.com/watch?v=B4CRkpBGQzU作为$url
5个回答

20

为了从以下URL中提取标识符:

$url = 'www.youtube.com/watch?v=B4CRkpBGQzU&feature=youtube_gdata&par1=1&par2=2';

你可以先使用parse_url()函数来获取查询字符串:

$queryString = parse_url($url, PHP_URL_QUERY);
var_dump($queryString);

这里会给你:
string 'v=B4CRkpBGQzU&feature=youtube_gdata&par1=1&par2=2' (length=49)

接下来,使用parse_str()函数从查询字符串中提取参数:
parse_str($queryString, $params);
var_dump($params);

这将得到以下数组:
array
  'v' => string 'B4CRkpBGQzU' (length=11)
  'feature' => string 'youtube_gdata' (length=13)
  'par1' => string '1' (length=1)
  'par2' => string '2' (length=1)


现在,只需要使用数组中的v项,并将其注入到缩略图URL中即可:

if (isset($params['v'])) {
    echo "i3.ytimg.com/vi/{$params['v']}/default.jpg";
}

这将提供:

i3.ytimg.com/vi/B4CRkpBGQzU/default.jpg

谢谢,这个完美的解决方案。只有一个问题,我得到的图像太小了。如何获得300*300大小的更大图像。我必须将其嵌入电子邮件中的“本周视频”下。 - Purushottam zende
@Purushottamzende https://dev59.com/uXI95IYBdhLWcg3w-DH0 - Roger

8
<?php
        function getYoutubeImage($e){
        //GET THE URL
        $url = $e;

        $queryString = parse_url($url, PHP_URL_QUERY);

        parse_str($queryString, $params);

        $v = $params['v'];  
        //DISPLAY THE IMAGE
        if(strlen($v)>0){
            echo "<img src='http://i3.ytimg.com/vi/$v/default.jpg' width='150' />";
        }
    }
?>

<?php
    getYoutubeImage("http://www.youtube.com/watch?v=CXWSlho1mMY&feature=plcp");
?>

6

https://img.youtube.com/vi/B4CRkpBGQzU/default.jpg https://img.youtube.com/vi/B4CRkpBGQzU/1.jpg https://img.youtube.com/vi/B4CRkpBGQzU/2.jpg https://img.youtube.com/vi/B4CRkpBGQzU/3.jpg

$url = "http://youtube.com/watch?v=B4CRkpBGQzU";
$url = explode("&", $url);
$vidID = preg_match("|?v=(.*)|", $url);
$thumb_default = file_get_contents("http://img.youtube.com/vi/$vidID/default.jpg");

$thumb1 = file_get_contents("http://img.youtube.com/vi/$vidID/0.jpg");
$thumb2 = file_get_contents("http://img.youtube.com/vi/$vidID/1.jpg");
$thumb3 = file_get_contents("http://img.youtube.com/vi/$vidID/2.jpg");
$thumb4 = file_get_contents("http://img.youtube.com/vi/$vidID/3.jpg");

0

从URL中获取视频ID

$url = "http://www.youtube.com/watch?v=oHg5SJYRHA0&amp;feature=relate";
parse_str( parse_url( $url, PHP_URL_QUERY ) );
echo $vidID;//this is video id

获取图像

$thumb1 = file_get_contents("http://img.youtube.com/vi/$vidID/0.jpg");
$thumb2 = file_get_contents("http://img.youtube.com/vi/$vidID/1.jpg");
$thumb3 = file_get_contents("http://img.youtube.com/vi/$vidID/2.jpg");
$thumb4 = file_get_contents("http://img.youtube.com/vi/$vidID/3.jpg");

0
假设 YouTube 不改变它们的格式:
$thumb = preg_match('/watch\?v=(.*)&feature/',$url, $matches);

这将在 $matches[1]; 中获取“B4CRkpBGQzU”部分。

编辑了一下,忘记包括$matches了。然后只需使用$matches来创建新的URL。 - Mike

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