YouTube APIからYouTubeビデオのサムネイルを取得するにはどうすればよいですか?

2010年01月15日に質問されました。  ·  閲覧回数 1.7M回  ·  ソース

Ryan picture
2010年01月15日

YouTubeビデオURLを持っている場合、PHPとcURLを使用してYouTube APIから関連するサムネイルを取得する方法はありますか?

回答

Asaph picture
2010年01月15日
4772

各YouTubeビデオには、4つの生成された画像があります。 それらは予想通り次のようにフォーマットされます:

https://img.youtube.com/vi/<insert-youtube-video-id-here>/0.jpg
https://img.youtube.com/vi/<insert-youtube-video-id-here>/1.jpg
https://img.youtube.com/vi/<insert-youtube-video-id-here>/2.jpg
https://img.youtube.com/vi/<insert-youtube-video-id-here>/3.jpg

リストの最初のものはフルサイズの画像で、その他はサムネイル画像です。 デフォルトのサムネイル画像(つまり、 1.jpg2.jpg3.jpg )は次のとおりです。

https://img.youtube.com/vi/<insert-youtube-video-id-here>/default.jpg

高品質バージョンのサムネイルの場合は、次のようなURLを使用します。

https://img.youtube.com/vi/<insert-youtube-video-id-here>/hqdefault.jpg

HQと同様のURLを使用した、中品質バージョンのサムネイルもあります。

https://img.youtube.com/vi/<insert-youtube-video-id-here>/mqdefault.jpg

サムネイルの標準画質バージョンの場合は、次のようなURLを使用します。

https://img.youtube.com/vi/<insert-youtube-video-id-here>/sddefault.jpg

サムネイルの最大解像度バージョンには、次のようなURLを使用します。

https://img.youtube.com/vi/<insert-youtube-video-id-here>/maxresdefault.jpg

上記のURLはすべてHTTP経由でも利用できます。 さらに、上記のURLの例では、わずかに短いホスト名i3.ytimg.comimg.youtube.com代わりに機能します。

または、 YouTube Data API(v3)を使用してサムネイル画像を取得することもできます。

Salman A picture
2010年01月21日
404

YouTube Data APIを使用して、動画のサムネイル、キャプション、説明、評価、統計などを取得できます。 APIバージョン3にはキー*が必要です。 キーを取得し、ビデオを作成します

https://www.googleapis.com/youtube/v3/videos?key=YOUR_API_KEY&part=snippet&id=VIDEO_ID

PHPコードの例

$data = file_get_contents("https://www.googleapis.com/youtube/v3/videos?key=YOUR_API_KEY&part=snippet&id=T0Jqdjbed40");
$json = json_decode($data);
var_dump($json->items[0]->snippet->thumbnails);

出力

object(stdClass)#5 (5) {
  ["default"]=>
  object(stdClass)#6 (3) {
    ["url"]=>
    string(46) "https://i.ytimg.com/vi/T0Jqdjbed40/default.jpg"
    ["width"]=>
    int(120)
    ["height"]=>
    int(90)
  }
  ["medium"]=>
  object(stdClass)#7 (3) {
    ["url"]=>
    string(48) "https://i.ytimg.com/vi/T0Jqdjbed40/mqdefault.jpg"
    ["width"]=>
    int(320)
    ["height"]=>
    int(180)
  }
  ["high"]=>
  object(stdClass)#8 (3) {
    ["url"]=>
    string(48) "https://i.ytimg.com/vi/T0Jqdjbed40/hqdefault.jpg"
    ["width"]=>
    int(480)
    ["height"]=>
    int(360)
  }
  ["standard"]=>
  object(stdClass)#9 (3) {
    ["url"]=>
    string(48) "https://i.ytimg.com/vi/T0Jqdjbed40/sddefault.jpg"
    ["width"]=>
    int(640)
    ["height"]=>
    int(480)
  }
  ["maxres"]=>
  object(stdClass)#10 (3) {
    ["url"]=>
    string(52) "https://i.ytimg.com/vi/T0Jqdjbed40/maxresdefault.jpg"
    ["width"]=>
    int(1280)
    ["height"]=>
    int(720)
  }
}

