YouTube 비디오 URL이있는 경우 PHP 및 cURL을 사용하여 YouTube API에서 연결된 미리보기 이미지를 얻는 방법이 있습니까?
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
예제 URL 대신 약간 짧은 호스트 이름이 작동 합니다.
또는 YouTube Data API (v3) 를 사용하여 미리보기 이미지를 얻을 수 있습니다.
http://www.img.youtube.com
만http://img.youtube.com
mqdefault
는 16 : 9
sddefault
그리고 maxresdefault
항상 일부 비디오 는 가능하지 않습니다 ....
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 요청 횟수에 따라 청구 정보를 묻는 메시지가 표시 될 수 있습니다. 그러나 하루에 수백만 건의 요청이 무료입니다.
소스 기사 .
jsonc
대신에 사용 했습니다 json
. 잘못된 JSON 구조로 인해 실패했습니다.
jsonc
. jQuery와 PHP 예제는 반드시 사용해야 json
합니다. 그리고 새로운 JSON 구조에 맞게 코드를 업데이트했습니다. 지금 코드를 사용하고 있으며 라이브로 작동 중입니다. 변경 사항을 읽지 않으면 작동하지 않는다고 말하지 마십시오. 감사!
v=2
)를 요청하면 API 변경이 처리됩니다.
아삽이 말한 것은 옳습니다. 그러나 모든 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 |
다음에서 축소판 및 기타 YouTube 정보를 검색하는 JavaScript 및 PHP 스크립트를 찾을 수 있습니다.
URL 또는 비디오 ID를 제출 하여 YouTube 비디오 정보 생성기 도구를 사용하여 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
.
_webp
확장을 제거 하고로 변경 하면 작동합니다 .jpg
. 실제 예 : i.ytimg.com/vi/mJ8tq8AnNis/mqdefault.jpg , 종횡비가 확실하지 않습니다.
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;
}
에서 유튜브 데이터 API V3 , 당신은과 비디오의 썸네일을 얻을 수있는 개 -> 목록 기능. 에서 snippet.thumbnails. (키) , 기본, 중간 또는 높은 해상도 썸네일을 선택하고, 폭, 높이 및 URL을 얻을 수 있습니다.
썸네일-> 설정 기능으로 썸네일을 업데이트 할 수도 있습니다.
예를 들어 YouTube API 샘플 프로젝트를 확인할 수 있습니다 . ( PHP들 .)
// 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 받기 - 이 링크는 좋은 방향을 제시합니다
아래 쿼리 문자열을 사용하십시오. URL 문자열에서 검색 쿼리 ( q = 로 표시 )는 예제 목적으로 스택 오버 플로우 입니다. 그런 다음 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"
}
자세한 내용 은 설명서를 읽으십시오 .
사용하다:
https://www.googleapis.com/youtube/v3/videoCategories?part=snippet,id&maxResults=100®ionCode=us&key=**Your YouTube ID**
위의 링크입니다. 이를 사용하여 비디오의 YouTube 특성을 찾을 수 있습니다. 특성을 찾은 후 선택한 카테고리의 비디오를 얻을 수 있습니다. 그런 다음 Asaph의 답변을 사용하여 선택한 비디오 이미지를 찾을 수 있습니다 .
위의 방법을 시도하면 YouTube API 에서 모든 것을 파싱 할 수 있습니다 .
이미지 위에 YouTube 재생 버튼을 사용하여 이미지를 만들 수있는 멋진 도구를 찾았습니다.
주어진 솔루션을 추가 / 확장하기 위해이 문제를 직접 겪었을 때 실제로 하나의 HTTP 요청으로 여러 YouTube 동영상 콘텐츠 (이 경우 축소판)를 가져올 수 있습니다.
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는 예를 들어 Data API (v3)를 통해 모든 동영상에 대해 4 개의 생성 된 이미지를 제공합니다.
이에 따라 다음과 같이 URL을 문구로 지정해야합니다.
www.googleapis.com/youtube/v3/videos?part=snippet&id=`yourVideoId`&key=`yourApiKey`
이제 비디오 ID와 API 키를 각각의 비디오 ID와 API 키로 변경하면 스 니펫 변수의 썸네일에 네 개의 링크를 제공하는 JSON 출력이 응답으로 표시됩니다 (모두 사용 가능한 경우).
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 미리보기 이미지를 생성 할 수 있습니다
https://tools.tutsplanet.com/index.php/get-youtube-video-thumbnails
YouTube 축소판을 위해 만든 간단한 PHP 함수와 유형은
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> 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';
}
미리보기 이미지에 대한 답변은 많지만 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
예제 URL 대신 약간 짧은 호스트 이름이 작동 합니다.
또는 YouTube Data API (v3) 를 사용하여 미리보기 이미지를 얻을 수 있습니다.
방법 1 :
"thumbnail_url", 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
자세한 내용은 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 비디오 썸네일을 얻는 방법을 참조하십시오.
https://www.youtube.com/watch?v=mXde7q59BI8
되어 https://www.youtube.com/watch?v=9f6E8MeM6PI
있고 (효과적으로) 손상되었습니다.
사용하다 img.youtube.com/vi/YouTubeID/ImageFormat.jpg
여기서 이미지 형식은 default, hqdefault, maxresdefault와 다릅니다.
이것은 클라이언트 측 전용 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
},
{})
}
다음은 축소판 그림을 얻기 위해 만든 간단한 기능입니다. 이해하고 사용하기 쉽습니다.
$ 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;
}
&t=227s
됩니까?
이 코드를 빈 .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';
}
감사.