YouTube 동영상 URL이 있는 경우 PHP 및 cURL을 사용하여 YouTube API에서 연결된 미리보기 이미지를 가져올 수 있는 방법이 있습니까?
질문자 :CodeOverload
각 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를 통해서도 사용할 수 있습니다. 또한 위의 예시 URL에서 img.youtube.com
대신 약간 더 짧은 호스트 이름인 i3.ytimg.com
또는 YouTube Data API(v3) 를 사용하여 미리보기 이미지를 가져올 수 있습니다.
Asaph
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 요청 횟수에 따라 결제 정보를 요청받을 수도 있습니다. 그러나 하루에 수백만 건의 요청이 무료입니다.
출처 기사 .
Salman A
아삽의 말이 맞습니다. 그러나 모든 YouTube 동영상에 9개의 미리보기 이미지가 모두 포함되어 있는 것은 아닙니다. 또한 썸네일의 이미지 크기는 비디오에 따라 다릅니다(아래 숫자는 하나를 기준으로 함). 존재가 보장되는 일부 미리보기 이미지가 있습니다.
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 비디오 정보 생성기 도구를 사용하여 URL 또는 비디오 ID를 제출하여 YouTube 비디오에 대한 모든 정보를 얻을 수 있습니다.
AGMG
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이 방화벽에 의해 차단되지 않는다는 것입니다.
Naren
특정 비디오 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);
PoorBoy
"검은색 막대"를 없애고 YouTube에서 하는 것처럼 하려면 다음을 사용할 수 있습니다.
https://i.ytimg.com/vi_webp/<video id>/mqdefault.webp
.webp
파일 확장자를 사용할 수 없다면 다음과 같이 할 수 있습니다.
https://i.ytimg.com/vi/<video id>/mqdefault.jpg
또한 확장되지 않은 버전이 필요한 경우 maxresdefault
대신 mqdefault
.
maxresdefault
를 사용할 계획이라면 가로 세로 비율이 확실하지 않습니다.
LuTz
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; }
Henrik Albrechtsson
비디오의 썸네일에 대한 URL이 포함된 비디오 항목 을 얻을 수 있습니다. 링크에 예제 코드가 있습니다. 또는 XML을 구문 분석하려는 경우 여기에 정보가 있습니다. 반환된 XML에는 축소판의 URL이 포함 media:thumbnail
keyboardP
YouTube Data API v3 에서는 동영상->목록 기능을 사용하여 동영상의 썸네일을 가져올 수 있습니다. snippet.thumbnails.(key) 에서 기본, 중간 또는 고해상도 썸네일을 선택하고 너비, 높이 및 URL을 가져올 수 있습니다.
썸네일->설정 기능으로 썸네일을 업데이트할 수도 있습니다.
예를 들어YouTube API 샘플 프로젝트를 확인할 수 있습니다. ( PHP 것 .)
Ibrahim Ulukaya
// 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;
Mahendra Tyagi
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
life evader
또 다른 좋은 대안은 YouTube에서 지원 하는 oEmbed API를 사용하는 것입니다.
YouTube URL을 oEmbed URL에 추가하기만 하면 썸네일과 포함을 위한 HTML 코드가 포함된 JSON을 받게 됩니다.
예시:
http://www.youtube.com/oembed?format=json&url=http%3A//youtube.com/watch%3Fv%3DxUeJdWYdMmQ
당신에게 줄 것입니다 :
{ "height":270, "width":480, "title":"example video for 2020", "thumbnail_width":480, "html":"...", "thumbnail_height":360, "version":"1.0", "provider_name":"YouTube", "author_url":"https:\/\/www.youtube.com\/channel\/UCza6VSQUzCON- AzlsrOLwaA", "thumbnail_url":"https:\/\/i.ytimg.com\/vi\/xUeJdWYdMmQ\/hqdefault.jpg", "author_name":"Pokics", "provider_url":"https:\/\/www.youtube.com\/", "type":"video" }
자세한 내용 은 설명서를 참조하십시오.
Andresch Serj
YouTube API 버전 3 이 2분 내에 실행됩니다.
YouTube를 검색하고 관련 속성을 얻으려는 경우:
공개 API 받기 -- 이 링크는 좋은 방향을 제시합니다.
아래 쿼리 문자열을 사용하십시오. URL 문자열의 검색 쿼리( q= 로 표시됨)는 예를 들어 stackoverflow입니다. 그러면 YouTube에서 썸네일, 스니펫, 작성자 등을 구문 분석할 수 있는 JSON 응답을 다시 보냅니다.
Chris
사용하다:
https://www.googleapis.com/youtube/v3/videoCategories?part=snippet,id&maxResults=100®ionCode=us&key=**Your YouTube ID**
위는 링크입니다. 이를 이용하여 동영상의 YouTube 특성을 찾을 수 있습니다. 특성을 찾으면 선택한 카테고리의 동영상을 얻을 수 있습니다. 그런 다음 Asaph의 답변을 사용하여 선택한 비디오 이미지를 찾을 수 있습니다.
위의 접근 방식을 시도하면 YouTube API 에서 모든 것을 구문 분석할 수 있습니다.
Nikh1414
다음과 같은 방식으로 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는 서버에서 직접 이미지를 포함하는 것을 방지합니다.
blacksunshineCoding
주어진 솔루션을 추가/확장하기 위해 이 문제가 직접 발생했기 때문에 실제로 하나의 HTTP 요청으로 여러 YouTube 동영상 콘텐츠(이 경우 썸네일)를 가져올 수 있다는 점에 유의해야 한다고 생각합니다.
나머지 클라이언트(이 경우 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); ?>
Hlawuleka MAS
유튜브 데이터 API
YouTube는 Data API(v3)를 통해 모든 동영상에 대해 생성된 4개의 이미지를 제공합니다. 예를 들면 다음과 같습니다.
API를 통해 이미지에 액세스하기
- 먼저 Google API 콘솔 에서 공개 API 키를 가져옵니다.
- API 문서 의 YouTube 썸네일 참조에 따라 snippet.thumbnails의 리소스에 액세스해야 합니다.
이에 따라 URL을 다음과 같이 표현해야 합니다.
www.googleapis.com/youtube/v3/videos?part=snippet&id=`yourVideoId`&key=`yourApiKey`
이제 비디오 ID와 API 키를 각각의 video-id 및 api-key로 변경하면 해당 응답은 snippet 변수의 썸네일에 있는 4개의 링크를 제공하는 JSON 출력이 됩니다(모두 사용 가능한 경우).
Daksh Miglani
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/$ytID/maxresdefault.jpg"; print "https://img.youtube.com/vi/$ytID/mqdefault.jpg"; print "https://img.youtube.com/vi/$ytID/hqdefault.jpg"; print "https://img.youtube.com/vi/$ytID/sddefault.jpg"; print "https://img.youtube.com/vi/$ytID/default.jpg";
이 도구를 사용하여 YouTube 미리보기 이미지를 생성할 수 있습니다.
Rinto George
이미지 위에 YouTube 재생 버튼을 배치하여 이미지를 만들 수 있는 멋진 도구를 찾았습니다.
- 스크립팅을 위해 서버에 설치: https://github.com/halgatewood/youtube-thumbnail-enhancer
Scott Joudry
YouTube 썸네일용으로 만든 간단한 PHP 함수와 유형은 다음과 같습니다.
- 기본
- 본사 기본값
- mqdefault
- sddefault
- 최대 기본값
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;}
Arun Yokesh
공개 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> Unlisted'; } elseif($video_status == 'public'){ $video_thumbnail = 'http://img.youtube.com/vi/'.$video_url.'/mqdefault.jpg'; $video_status = '<i class="fa fa-eye"></i> Public'; } elseif($video_status == 'private'){ $video_thumbnail = $playlistItem['snippet']['thumbnails']['maxres']['url']; $video_status = '<i class="fa fa-lock"></i> Private'; }
Harvey Connor
YouTube는 2개의 서버에서 미리보기 이미지를 제공하고 있습니다. <YouTube_Video_ID_HERE>를 자신의 YouTube 동영상 ID로 바꾸면 됩니다. 요즘 webP는 작은 이미지 크기로 인해 이미지를 빠르게 로드하는 데 가장 적합한 형식입니다.
https://img.youtube.com https://i.ytimg.com
예는 https://i.ytimg.com 서버가 더 짧기 때문에 다른 특별한 이유가 없습니다. 둘 다 사용할 수 있습니다.
플레이어 배경 축소판(480x360):
WebP https://i.ytimg.com/vi_webp/<YouTube_Video_ID_HERE>/0.webp JPG https://i.ytimg.com/vi/<YouTube_Video_ID_HERE>/0.jpg
비디오 프레임 썸네일(120x90)
WebP: Start: https://i.ytimg.com/vi_webp/<YouTube_Video_ID_HERE>/1.webp Middle: https://i.ytimg.com/vi_webp/<YouTube_Video_ID_HERE>/2.webp End: https://i.ytimg.com/vi_webp/<YouTube_Video_ID_HERE>/3.webp JPG: Start: https://i.ytimg.com/vi/<YouTube_Video_ID_HERE>/1.jpg Middle: https://i.ytimg.com/vi/<YouTube_Video_ID_HERE>/2.jpg End: https://i.ytimg.com/vi/<YouTube_Video_ID_HERE>/3.jpg
최저 품질 미리보기 이미지(120x90)
WebP https://i.ytimg.com/vi_webp/<YouTube_Video_ID_HERE>/default.webp JPG https://i.ytimg.com/vi/<YouTube_Video_ID_HERE>/default.jpg
중간 품질 미리보기 이미지(320x180)
WebP https://i.ytimg.com/vi_webp/<YouTube_Video_ID_HERE>/mqdefault.webp JPG https://i.ytimg.com/vi/<YouTube_Video_ID_HERE>/mqdefault.jpg
고화질 미리보기 이미지(480x360)
WebP https://i.ytimg.com/vi_webp/<YouTube_Video_ID_HERE>/hqdefault.webp JPG https://i.ytimg.com/vi/<YouTube_Video_ID_HERE>/hqdefault.jpg
표준 화질 미리보기 이미지(640x480)
WebP https://i.ytimg.com/vi_webp/<YouTube_Video_ID_HERE>/sddefault.webp JPG https://i.ytimg.com/vi/<YouTube_Video_ID_HERE>/sddefault.jpg
스케일되지 않은 썸네일 해상도
WebP https://i.ytimg.com/vi_webp/<YouTube_Video_ID_HERE>/maxresdefault.webp JPG https://i.ytimg.com/vi/<YouTube_Video_ID_HERE>/maxresdefault.jpg
Mark Fulghum
나는 그들이 썸네일에 대한 많은 답변이라고 생각하지만 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
Kumar
방법 1:
"thumbnail_url", http://www.youtube.com/oembed?format=json&url= {귀하의 동영상 URL이 여기로 이동}이 포함된 JSON 페이지에서 YouTube 동영상에 대한 모든 정보를 찾을 수 있습니다.
최종 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
자세한 내용은 id 또는 https://www.youtube.com/watch?v=mXde7q59BI8 비디오 자습서 1을 사용하여 YouTube 비디오 썸네일을 얻는 방법을 참조하십시오.
방법 2:
YouTube 이미지 링크 사용, https://img.youtube.com/vi/ "insert-youtube-video-id-here"/default.jpg
방법 3:
브라우저 소스 코드를 사용하여 비디오 URL 링크를 사용하여 썸네일 가져오기 - 비디오 소스 코드로 이동하여 thumbnailurl을 검색합니다. 이제 이 URL을 소스 코드에 사용할 수 있습니다.
{img src="https://img.youtube.com/vi/"insert-youtube-video-id-here"/default.jpg"}
자세한 내용은 id 또는 https://www.youtube.com/watch?v=9f6E8MeM6PI 비디오 자습서 2를 사용하여 YouTube 비디오 썸네일을 얻는 방법을 참조하십시오.
Hassan Saeed
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');
Nimesh Vagadiya
수동 사용에 최적화된 최고의 답변은 다음과 같습니다. 구분 기호가 없는 비디오 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를 통해서도 사용할 수 있습니다. 또한 위의 예시 URL에서 img.youtube.com
대신 약간 더 짧은 호스트 이름인 i3.ytimg.com
또는 YouTube Data API(v3) 를 사용하여 미리보기 이미지를 가져올 수 있습니다.
user6798019
이것은 내 클라이언트 측 전용 API 키가 필요하지 않은 솔루션입니다.
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 }, {}) }
catamphetamine
img.youtube.com/vi/YouTubeID/ImageFormat.jpg
사용
여기서 이미지 형식은 default, hqdefault, maxresdefault와 같이 다릅니다.
shpwebhost
다음은 썸네일을 가져오기 위해 만든 간단한 함수입니다. 이해하고 사용하기 쉽습니다.
$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; }
Sodruldeen Mustapha
이 코드를 빈 .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'; }
감사 해요.
Ali Han
출처 : http:www.stackoverflow.com/questions/2068344/how-do-i-get-a-youtube-video-thumbnail-from-the-youtube-api
'etc. > StackOverFlow' 카테고리의 다른 글
Java에서 하나의 생성자를 다른 생성자에서 어떻게 호출합니까? (0) | 2021.11.24 |
---|---|
Python 3에서 "1000000000000000 in range(1000000000000001)"가 왜 그렇게 빠릅니까? (0) | 2021.11.24 |
JavaScript 함수에 대한 기본 매개변수 값 설정 (0) | 2021.11.23 |
현재 디렉토리와 파일의 디렉토리 찾기 [중복] (0) | 2021.11.23 |
PHP에서 mysql_* 함수를 사용하면 안 되는 이유는 무엇입니까? (0) | 2021.11.23 |