*キーが必要なだけでなく、実行する予定のAPIリクエストの数によっては、請求情報の入力を求められる場合があります。 ただし、1日あたり数百万件のリクエストは無料です。

ソース記事

AGMG picture
2013年12月12日
279

アサフが言ったことは正しい。 ただし、すべてのYouTube動画に9つのサムネイルすべてが含まれているわけではありません。 また、サムネイルの画像サイズはビデオによって異なります(以下の数値は1つに基づいています)。 存在が保証されているサムネイルがいくつかあります。

Width | Height | URL
------|--------|----
120   | 90     | https://i.ytimg.com/vi/<VIDEO ID>/1.jpg
120   | 90     | https://i.ytimg.com/vi/<VIDEO ID>/2.jpg
120   | 90     | https://i.ytimg.com/vi/<VIDEO ID>/3.jpg
120   | 90     | https://i.ytimg.com/vi/<VIDEO ID>/default.jpg
320   | 180    | https://i.ytimg.com/vi/<VIDEO ID>/mq1.jpg
320   | 180    | https://i.ytimg.com/vi/<VIDEO ID>/mq2.jpg
320   | 180    | https://i.ytimg.com/vi/<VIDEO ID>/mq3.jpg
320   | 180    | https://i.ytimg.com/vi/<VIDEO ID>/mqdefault.jpg
480   | 360    | https://i.ytimg.com/vi/<VIDEO ID>/0.jpg
480   | 360    | https://i.ytimg.com/vi/<VIDEO ID>/hq1.jpg
480   | 360    | https://i.ytimg.com/vi/<VIDEO ID>/hq2.jpg
480   | 360    | https://i.ytimg.com/vi/<VIDEO ID>/hq3.jpg
480   | 360    | https://i.ytimg.com/vi/<VIDEO ID>/hqdefault.jpg

さらに、他のいくつかのサムネイルが存在する場合と存在しない場合があります。 彼らの存在は、おそらくビデオが高品質であるかどうかに基づいています。

Width | Height | URL
------|--------|----
640   | 480    | https://i.ytimg.com/vi/<VIDEO ID>/sd1.jpg
640   | 480    | https://i.ytimg.com/vi/<VIDEO ID>/sd2.jpg
640   | 480    | https://i.ytimg.com/vi/<VIDEO ID>/sd3.jpg
640   | 480    | https://i.ytimg.com/vi/<VIDEO ID>/sddefault.jpg
1280  | 720    | https://i.ytimg.com/vi/<VIDEO ID>/hq720.jpg
1920  | 1080   | https://i.ytimg.com/vi/<VIDEO ID>/maxresdefault.jpg

サムネイルやその他のYouTube情報を取得するためのJavaScriptおよびPHPスクリプトは次の場所にあります。

また、 YouTube Video Information Generatorツールを使用して、URLまたはビデオIDを送信することにより、YouTubeビデオに関するすべての情報を取得することもできます。

Naren picture
2013年08月23日
77

YouTube API V3では、これらのURLを使用してサムネイルを取得することもできます...品質に基づいて分類されています。

https://i1.ytimg.com/vi/<insert-youtube-video-id-here>/default.jpg -   default
https://i1.ytimg.com/vi/<insert-youtube-video-id-here>/mqdefault.jpg - medium 
https://i1.ytimg.com/vi/<insert-youtube-video-id-here>/hqdefault.jpg - high
https://i1.ytimg.com/vi/<insert-youtube-video-id-here>/sddefault.jpg - standard

そして最大の解像度のために。

https://i1.ytimg.com/vi/<insert-youtube-video-id-here>/maxresdefault.jpg

最初の回答のURLに対するこれらのURLの利点の1つは、これらのURLがファイアウォールによってブロックされないことです。

