문제

YouTube 비디오 URL이있는 경우 PHP와 CURL을 사용하여 YouTube API에서 관련 썸네일을 얻는 방법이 있습니까?

도움이 되었습니까?

해결책

각 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.jpg, 2.jpg, 3.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에서도 사용할 수 있습니다. 또한 약간 더 짧은 호스트 이름입니다 i3.ytimg.com 대신에 작동합니다 img.youtube.com 위의 예제에서.

또는 사용할 수 있습니다 YouTube Data API (v3) 썸네일 이미지를 얻으려면.

다른 팁

당신이 사용할 수있는 YouTube 데이터 API 비디오 썸네일, 캡션, 설명, 등급, 통계 등을 검색합니다. API 버전 3에는 키가 필요합니다. 키를 얻고 a 비디오 : 목록 요구:

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 요청의 수에 따라 청구 정보를 요청받을 수 있습니다. 그러나 하루에 수백만 요청은 무료입니다.

소스 기사.

Asaph가 말한 것은 옳습니다. 그러나 모든 YouTube 비디오에 9 개의 썸네일이 모두 포함되어있는 것은 아닙니다. 또한 썸네일의 이미지 크기는 비디오에 따라 다릅니다 (아래 숫자는 하나를 기반으로합니다).

존재하도록 보장되는 7 가지 썸네일이 있습니다.

| Thumbnail Name      | Size (px) | URL                                              |
|---------------------|-----------|--------------------------------------------------|
| Player Background   | 480x360   | https://i1.ytimg.com/vi/<VIDEO ID>/0.jpg         |
| Start               | 120x90    | https://i1.ytimg.com/vi/<VIDEO ID>/1.jpg         |
| Middle              | 120x90    | https://i1.ytimg.com/vi/<VIDEO ID>/2.jpg         |
| End                 | 120x90    | https://i1.ytimg.com/vi/<VIDEO ID>/3.jpg         |
| High Quality        | 480x360   | https://i1.ytimg.com/vi/<VIDEO ID>/hqdefault.jpg |
| Medium Quality      | 320x180   | https://i1.ytimg.com/vi/<VIDEO ID>/mqdefault.jpg |
| Normal Quality      | 120x90    | https://i1.ytimg.com/vi/<VIDEO ID>/default.jpg   |

또한 두 개의 다른 썸네일이 존재하거나 존재하지 않을 수도 있습니다. 그들의 존재는 아마도 비디오가 고품질인지에 기초 할 것입니다.

| Thumbnail Name      | Size (px) | URL                                                  |
|---------------------|-----------|------------------------------------------------------|
| Standard Definition | 640x480   | https://i1.ytimg.com/vi/<VIDEO ID>/sddefault.jpg     |
| Maximum Resolution  | 1920x1080 | https://i1.ytimg.com/vi/<VIDEO ID>/maxresdefault.jpg |

JavaScript 및 PHP 스크립트를 찾아 축소판 및 기타 YouTube 정보를 검색 할 수 있습니다.

당신은 또한 사용할 수 있습니다 YouTube 비디오 정보 생성기 URL 또는 비디오 ID를 제출하여 YouTube 비디오에 대한 모든 정보를 얻는 도구.

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의 장점 중 하나는 이러한 URL이 방화벽에 의해 차단되지 않는다는 것입니다.

특정 비디오 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);

"검은 색 막대"를 제거하고 YouTube처럼하는 것처럼 사용하려면 다음을 수행 할 수 있습니다.

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

그리고 당신이 사용할 수 없다면 .webp 파일 확장 : 다음과 같이 할 수 있습니다.

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

또한, 미지급 버전이 필요한 경우 사용하십시오. maxresdefault 대신에 mqdefault.

참고 : 사용하려는 경우 종횡비에 대해 잘 모르겠습니다. maxresdefault.

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

~ 안에 YouTube 데이터 API V3, 당신은 비디오의 썸네일을 얻을 수 있습니다 비디오-> 목록 기능. 에서 Snippet.thumbnails. (키), 기본, 중간 또는 고해상도 썸네일을 선택하고 너비, 높이 및 URL을 얻을 수 있습니다.

당신은 또한 썸네일을 업데이트 할 수도 있습니다 썸네일-> 세트 기능.

예를 들어, 확인할 수 있습니다 YouTube API 샘플 프로젝트. (PHP.)

