YouTube API에서 YouTube 비디오 섬네일을 얻으려면 어떻게 해야 하나요?
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」 「HTTP」 「HTTP」 。 약간 호스트명 「」 「」 「」 「」 「」i3.ytimg.com
img.youtube.com
를 참조해 주세요.
또는 YouTube Data API(v3)를 사용하여 미리 보기 이미지를 가져올 수 있습니다.
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 요청 수에 따라 청구 정보를 요구할 수 있습니다.그러나 하루에 몇 천 건의 요청은 무료입니다.
소스 기사
아삽의 말이 맞아그러나 모든 유튜브 동영상이 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
JavaScript 및 PHP 스크립트를 검색하여 미리 보기 및 기타 YouTube 정보를 검색할 수 있습니다.
또한 YouTube Video Information Generator 도구를 사용하여 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
.
유튜브에서 기존 이미지만 불러오는 기능을 만들었습니다.
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;
}
비디오의 썸네일의 URL이 포함된 비디오 엔트리를 얻을 수 있습니다.링크에 예제 코드가 있습니다.XML을 해석하려면 여기에 정보가 있습니다.반환된 XML에는media:thumbnail
URL이 되어 있습니다.
YouTube Data API v3에서는 동영상 > 목록 기능으로 동영상의 썸네일을 얻을 수 있습니다.단편에서.썸네일. (키) 기본, 중간 또는 고해상도 썸네일을 선택하여 폭, 높이 및 URL을 얻을 수 있습니다.
썸네일 세트 기능을 사용하여 썸네일을 갱신할 수도 있습니다.
예를 들어 YouTube API Sample 프로젝트를 확인하실 수 있습니다. (PHP 프로젝트)
유튜브는 구글이 소유하고 있고 구글은 다양한 화면 크기에 맞는 적절한 수의 이미지를 가지고 싶어하기 때문에 다른 크기로 저장된다.다음은 섬네일의 예를 제시하겠습니다.
저품질 섬네일:
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
// 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는 2대의 서버에서 섬네일을 제공하고 있습니다.<YouTube_Video>를 교체하기만 하면 됩니다.ID_HERE>와 YouTube의 비디오 ID를 지정합니다.요즘 웹P는 이미지 크기가 작기 때문에 빠른 로딩에 가장 적합한 포맷입니다.
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
고품질 섬네일 (480 x 360)
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
표준 품질의 섬네일 (640 x 480)
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
YouTube API 버전 3을 2분 만에 가동
YouTube를 검색하여 관련 속성을 얻는 것만을 원하는 경우:
공개 API 가져오기 - 이 링크는 좋은 방향을 제공합니다.
아래 쿼리 문자열을 사용합니다.URL 문자열의 검색 쿼리(q=로 표시됨)는 예를 들어 stackoverflow입니다.그런 다음 YouTube에서 JSON 응답을 보내서 썸네일, 스니펫, 작성자 등을 구문 분석할 수 있습니다.
또 다른 좋은 대안은 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"
}
상세한 것에 대하여는, 메뉴얼을 참조해 주세요.
비디오 ID는 parse_url, parse_str을 사용하여 YouTube 비디오 URL에서 얻은 후 이미지의 예측 URL에 삽입할 수 있습니다.YouTube의 예측 URL 덕분에
$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";
이 도구를 사용하여 유튜브 미리 보기를 생성할 수 있습니다.
https://youtube-thumbnail-tool.com
용도:
https://www.googleapis.com/youtube/v3/videoCategories?part=snippet,id&maxResults=100®ionCode=us&key=**Your YouTube ID**
위는 링크입니다.그것을 이용하면 동영상의 유튜브 특성을 알 수 있습니다.특성을 찾으면 선택한 카테고리의 동영상을 얻을 수 있습니다.그런 다음 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는 서버에서 직접 이미지를 포함하지 않도록 합니다.
주어진 해결책을 추가/확장하기 위해서는 저 자신도 이 문제를 겪었기 때문에 하나의 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);
?>
유튜브 데이터 API
예를 들어, YouTube는 Data API(v3)를 통해 모든 비디오에 대해 4개의 생성된 이미지를 제공합니다.
API를 통한 이미지 액세스
- 먼저 Google API 콘솔에서 공개 API 키를 가져옵니다.
- API 문서의 YouTube 썸네일 참조에 따르면 스니펫에 있는 리소스에 액세스해야 합니다.썸네일
이에 따라 URL을 다음과 같이 표현해야 합니다.
www.googleapis.com/youtube/v3/videos?part=snippet&id=`yourVideoId`&key=`yourApiKey`
비디오 ID와 API 키를 각각의 video-id 및 api-key로 변경하면 응답은 JSON 출력으로 스니펫 변수의 썸네일에 4개의 링크가 표시됩니다(모두 사용 가능한 경우).
YouTube 재생 버튼을 이미지 위에 배치하여 이미지를 만들 수 있는 유용한 도구를 찾았습니다.
- 스크립트 작성용으로 서버에 인스톨 됩니다.
YouTube 썸네일을 위해 만든 간단한 PHP 함수와 종류는 다음과 같습니다.
- 체납
- hqdefault(기본값)
- mqdefault(기본값)
- 디폴트
- 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를 은 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';
}
썸네일에 대한 답변은 많다고 생각합니다만, 유튜브 썸네일을 쉽게 얻을 수 있도록 다른 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
고품질과 유사한 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
방법 1:
YouTube 비디오에 대한 모든 정보는 JSON 페이지에서 찾을 수 있습니다. JSON 페이지에는 "http_url", http://www.youtube.com/oembed?format=json&url={video URL이 여기에 있습니다.
최종 URL look + 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-video-id-here"/default.jpg 사용
방법 3:
브라우저 소스 코드를 사용하여 비디오 URL 링크를 사용하여 썸네일을 가져옵니다.비디오 소스 코드로 이동하여 썸네일 URL을 검색합니다.이제 다음 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 비디오 섬네일을 얻는 방법을 참조하십시오.
https://i.ytimg.com/vi/<--Video ID-->/default.jpg
이미지 크기 무게 120px 높이 90px
https://i.ytimg.com/vi/<--Video ID-->/mqdefault.jpg
이미지 크기 무게 320px 높이 180px
https://i.ytimg.com/vi/<--Video ID-->/hqdefault.jpg
이미지 크기 무게 480px 높이 360px
https://i.ytimg.com/vi/<--Video ID-->/sddefault.jpg
이미지 크기 무게 640px 높이 480px
https://i.ytimg.com/vi/<--Video ID-->/maxresdefault.jpg
이미지 크기 무게 1280px 높이 720px
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)를 사용하여 미리 보기 이미지를 가져올 수 있습니다.
이것은 클라이언트 측에서만 필요한 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
},
{})
}
사용하다img.youtube.com/vi/YouTubeID/ImageFormat.jpg
여기서 이미지 형식은 default, hqdefault, maxresdefault와 같이 다릅니다.
이 코드를 empty.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';
}
몇 가지 썸네일이 존재합니다.
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
감사해요.
언급URL : https://stackoverflow.com/questions/2068344/how-do-i-get-a-youtube-video-thumbnail-from-the-youtube-api
'programing' 카테고리의 다른 글
목록을 자세히 복사하려면 어떻게 해야 합니까? (0) | 2022.10.12 |
---|---|
오브젝트 저장(데이터 지속성) (0) | 2022.10.12 |
Java를 사용하여 16진수를 RGB로 변환하는 방법 (0) | 2022.10.03 |
롤링 기준으로 MySQL에서 오래된 행을 삭제하는 가장 좋은 방법은 무엇입니까? (0) | 2022.10.03 |
MySQL 인덱스는 어떻게 작동합니까? (0) | 2022.10.03 |