PoorBoy picture
2010年12月22日
55

特定の動画IDに対してYouTubeから最大の画像が必要な場合、URLは次のようになります。

http://i3.ytimg.com/vi/SomeVideoIDHere/0.jpg

APIを使用して、デフォルトのサムネイル画像を取得できます。 単純なコードは次のようになります。

//Grab the default thumbnail image
$attrs = $media->group->thumbnail[1]->attributes();
$thumbnail = $attrs['url'];
$thumbnail = substr($thumbnail, 0, -5);
$thumb1 = $thumbnail."default.jpg";

// Grab the third thumbnail image
$thumb2 = $thumbnail."2.jpg";

// Grab the fourth thumbnail image.
$thumb3 = $thumbnail."3.jpg";

// Using simple cURL to save it your server.
// You can extend the cURL below if you want it as fancy, just like
// the rest of the folks here.

$ch = curl_init ("$thumb1");
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_BINARYTRANSFER,1);
$rawdata = curl_exec($ch);
curl_close($ch);

// Using fwrite to save the above
$fp = fopen("SomeLocationInReferenceToYourScript/AnyNameYouWant.jpg", 'w');

// Write the file
fwrite($fp, $rawdata);

// And then close it.
fclose($fp);
LuTz picture
2015年06月08日
46

「黒いバー」を取り除き、YouTubeと同じように実行したい場合は、次を使用できます。

https://i.ytimg.com/vi_webp/<video id>/mqdefault.webp

また、 .webpファイル拡張子を使用できない場合は、次のように実行できます。

https://i.ytimg.com/vi/<video id>/mqdefault.jpg

また、スケーリングされていないバージョンが必要な場合は、 maxresdefault代わりにmqdefault

注: maxresdefaultを使用する予定がある場合は、アスペクト比がわかりません。

Henrik Albrechtsson picture
2013年12月18日
34

YouTubeから既存の画像のみを取得する機能を作成しました

function youtube_image($id) {
    $resolution = array (
        'maxresdefault',
        'sddefault',
        'mqdefault',
        'hqdefault',
        'default'
    );

    for ($x = 0; $x < sizeof($resolution); $x++) {
        $url = '//img.youtube.com/vi/' . $id . '/' . $resolution[$x] . '.jpg';
        if (get_headers($url)[0] == 'HTTP/1.0 200 OK') {
            break;
        }
    }
    return $url;
}
keyboardP picture
2010年01月15日
33

ビデオのサムネイルへのURLを含むビデオエントリを取得できます。 リンクにサンプルコードがあります。 または、XMLを解析する場合は、ここに情報がありmedia:thumbnail要素が含まれています。

Ibrahim Ulukaya picture
2013年05月29日
32

YouTube Data API v3では、 videos-> list関数を使用してビデオのサムネイルを取得できます。 snippet.thumbnails。(key)から、デフォルト、中解像度、または高解像度のサムネイルを選択し、その幅、高さ、およびURLを取得できます。

サムネイル->設定機能でサムネイルを更新することもできます。

たとえば、 YouTubeAPIサンプルプロジェクトを確認できます。 ( PHPのもの。)

Mahendra Tyagi picture
2013年07月04日
26
// Get image form video URL
$url = $video['video_url'];

$urls = parse_url($url);

//Expect the URL to be http://youtu.be/abcd, where abcd is the video ID
if ($urls['host'] == 'youtu.be') :

    $imgPath = ltrim($urls['path'],'/');

//Expect the URL to be http://www.youtube.com/embed/abcd
elseif (strpos($urls['path'],'embed') == 1) :

    $imgPath = end(explode('/',$urls['path']));

//Expect the URL to be abcd only
elseif (strpos($url,'/') === false):

    $imgPath = $url;

//Expect the URL to be http://www.youtube.com/watch?v=abcd
else :

    parse_str($urls['query']);

    $imgPath = $v;

endif;