당신은 얻을 수 있습니다 비디오 항목 비디오의 썸네일에 URL이 포함되어 있습니다. 링크에 예제 코드가 있습니다. 또는 XML을 구문 분석하려면 정보가 있습니다. 여기. 반품 된 XML은 다음과 같습니다 media:thumbnail 썸네일의 URL을 포함하는 요소.

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

YouTube는 Google이 소유하고 있으며 Google은 다양한 화면 크기에 대한 합리적인 수의 이미지를 갖기를 좋아하므로 이미지가 다른 크기로 저장됩니다. 다음은 썸네일이 어떻게 될지에 대한 예입니다.

품질이 낮은 썸네일 :

http://img.youtube.com/vi/<YouTube_Video_ID_HERE>/sddefault.jpg

중간 품질의 썸네일 :

http://img.youtube.com/vi/<YouTube_Video_ID_HERE>/mqdefault.jpg

고품질 썸네일 :

http://img.youtube.com/vi/<YouTube_Video_ID_HERE>/hqdefault.jpg

최대 품질 썸네일 :

http://img.youtube.com/vi/<YouTube_Video_ID_HERE>/maxresdefault.jpg

YouTube API 버전 3 2 분 안에 가동

YouTube를 검색하고 관련 속성을 얻는 것만으로도 :

  1. 도착 공개 API -- 이 링크는 좋은 방향을 제공합니다

  2. 아래 쿼리 문자열을 사용하십시오. 검색 쿼리 ( Q =) URL 문자열에서 스택 오버플로 예를 들어 목적. YouTube는 JSON 회신을 다시 보내드립니다. 그러면 썸네일, 스 니펫, 저자 등을 구문 분석 할 수 있습니다.

    https://www.googleapis.com/youtube/v3/search?part=id%2csnippet&maxresults=50&q=stackoverflow&key=your_api_key_here

사용:

https://www.googleapis.com/youtube/v3/videoCategories?part=snippet,id&maxResults=100&regionCode=us&key=**Your YouTube ID**

위는 링크입니다. 이를 사용하여 비디오의 YouTube 특성을 찾을 수 있습니다. 특성을 찾은 후 선택한 카테고리의 비디오를 얻을 수 있습니다. 그런 다음 사용하는 선택된 비디오 이미지를 찾을 수 있습니다 Asaph의 대답.

위의 접근 방식을 시도하면 YouTube에서 모든 것을 구문 분석 할 수 있습니다. API.

이런 방식으로 YouTube 썸네일을 사용했습니다.

$url = 'http://img.youtube.com/vi/' . $youtubeId . '/0.jpg';
$img = dirname(__FILE__) . '/youtubeThumbnail_'  . $youtubeId . '.jpg';
file_put_contents($img, file_get_contents($url));

YouTube는 서버에서 직접 이미지를 포함하지 않아도됩니다.

이미지 위에 YouTube 재생 버튼을 사용하여 이미지를 만들 수있는이 멋진 도구를 찾았습니다.

주어진 솔루션을 추가/확장하기 위해서는이 문제가 있었기 때문에 실제로 여러 YouTube 비디오 컨텐츠,이 경우 썸네일을 가져올 수 있다는 점에 유의해야합니다. 하나의 HTTP 요청이 있습니다.

이 경우 REST 클라이언트를 사용하여 httpful을 사용하면 다음과 같은 작업을 수행 할 수 있습니다.

<?php
header("Content-type", "application/json");

//download the httpfull.phar file from http://phphttpclient.com
include("httpful.phar");

$youtubeVidIds= array("nL-rk4bgJWU", "__kupr7KQos", "UCSynl4WbLQ", "joPjqEGJGqU", "PBwEBjX3D3Q");


$response = \Httpful\Request::get("https://www.googleapis.com/youtube/v3/videos?key=YourAPIKey4&part=snippet&id=".implode (",",$youtubeVidIds)."")

->send();

print ($response);

?>

또 다른 좋은 대안은 오브 베드 YouTube에서 지원하는 API.

OEMBED URL에 YouTube URL을 추가하면 썸네일 및 임베딩을위한 HTML 코드를 포함한 JSON을 받게됩니다.

예시:

http://www.youtube.com/oembed?format=json&url=http%3A//youtube.com/watch%3Fv%3DDLzxrzFCyOs

