복붙노트

YouTube API에서 YouTube 동영상 미리보기 이미지를 얻으려면 어떻게해야합니까?

PHP

YouTube API에서 YouTube 동영상 미리보기 이미지를 얻으려면 어떻게해야합니까?

YouTube 동영상 URL이있는 경우 PHP 및 cURL을 사용하여 YouTube API에서 관련 미리보기 이미지를 가져 오는 방법이 있습니까?

해결법

  1. ==============================

    1.

    각 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이 위의 예시 URL에서 img.youtube.com 대신 작동합니다.

    또는 YouTube Data API (v3)를 사용하여 미리보기 이미지를 가져올 수 있습니다.

  2. ==============================

    2.

    YouTube 데이터 API를 사용하여 동영상 미리보기 이미지, 설명, 설명, 평점 및 통계 등을 검색 할 수 있습니다. API 버전 3에는 키 *가 필요합니다. 키를 얻고 videos : list 요청을 만듭니다.

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

    출처 기사.

  3. ==============================

    3.

    아삽이 한 말이 맞습니다. 그러나 모든 YouTube 동영상에 9 개의 미리보기 이미지가 모두있는 것은 아니지만 모든 동영상에 대해 7 개의 미리보기 이미지가 있습니다. 그들은:

    (이미지 크기는 동영상에 따라 다릅니다.)

    또한 다음 두 축소판이 존재할 수도 있고 존재하지 않을 수도 있습니다. HQ 비디오 그들은 존재합니다.

    JavaScript 및 PHP 스크립트를 사용하여 축소판 및 기타를 검색 할 수 있습니다. 의 YouTube 정보

    또한 YouTube 동영상 정보 생성기 도구를 사용하여 동영상을 제출하여 YouTube 동영상 정보 URL 또는 동영상 ID.

  4. ==============================

    4.

    YouTube API V3에서 이러한 URL을 사용하여 미리보기 이미지를 얻을 수도 있습니다.이 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이 방화벽에 의해 차단되지 않는다는 것입니다.

  5. ==============================

    5.

    특정 동영상 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);
    
  6. ==============================

    6.

    "검은 색 막대"를 없애고 YouTube처럼 그것을하고 싶다면 다음을 사용할 수 있습니다 :

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

    그리고 .webp 확장자를 사용할 수 없다면 다음과 같이 할 수 있습니다 :

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

    또한 확장되지 않은 버전이 필요한 경우 mqdefault 대신 maxresdefault를 사용하십시오.

    참고 : maxresdefault를 사용할 계획이라면 가로 세로 비율에 대해 확신 할 수 없습니다.

  7. ==============================

    7.

    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;
    }
    
  8. ==============================

    8.

    YouTube Data API v3에서는 videos-> list 기능을 사용하여 동영상의 미리보기 이미지를 가져올 수 있습니다. snippet.thumbnails. (key)에서 기본, 중간 또는 고해상도 축소판을 선택하고 너비, 높이 및 URL을 가져올 수 있습니다.

    미리보기 이미지를 설정하여 미리보기 이미지를 업데이트 할 수도 있습니다.

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

  9. ==============================

    9.

    동영상 미리보기 이미지의 URL이 포함 된 동영상 항목을 가져올 수 있습니다. 링크에 예제 코드가 있습니다. XML을 파싱하려면 여기에 정보가 있습니다. 반환 된 XML에는 축소판의 URL이 포함 된 media : thumbnail 요소가 있습니다.

  10. ==============================

    10.

    // 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;
    
  11. ==============================

    11.

    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
    
  12. ==============================

    12.

    YOUTUBE API 버전 3 ** 2 분 안에 실행 및 실행 **

    YouTube를 검색하고 관련 속성을 얻고 싶다면 :

    2. 아래 쿼리 문자열을 사용하십시오. url 문자열에서 검색 쿼리 (q =로 표시)는 예를 들어 stackoverflow입니다. 그러면 YouTube에서 JSON 답장을 보내면 미리보기, 스 니펫, 작성자 등으로 구문 분석 할 수 있습니다.

    https://www.googleapis.com/youtube/v3/search?part=id%2Csnippet&maxResults=50&q=stackoverflow&key=YOUR_API_KEY_HERE
    
  13. ==============================

    13.

    용도:

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

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

    위의 방법을 시도해 보면 YouTube API에서 모든 것을 파싱 할 수 있습니다.

  14. ==============================

    14.

    이런 방식으로 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가 서버에서 직접 이미지를 포함하지 못하게한다는 것을 기억하십시오.

  15. ==============================

    15.

    이미지 위에 YouTube 재생 버튼이있는 이미지를 만들 수있는 멋진 도구를 발견했습니다.

  16. ==============================

    16.

    주어진 솔루션을 추가 / 확장하기 만하면,이 문제가 직접 발생했기 때문에 하나의 HTTP 요청으로 여러 개의 YouTube 동영상 콘텐츠 (이 경우 미리보기 이미지)를 실제로 가져올 수 있습니다.

    Rest Client를 사용하면이 경우 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);
    
    ?>
    
  17. ==============================

    17.

    YouTube의 섬네일을 위해 만든 간단한 PHP 함수 및 유형은 다음과 같습니다.

  18. ==============================

    18.

    또 다른 좋은 대안은 YouTube에서 지원하는 oEmbed 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
    }
    

    자세한 내용은 설명서를 참조하십시오.

  19. ==============================

    19.

    공개 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';
    }
    
  20. ==============================

    20.

    YouTube Data API (v3)를 통해 모든 비디오에 대해 4 개의 생성 된 이미지를 제공합니다. For Ex -

    이제 yourVideoId 및 yourApiKey를 각각의 video-id 및 api-key로 변경하면 해당 응답이 JSON 출력이되어 snippet 변수의 축소판에 4 개 링크를 제공합니다 (모두 사용할 수있는 경우).

  21. ==============================

    21.

    나는 그들이 엄지 손톱에 대한 답이 많다고 생각하지만, YouTube 썸네일을 매우 쉽게 얻을 수있는 다른 URL을 추가하고 싶습니다. 나는 아삽의 대답에서 어떤 본문을 가져갈 뿐이다. 다음은 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
    

    HQ와 비슷한 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
    

    가까운 장래에 도움이되기를 바랍니다.

  22. ==============================

    22.

        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');
    
  23. ==============================

    23.

    parse_url, parse_str을 사용하여 YouTube 동영상 URL에서 동영상 ID를 가져온 다음 이미지의 예상 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://codeatools.com/get-youtube-video-thumbnails

  24. ==============================

    24.

    수동 응답에 최적화 된 최상위 응답. 구분 기호가없는 비디오 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이 위의 예시 URL에서 img.youtube.com 대신 작동합니다.

    또는 YouTube Data API (v3)를 사용하여 미리보기 이미지를 가져올 수 있습니다.

  25. ==============================

    25.

    방법 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 img 링크 사용 https://img.youtube.com/vi/"insert-youtube-video-id-here"/default.jpg

    방법 3 : 동영상 URL 링크를 사용하여 미리보기 이미지를 가져 오는 브라우저 소스 코드 사용 비디오 소스 코드로 이동하여 thumbnailurl 검색 이제이 URL을 다음과 같이 사용할 수 있습니다. 당신의 sorce 코드 : {img src = "https://img.youtube.com/vi/"insert-youtube-video-id-here "/default.jpg"}

    자세한 내용은 http://hzonesp.com/php/get-youtube-video-thumbnail-using-id/를 참조하십시오. 또는 https://www.youtube.com/watch?v=9f6E8MeM6PI 비디오 자습서 2

  26. ==============================

    26.

    여기 섬네일을 얻기 위해 만든 간단한 함수입니다. 이해하고 사용하기 쉽습니다. $ link는 브라우저에서와 똑같이 복사 된 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;
    }
    
  27. ==============================

    27.

    이것을 사용하십시오 - img.youtube.com/vi/YouTubeID/ImageFormat.jpg 여기 이미지 형식은 기본값, hqdefault, maxresdefault와 다릅니다.

  28. ==============================

    28.

    public const string tubeThumb = "http://i.ytimg.com/vi/[id]/hqdefault.jpg";
    vid.Thumbnail = tubeThumb.Replace("[id]", vid.VideoID);
    
  29. ==============================

    29.

    파일을 .js로 저장

    var maxVideos = 5;   $ (document) .ready (function () {   $ .get (     "https://www.googleapis.com/youtube/v3/videos", {       부분 : 'snippet, contentDetails',       id : 'your_video_id',       종류 : 'youtube # videoListResponse',       maxResults : maxVideos,       regionCode : 'IN',       키 : 'Your_API_KEY'},       기능 (데이터) {         var 출력;         $ .each (data.items, function (i, item) {           console.log (항목);                 thumb = item.snippet.thumbnails.high.url;           output = '

    ';           $ ( '# thumbnail'). append (출력);         })                }     ); }); .본관{  너비 : 1000px;  여백 : 자동; } #img { 왼쪽으로 뜨다; 디스플레이 : 인라인 블록; 여백 : 5px; }    미리보기 이미지 </ title>   <script src = "// ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"type = "text / javascript"> </ script> </ head> <body> <div class = "main">  <ul id = "thumbnail"> </ ul> </ div> </ body> </ html></p> </li> <li> <div>==============================</div><h2>30.</h2> <p>package com.app.download_video_demo;</p> <pre><code>import java.net.MalformedURLException; import java.net.URL; import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.widget.ImageView; import com.squareup.picasso.Picasso; // get Picasso jar file and put that jar file in libs folder public class Youtube_Video_thumnail extends Activity { ImageView iv_youtube_thumnail,iv_play; String videoId; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); super.setContentView(R.layout.youtube_video_activity); init(); try { videoId=extractYoutubeId("http://www.youtube.com/watch?v=t7UxjpUaL3Y"); Log.e("VideoId is->","" + videoId); String img_url="http://img.youtube.com/vi/"+videoId+"/0.jpg"; // this is link which will give u thumnail image of that video // picasso jar file download image for u and set image in imagview Picasso.with(Youtube_Video_thumnail.this) .load(img_url) .placeholder(R.drawable.ic_launcher) .into(iv_youtube_thumnail); } catch (MalformedURLException e) { e.printStackTrace(); } } public void init() { iv_youtube_thumnail=(ImageView)findViewById(R.id.img_thumnail); iv_play=(ImageView)findViewById(R.id.iv_play_pause); } // extract youtube video id and return that id // ex--> "http://www.youtube.com/watch?v=t7UxjpUaL3Y" // videoid is-->t7UxjpUaL3Y public String extractYoutubeId(String url) throws MalformedURLException { String query = new URL(url).getQuery(); String[] param = query.split("&"); String id = null; for (String row : param) { String[] param1 = row.split("="); if (param1[0].equals("v")) { id = param1[1]; } } return id; } } </code></pre> </li> </ul> <p>from <a href='https://stackoverflow.com/questions/2068344/how-do-i-get-a-youtube-video-thumbnail-from-the-youtube-api' target='_blank' />https://stackoverflow.com/questions/2068344/how-do-i-get-a-youtube-video-thumbnail-from-the-youtube-api</a> by cc-by-sa and MIT lisence</p> </div> <!-- System - START --> <!-- System - END --> <!-- Adfit_PC - START --> <!-- Adfit_PC - END --> <!-- GoogleAdsenseForResponsive - START --> <div class="tt_adsense_bottom" style="margin-top:30px;"> <DIV class='ads_adsense_img' style='margin:40px 0px 40px 0px;'> <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script> <!-- 디스플레이광고만 --> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-8393857339019314" data-ad-slot="7474886381" data-ad-format="auto"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </DIV> </div> <!-- GoogleAdsenseForResponsive - END --> <div class="container_postbtn #post_button_group"> <div class="postbtn_like"><script>window.ReactionButtonType = 'reaction'; window.ReactionApiUrl = '//cnpnote.tistory.com/reaction'; window.ReactionReqBody = { entryId: 150 }</script> <div class="wrap_btn" id="reaction-150"></div> <script src="https://tistory1.daumcdn.net/tistory_admin/userblog/tistory-717c7b1234a0a46519d1483dc3db06322985d92c/static/script/reaction-button-container.min.js"></script><div class="wrap_btn wrap_btn_share"><button type="button" class="btn_post sns_btn btn_share" aria-expanded="false" data-thumbnail-url="https://t1.daumcdn.net/tistory_admin/static/images/openGraph/opengraph.png" data-title="YouTube API에서 YouTube 동영상 미리보기 이미지를 얻으려면 어떻게해야합니까?" data-description="YouTube API에서 YouTube 동영상 미리보기 이미지를 얻으려면 어떻게해야합니까? YouTube 동영상 URL이있는 경우 PHP 및 cURL을 사용하여 YouTube API에서 관련 미리보기 이미지를 가져 오는 방법이 있습니까? 해결법 ==============================1. 각 YouTube 동영상에는 4 개의 생성 된 이미지가 있습니다. 예측 가능한 형식은 다음과 같습니다. https://img.youtube.com/vi//0.jpg https://img.youtube.com/vi//1.jpg https://img.youtube.com/vi//2.jpg https://img.youtube.com/vi//3.jpg 목록의 첫 번째 이미지는 전체 크기 이미지이고 다른 이미지는 .." data-profile-image="https://t1.daumcdn.net/tistory_admin/static/manage/images/r3/default_L.png" data-profile-name="cnpnote" data-pc-url="https://cnpnote.tistory.com/entry/YouTube-API%EC%97%90%EC%84%9C-YouTube-%EB%8F%99%EC%98%81%EC%83%81-%EB%AF%B8%EB%A6%AC%EB%B3%B4%EA%B8%B0-%EC%9D%B4%EB%AF%B8%EC%A7%80%EB%A5%BC-%EC%96%BB%EC%9C%BC%EB%A0%A4%EB%A9%B4-%EC%96%B4%EB%96%BB%EA%B2%8C%ED%95%B4%EC%95%BC%ED%95%A9%EB%8B%88%EA%B9%8C" data-relative-pc-url="/entry/YouTube-API%EC%97%90%EC%84%9C-YouTube-%EB%8F%99%EC%98%81%EC%83%81-%EB%AF%B8%EB%A6%AC%EB%B3%B4%EA%B8%B0-%EC%9D%B4%EB%AF%B8%EC%A7%80%EB%A5%BC-%EC%96%BB%EC%9C%BC%EB%A0%A4%EB%A9%B4-%EC%96%B4%EB%96%BB%EA%B2%8C%ED%95%B4%EC%95%BC%ED%95%A9%EB%8B%88%EA%B9%8C" data-blog-title="복붙노트"><span class="ico_postbtn ico_share">공유하기</span></button> <div class="layer_post" id="tistorySnsLayer"></div> </div><div class="wrap_btn wrap_btn_etc" data-entry-id="150" data-entry-visibility="public" data-category-visibility="public"><button type="button" class="btn_post btn_etc2" aria-expanded="false"><span class="ico_postbtn ico_etc">게시글 관리</span></button> <div class="layer_post" id="tistoryEtcLayer"></div> </div></div> <button type="button" class="btn_menu_toolbar btn_subscription #subscribe" data-blog-id="2840920" data-url="https://cnpnote.tistory.com/entry/YouTube-API%EC%97%90%EC%84%9C-YouTube-%EB%8F%99%EC%98%81%EC%83%81-%EB%AF%B8%EB%A6%AC%EB%B3%B4%EA%B8%B0-%EC%9D%B4%EB%AF%B8%EC%A7%80%EB%A5%BC-%EC%96%BB%EC%9C%BC%EB%A0%A4%EB%A9%B4-%EC%96%B4%EB%96%BB%EA%B2%8C%ED%95%B4%EC%95%BC%ED%95%A9%EB%8B%88%EA%B9%8C" data-device="web_pc"><em class="txt_state">구독하기</em><strong class="txt_tool_id">복붙노트</strong><span class="img_common_tistory ico_check_type1"></span></button> <div data-tistory-react-app="SupportButton"></div> </div> <!-- PostListinCategory - START --> <div class="another_category another_category_color_gray"> <h4>'<a href="/category/PHP">PHP</a>' 카테고리의 다른 글</h4> <table> <tr> <th><a href="/entry/foreach-%EC%97%90-%EC%9E%98%EB%AA%BB%EB%90%9C-%EC%9D%B8%EC%88%98%EA%B0%80-%EC%A0%9C%EA%B3%B5%EB%90%98%EC%97%88%EC%8A%B5%EB%8B%88%EB%8B%A4">foreach ()에 잘못된 인수가 제공되었습니다.</a>  <span>(0)</span></th> <td>2018.09.03</td> </tr> <tr> <th><a href="/entry/PHP-foreach%EB%8A%94-%EC%8B%A4%EC%A0%9C%EB%A1%9C-%EC%96%B4%EB%96%BB%EA%B2%8C-%EC%9E%91%EB%8F%99%ED%95%A9%EB%8B%88%EA%B9%8C">PHP 'foreach'는 실제로 어떻게 작동합니까?</a>  <span>(0)</span></th> <td>2018.09.02</td> </tr> <tr> <th><a href="/entry/PHPexcel%EC%9D%98-%EB%8C%80%EC%95%88">PHP_excel의 대안</a>  <span>(0)</span></th> <td>2018.09.02</td> </tr> <tr> <th><a href="/entry/jQuery-AJAX-%ED%8C%8C%EC%9D%BC-%EC%97%85%EB%A1%9C%EB%93%9C-PHP">jQuery AJAX 파일 업로드 PHP</a>  <span>(0)</span></th> <td>2018.09.02</td> </tr> <tr> <th><a href="/entry/%EB%8B%A4%EC%9D%8C-%ED%8E%98%EC%9D%B4%EC%A7%80%EB%A1%9C-PHP-Pass-%EB%B3%80%EC%88%98-%EC%A0%84%EB%8B%AC">다음 페이지로 PHP Pass 변수 전달</a>  <span>(0)</span></th> <td>2018.09.02</td> </tr> </table> </div> <!-- PostListinCategory - END --> </div> <div class="entry-footer"> <div class="actionTrail"> <a href="#tb" onclick=""></a>, <a href="#rp" onclick=""></a> </div> <div data-tistory-react-app="Namecard"></div> </div> </div> </div><!-- entry close --> </article> </div><!-- container close --> <aside role="complementary" id="sidebar"> <div class="container"> <div class="sidebar-inner"> <div class="module module_plugin"> <!-- Adfit_PC - START --> <ins class="kakao_ad_area" style="display:none;" data-ad-unit = "DAN-ubre63wuo3sm" data-ad-width = "160" data-ad-height = "600"></ins> <script type="text/javascript" src="//t1.daumcdn.net/kas/static/ba.min.js" async></script> <!-- Adfit_PC - END --> </div> <!-- 검색 모듈 --> <div class="widget widget-search col-md-3 col-xs-12"> <h3><i class="icon-magnifier icons"></i> Search</h3> <input type="text" name="search" value="" onkeypress="if (event.keyCode == 13) { try { window.location.href = '/search' + '/' + looseURIEncode(document.getElementsByName('search')[0].value); document.getElementsByName('search')[0].value = ''; return false; } catch (e) {} }"/> <input value="검색" type="button" onclick="try { window.location.href = '/search' + '/' + looseURIEncode(document.getElementsByName('search')[0].value); document.getElementsByName('search')[0].value = ''; return false; } catch (e) {}" class="btn btn-default btn-sm"/> </div> <!-- 카테고리 모듈 --> <div class="widget widget-category col-md-3 col-xs-12"> <h3><i class="icon-direction icons"></i> 카테고리</h3> <ul class="tt_category"><li class=""><a href="/category" class="link_tit"> 분류 전체보기 </a> <ul class="category_list"><li class=""><a href="/category/PHP" class="link_item"> PHP </a></li> <li class=""><a href="/category/%EC%8A%A4%ED%81%AC%EB%9E%98%EC%B9%98%203.0" class="link_item"> 스크래치 3.0 </a></li> <li class=""><a href="/category/PYTHON" class="link_item"> PYTHON </a></li> <li class=""><a href="/category/SPRING" class="link_item"> SPRING </a></li> <li class=""><a href="/category/HADOOP" class="link_item"> HADOOP </a></li> <li class=""><a href="/category/SCALA" class="link_item"> SCALA </a></li> <li class=""><a href="/category/MONGODB" class="link_item"> MONGODB </a></li> <li class=""><a href="/category/REDIS" class="link_item"> REDIS </a></li> <li class=""><a href="/category/RUBY-ON-RAILS" class="link_item"> RUBY-ON-RAILS </a></li> <li class=""><a href="/category/SQL" class="link_item"> SQL </a></li> <li class=""><a href="/category/NODEJS" class="link_item"> NODEJS </a></li> <li class=""><a href="/category/JQUERY" class="link_item"> JQUERY </a></li> <li class=""><a href="/category/ANDROID" class="link_item"> ANDROID </a></li> <li class=""><a href="/category/SWIFT" class="link_item"> SWIFT </a></li> <li class=""><a href="/category/HTML" class="link_item"> HTML </a></li> <li class=""><a href="/category/CSS" class="link_item"> CSS </a></li> <li class=""><a href="/category/REACTJS" class="link_item"> REACTJS </a></li> <li class=""><a href="/category/VUEJS" class="link_item"> VUEJS </a></li> <li class=""><a href="/category/WORDPRESS" class="link_item"> WORDPRESS </a></li> <li class=""><a href="/category/ANGULAR" class="link_item"> ANGULAR </a></li> <li class=""><a href="/category/MICROSERVICE" class="link_item"> MICROSERVICE </a></li> <li class=""><a href="/category/DJANGO" class="link_item"> DJANGO </a></li> <li class=""><a href="/category/FLASK" class="link_item"> FLASK </a></li> <li class=""><a href="/category/APACHE" class="link_item"> APACHE </a></li> <li class=""><a href="/category/GO" class="link_item"> GO </a></li> <li class=""><a href="/category/JAVA" class="link_item"> JAVA </a></li> <li class=""><a href="/category/FLUTTER" class="link_item"> FLUTTER </a></li> <li class=""><a href="/category/REACTIVE" class="link_item"> REACTIVE </a></li> <li class=""><a href="/category/SPA" class="link_item"> SPA </a></li> </ul> </li> </ul> </div> <!-- 태그목록 모듈 --> <div class="widget widget-tag col-md-3 col-xs-12"> <h3><i class="icon-tag icons"></i> 태그목록</h3> <ul> <li><a href="/tag/sql" class="cloud2"> sql</a></li> <li><a href="/tag/spring" class="cloud1"> spring</a></li> <li><a href="/tag/mysql" class="cloud4"> mysql</a></li> <li><a href="/tag/HADOOP" class="cloud3"> HADOOP</a></li> <li><a href="/tag/jQuery" class="cloud4"> jQuery</a></li> <li><a href="/tag/javascript" class="cloud4"> javascript</a></li> <li><a href="/tag/PYTHON" class="cloud3"> PYTHON</a></li> <li><a href="/tag/php" class="cloud4"> php</a></li> <li><a href="/tag/java" class="cloud2"> java</a></li> <li><a href="/tag/spring-mvc" class="cloud4"> spring-mvc</a></li> </ul> </div> <!-- 최근 포스트 모듈 --> <div class="widget widget-post col-md-3 col-xs-12"> <h3><i class="icon-list icons"></i> 최근에 올라온 글 </h3> <ul> </ul> </div> </div> </div> </div><!-- container close --> </aside><!-- sidebar close --> <footer role="contentinfo"> <div class="container"> <div class="row"> <div class="col-xs-12 col-sm-12 col-md-12 footer-menu"> <a href="https://cnpnote.tistory.com/tag"><i class="icon-tag icons"></i> </a> <a href="https://cnpnote.tistory.com/rss" onclick="window.open(this.href); return false"><i class="icon-feed icons"></i> </a> </div> <div class="col-xs-12 col-sm-12 col-md-12 footer-copyright text-right"> <a href="https://cnpnote.tistory.com/"> cnpnote</a>'s Blog is powered by <a href="http://daum.net" onclick="window.open(this.href); return false">Daumkakao</a> / Designed by <a href="http://ongal.tistory.com">CEOSEO</a> </div> </div> </div> </footer> <!-- jQuery --> <script src="https://tistory1.daumcdn.net/tistory/2840920/skin/images/jquery-1.11.0.min.js?_version_=1583344392"></script> <div class="#menubar menu_toolbar "> <h2 class="screen_out">티스토리툴바</h2> <div class="btn_tool"><button class="btn_menu_toolbar btn_subscription #subscribe" data-blog-id="2840920" data-url="https://cnpnote.tistory.com" data-device="web_pc"><strong class="txt_tool_id">복붙노트</strong><em class="txt_state">구독하기</em><span class="img_common_tistory ico_check_type1"></span></button></div></div> <div class="#menubar menu_toolbar "></div> <div class="layer_tooltip"> <div class="inner_layer_tooltip"> <p class="desc_g"></p> </div> </div> <iframe id="editEntry" style="position:absolute;width:1px;height:1px;left:-100px;top:-100px" src="//cnpnote.tistory.com/api"></iframe> <!-- DragSearchHandler - START --> <script src="//search1.daumcdn.net/search/statics/common/js/g/search_dragselection.min.js"></script> <!-- DragSearchHandler - END --> <script type="text/javascript">(function($) { $(document).ready(function() { lightbox.options.fadeDuration = 200; lightbox.options.resizeDuration = 200; lightbox.options.wrapAround = false; lightbox.options.albumLabel = "%1 / %2"; }) })(tjQuery);</script> <div style="margin:0; padding:0; border:none; background:none; float:none; clear:none; z-index:0"></div> <script type="text/javascript" src="https://tistory1.daumcdn.net/tistory_admin/userblog/tistory-717c7b1234a0a46519d1483dc3db06322985d92c/static/script/common.js"></script> <script type="text/javascript">window.roosevelt_params_queue = window.roosevelt_params_queue || [{channel_id: 'dk', channel_label: '{tistory}'}]</script> <script type="text/javascript" src="//t1.daumcdn.net/midas/rt/dk_bt/roosevelt_dk_bt.js" async="async"></script> <script type="text/javascript" src="https://tistory1.daumcdn.net/tistory_admin/userblog/tistory-717c7b1234a0a46519d1483dc3db06322985d92c/static/script/menubar.min.js"></script> <script>window.tiara = {"svcDomain":"user.tistory.com","section":"글뷰","trackPage":"글뷰_보기","page":"글뷰","key":"2840920-150","customProps":{"userId":"0","blogId":"2840920","entryId":"150","role":"guest","trackPage":"글뷰_보기","filterTarget":false},"entry":{"entryId":"150","categoryName":"PHP","categoryId":"264984","author":"3264508","image":"","plink":"/entry/YouTube-API%EC%97%90%EC%84%9C-YouTube-%EB%8F%99%EC%98%81%EC%83%81-%EB%AF%B8%EB%A6%AC%EB%B3%B4%EA%B8%B0-%EC%9D%B4%EB%AF%B8%EC%A7%80%EB%A5%BC-%EC%96%BB%EC%9C%BC%EB%A0%A4%EB%A9%B4-%EC%96%B4%EB%96%BB%EA%B2%8C%ED%95%B4%EC%95%BC%ED%95%A9%EB%8B%88%EA%B9%8C","tags":["curl","php","youtube","youtube-api","youtube-data-api"]},"kakaoAppKey":"3e6ddd834b023f24221217e370daed18","appUserId":"null"}</script> <script type="module" src="https://t1.daumcdn.net/tistory_admin/frontend/tiara/v1.0.0/index.js"></script> <script src="https://t1.daumcdn.net/tistory_admin/frontend/tiara/v1.0.0/polyfills-legacy.min.js" nomodule="true" defer="true"></script> <script src="https://t1.daumcdn.net/tistory_admin/frontend/tiara/v1.0.0/index-legacy.js" nomodule="true" defer="true"></script> </body> </html>