당신에게 줄 것입니다 :

{
  thumbnail_url: "https://i.ytimg.com/vi/DLzxrzFCyOs/hqdefault.jpg",
  width: 459,
  author_name: "AllKindsOfStuff",
  version: "1.0",
  author_url: "https://www.youtube.com/channel/UCLNd5EtH77IyN1frExzwPRQ",
  thumbnail_width: 480,
  type: "video",
  provider_url: "https://www.youtube.com/",
  html: "<iframe width="459" height="344" src="https://www.youtube.com/embed/DLzxrzFCyOs?feature=oembed" frameborder="0" allowfullscreen></iframe>",
  title: "Some title bla bla foo bar",
  thumbnail_height: 360,
  provider_name: "YouTube",
  height: 344
}

자세한 내용은 문서를 읽으십시오 정보.

YouTube 썸네일을 위해 만든 간단한 PHP 기능과 유형은 다음과 같습니다.

  • 기본
  • hqdefault
  • mqdefault
  • sddefault
  • Maxresdefault

 

function get_youtube_thumb($link,$type){

    $video_id = explode("?v=", $link);

    if (empty($video_id[1])){
        $video_id = explode("/v/", $link);
        $video_id = explode("&", $video_id[1]);
        $video_id = $video_id[0];
    }
    $thumb_link = "";

    if($type == 'default'   || $type == 'hqdefault' ||
       $type == 'mqdefault' || $type == 'sddefault' ||
       $type == 'maxresdefault'){

        $thumb_link = 'http://img.youtube.com/vi/'.$video_id.'/'.$type.'.jpg';

    }elseif($type == "id"){
        $thumb_link = $video_id;
    }
    return $thumb_link;}

공개 API를 사용하는 경우 가장 좋은 방법은 사용하는 것입니다. if 진술.

비디오가 공개되거나 무제한이면 URL 메소드를 사용하여 축소판을 설정합니다. 비디오가 비공개 인 경우 API를 사용하여 축소판을 얻습니다.

<?php
    if($video_status == 'unlisted'){
        $video_thumbnail = 'http://img.youtube.com/vi/'.$video_url.'/mqdefault.jpg';
        $video_status = '<i class="fa fa-lock"></i>&nbsp;Unlisted';
    }
    elseif($video_status == 'public'){
        $video_thumbnail = 'http://img.youtube.com/vi/'.$video_url.'/mqdefault.jpg';
        $video_status = '<i class="fa fa-eye"></i>&nbsp;Public';
    }
    elseif($video_status == 'private'){
        $video_thumbnail = $playlistItem['snippet']['thumbnails']['maxres']['url'];
        $video_status = '<i class="fa fa-lock"></i>&nbsp;Private';
    }

YouTube 데이터 API

YouTube는 예를 들어 Data API (v3)를 통해 모든 비디오에 대해 생성 된 4 가지 이미지를 제공합니다.

  1. https://i.ytimg.com/vi/v_zwalcr8du/maxresdefault.jpg

  2. https://i.ytimg.com/vi/v_zwalcr8du/sddefault.jpg

  3. https://i.ytimg.com/vi/v_zwalcr8du/hqdefault.jpg

  4. https://i.ytimg.com/vi/v_zwalcr8du/mqdefault.jpg

API를 통해 이미지에 액세스하는 것

  1. 먼저 공개 API 키를 얻으십시오 Google API 콘솔.
  2. YouTube의 썸네일 참조에 따라 API 문서, 스 니펫의 리소스에 액세스해야합니다.
  3. 이에 따라 URL을 다음과 같이 표현해야합니다.

    www.googleapis.com/youtube/v3/videos?part=snippet&id=`yourVideoId`&key=`yourApiKey`
    

이제 비디오 ID와 API 키를 각 비디오 ID 및 API-Key로 변경하면 그 응답이 JSON 출력으로 스 니펫 변수의 축소판에서 4 개의 링크를 제공합니다 (모두 사용 가능한 경우).

YouTube 비디오 URL에서 비디오 ID를 얻을 수 있습니다. parse_url ,parse_str 그런 다음 이미지의 예측 URL에 삽입하십시오. 예측 URL에 대한 YouTube에 감사드립니다

$videoUrl = "https://www.youtube.com/watch?v=8zy7wGbQgfw";
parse_str( parse_url( $videoUrl, PHP_URL_QUERY ), $my_array_of_vars );
$ytID = $my_array_of_vars['v']; //gets video ID

print "https://img.youtube.com/vi/<?php print $ytID?>/maxresdefault.jpg";
print "https://img.youtube.com/vi/<?php print $ytID?>/mqdefault.jpg";
print "https://img.youtube.com/vi/<?php print $ytID?>/hqdefault.jpg";
print "https://img.youtube.com/vi/<?php print $ytID?>/sddefault.jpg";
print "https://img.youtube.com/vi/<?php print $ytID?>/default.jpg";

이 도구를 사용하여 YouTube 썸네일을 생성 할 수 있습니다

https://tools.tutsplanet.com/index.php/get-youtube-video-thumbnails

나는 그들이 썸네일에 대한 많은 대답이라고 생각하지만 YouTube 썸네일을 매우 쉽게 얻기 위해 다른 URL을 추가하고 싶습니다. 나는 단지 Asaph의 답변에서 텍스트를 받고 있습니다. YouTube 썸네일을 얻을 수있는 몇 가지 URL은 다음과 같습니다.

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

썸네일의 고품질 버전의 경우 다음과 비슷한 URL을 사용하십시오.

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

고품질과 유사한 URL을 사용하는 중간 품질 버전의 축소판이 있습니다.

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

축소판의 표준 정의 버전의 경우 다음과 유사한 URL을 사용하십시오.

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

축소판의 최대 해상도 버전의 경우 다음과 비슷한 URL을 사용하십시오.

https://ytimg.googleusercontent.com/vi/<insert-youtube-video-id-here>/maxresdefault.jpg
    function get_video_thumbnail( $src ) {
            $url_pieces = explode('/', $src);
            if( $url_pieces[2] == 'dai.ly'){
                $id = $url_pieces[3];
                $hash = json_decode(file_get_contents('https://api.dailymotion.com/video/'.$id.'?fields=thumbnail_large_url'), TRUE);
                $thumbnail = $hash['thumbnail_large_url'];
            }else if($url_pieces[2] == 'www.dailymotion.com'){
                $id = $url_pieces[4];
                $hash = json_decode(file_get_contents('https://api.dailymotion.com/video/'.$id.'?fields=thumbnail_large_url'), TRUE);
                $thumbnail = $hash['thumbnail_large_url'];
            }else if ( $url_pieces[2] == 'vimeo.com' ) { // If Vimeo
                $id = $url_pieces[3];
                $hash = unserialize(file_get_contents('http://vimeo.com/api/v2/video/' . $id . '.php'));
                $thumbnail = $hash[0]['thumbnail_large'];
            } elseif ( $url_pieces[2] == 'youtu.be' ) { // If Youtube
                $extract_id = explode('?', $url_pieces[3]);
                $id = $extract_id[0];
                $thumbnail = 'http://img.youtube.com/vi/' . $id . '/mqdefault.jpg';
            }else if ( $url_pieces[2] == 'player.vimeo.com' ) { // If Vimeo
                $id = $url_pieces[4];
                $hash = unserialize(file_get_contents('http://vimeo.com/api/v2/video/' . $id . '.php'));
                $thumbnail = $hash[0]['thumbnail_large'];
            } elseif ( $url_pieces[2] == 'www.youtube.com' ) { // If Youtube
                $extract_id = explode('=', $url_pieces[3]);
                $id = $extract_id[1];
                $thumbnail = 'http://img.youtube.com/vi/' . $id . '/mqdefault.jpg';
            } else{
                $thumbnail = tim_thumb_default_image('video-icon.png', null, 147, 252);
            }
            return $thumbnail;
        }

get_video_thumbnail('https://vimeo.com/154618727');
get_video_thumbnail('https://www.youtube.com/watch?v=SwU0I7_5Cmc');
get_video_thumbnail('https://youtu.be/pbzIfnekjtM');
get_video_thumbnail('http://www.dailymotion.com/video/x5thjyz');

최고 답변 수동 사용에 최적화됩니다. 분리기가없는 비디오 ID 토큰을 사용하면 더블 클릭으로 선택할 수 있습니다.

각 YouTube 비디오에는 4 개의 생성 된 이미지가 있습니다. 그들은 다음과 같이 예측 가능하게 형식화됩니다.

https://img.youtube.com/vi/YOUTUBEVIDEOID/0.jpg
https://img.youtube.com/vi/YOUTUBEVIDEOID/1.jpg
https://img.youtube.com/vi/YOUTUBEVIDEOID/2.jpg
https://img.youtube.com/vi/YOUTUBEVIDEOID/3.jpg

목록의 첫 번째는 전체 크기 이미지이고 다른 것들은 썸네일 이미지입니다. 기본 썸네일 이미지 (예 : 중 하나 1.jpg, 2.jpg, 3.jpg) 이다:

https://img.youtube.com/vi/YOUTUBEVIDEOID/default.jpg

썸네일의 고품질 버전의 경우 다음과 비슷한 URL을 사용하십시오.

https://img.youtube.com/vi/YOUTUBEVIDEOID/hqdefault.jpg

HQ와 유사한 URL을 사용하는 중간 품질 버전의 축소판이 있습니다.

https://img.youtube.com/vi/YOUTUBEVIDEOID/mqdefault.jpg

축소판의 표준 정의 버전의 경우 다음과 유사한 URL을 사용하십시오.

https://img.youtube.com/vi/YOUTUBEVIDEOID/sddefault.jpg

축소판의 최대 해상도 버전의 경우 다음과 비슷한 URL을 사용하십시오.

https://img.youtube.com/vi/YOUTUBEVIDEOID/maxresdefault.jpg

위의 모든 URL은 HTTP에서도 사용할 수 있습니다. 또한 약간 더 짧은 호스트 이름입니다 i3.ytimg.com 대신에 작동합니다 img.youtube.com 위의 예제에서.

또는 사용할 수 있습니다 YouTube Data API (v3) 썸네일 이미지를 얻으려면.

방법 1 :

"Thumbnail_url"이있는 JSON 페이지가 포함 된 YouTube 비디오의 모든 정보를 찾을 수 있습니다.http://www.youtube.com/oembed?format=json&url={비디오 URL이 여기에 있습니다}

최종 URL 룩 + PHP 테스트 코드처럼

$data = file_get_contents("https://www.youtube.com/oembed?format=json&url=https://www.youtube.com/watch?v=_7s-6V_0nwA");
$json = json_decode($data);
var_dump($json);

산출

object(stdClass)[1]
  public 'width' => int 480
  public 'version' => string '1.0' (length=3)
  public 'thumbnail_width' => int 480
  public 'title' => string 'how to reminder in window as display message' (length=44)
  public 'provider_url' => string 'https://www.youtube.com/' (length=24)
  public 'thumbnail_url' => string 'https://i.ytimg.com/vi/_7s-6V_0nwA/hqdefault.jpg' (length=48)
  public 'author_name' => string 'H2 ZONE' (length=7)
  public 'type' => string 'video' (length=5)
  public 'author_url' => string 'https://www.youtube.com/channel/UC9M35YwDs8_PCWXd3qkiNzg' (length=56)
  public 'provider_name' => string 'YouTube' (length=7)
  public 'height' => int 270
  public 'html' => string '<iframe width="480" height="270" src="https://www.youtube.com/embed/_7s-6V_0nwA?feature=oembed" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>' (length=171)
  public 'thumbnail_height' => int 360

자세한 내용은 확인할 수 있습니다 https://www.youtube.com/watch?v=MXDE7Q59BI8 비디오 튜토리얼 1

방법 2 :

YouTube 이미지 링크 사용https://img.youtube.com/vi/"삽입--쿠브-비디오 ID-Here"/default.jpg

방법 3 :

비디오 URL 링크를 사용하여 썸네일을 가져 오기 위해 브라우저 소스 코드를 사용하여 비디오 소스 코드로 이동하고 Thumbnailurl을 검색합니다. 이제이 URL을 소스 코드에 사용할 수 있습니다.

{img src="https://img.youtube.com/vi/"insert-youtube-video-id-here"/default.jpg"}

자세한 내용은 확인할 수 있습니다 ID를 사용하여 YouTube 비디오 썸네일을 얻는 방법또는https://www.youtube.com/watch?v=9f6e8mem6pi비디오 튜토리얼 2

사용 img.youtube.com/vi/YouTubeID/ImageFormat.jpg

여기서 이미지 형식은 Default, Hqdefault, MaxResdefault와 다릅니다.

이것은 내 클라이언트 측 전용 No-Api-Key-required 솔루션입니다.

YouTube.parse('https://www.youtube.com/watch?v=P3DGwyl0mJQ').then(_ => console.log(_))

코드:

import { parseURL, parseQueryString } from './url'
import { getImageSize } from './image'

const PICTURE_SIZE_NAMES = [
    // 1280 x 720.
    // HD aspect ratio.
    'maxresdefault',
    // 629 x 472.
    // non-HD aspect ratio.
    'sddefault',
    // For really old videos not having `maxresdefault`/`sddefault`.
    'hqdefault'
]

// - Supported YouTube URL formats:
//   - http://www.youtube.com/watch?v=My2FRPA3Gf8
//   - http://youtu.be/My2FRPA3Gf8
export default
{
    parse: async function(url)
    {
        // Get video ID.
        let id
        const location = parseURL(url)
        if (location.hostname === 'www.youtube.com') {
            if (location.search) {
                const query = parseQueryString(location.search.slice('/'.length))
                id = query.v
            }
        } else if (location.hostname === 'youtu.be') {
            id = location.pathname.slice('/'.length)
        }

        if (id) {
            return {
                source: {
                    provider: 'YouTube',
                    id
                },
                picture: await this.getPicture(id)
            }
        }
    },

    getPicture: async (id) => {
        for (const sizeName of PICTURE_SIZE_NAMES) {
            try {
                const url = getPictureSizeURL(id, sizeName)
                return {
                    type: 'image/jpeg',
                    sizes: [{
                        url,
                        ...(await getImageSize(url))
                    }]
                }
            } catch (error) {
                console.error(error)
            }
        }
        throw new Error(`No picture found for YouTube video ${id}`)
    },

    getEmbeddedVideoURL(id, options = {}) {
        return `https://www.youtube.com/embed/${id}`
    }
}

const getPictureSizeURL = (id, sizeName) => `https://img.youtube.com/vi/${id}/${sizeName}.jpg`

공익사업 image.js:

// Gets image size.
// Returns a `Promise`.
function getImageSize(url)
{
    return new Promise((resolve, reject) =>
    {
        const image = new Image()
        image.onload = () => resolve({ width: image.width, height: image.height })
        image.onerror = reject
        image.src = url
    })
}

공익사업 url.js:

// Only on client side.
export function parseURL(url)
{
    const link = document.createElement('a')
    link.href = url
    return link
}

export function parseQueryString(queryString)
{
    return queryString.split('&').reduce((query, part) =>
    {
        const [key, value] = part.split('=')
        query[decodeURIComponent(key)] = decodeURIComponent(value)
        return query
    },
    {})
}

다음은 축소판을 얻기 위해 만든 간단한 기능입니다. 이해하고 사용하기 쉽습니다.

$ 링크는 예를 들어 브라우저에서 정확히 복사 된 YouTube 링크입니다. https://www.youtube.com/watch?v=BQ0MXQXMLSK

function get_youtube_thumb($link){
    $new = str_replace('https://www.youtube.com/watch?v=', '', $link);
    $thumbnail = 'https://img.youtube.com/vi/' . $new . '/0.jpg';
    return $thumbnail;
}

이 코드를 빈 .PHP 파일로 저장하고 테스트하십시오.

<img src="<?php echo youtube_img_src('9bZkp7q19f0', 'high');?>" />
<?php
// Get a YOUTUBE video thumb image's source url for IMG tag "src" attribute:
// $ID = YouYube video ID (string)
// $size = string (default, medium, high or standard)
function youtube_img_src ($ID = null, $size = 'default') {
    switch ($size) {
        case 'medium':
            $size = 'mqdefault';
            break;
        case 'high':
            $size = 'hqdefault';
            break;
        case 'standard':
            $size = 'sddefault';
            break;
        default:
            $size = 'default';
            break;
    }
    if ($ID) {
        return sprintf('https://img.youtube.com/vi/%s/%s.jpg', $ID, $size);
    }
    return 'https://img.youtube.com/vi/ERROR/1.jpg';
}

감사.

public const string tubeThumb = "http://i.ytimg.com/vi/[id]/hqdefault.jpg";
vid.Thumbnail = tubeThumb.Replace("[id]", vid.VideoID);
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top