Nếu tôi có URL video YouTube, có cách nào để sử dụng PHP và cURL để lấy hình thu nhỏ được liên kết từ API YouTube không?
Nếu tôi có URL video YouTube, có cách nào để sử dụng PHP và cURL để lấy hình thu nhỏ được liên kết từ API YouTube không?
Câu trả lời:
Mỗi video YouTube có bốn hình ảnh được tạo. Chúng được dự đoán định dạng như sau:
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
Cái đầu tiên trong danh sách là một hình ảnh kích thước đầy đủ và những cái khác là hình ảnh thu nhỏ. Hình ảnh thumbnail mặc định (ví dụ, một trong những 1.jpg
, 2.jpg
, 3.jpg
) là:
https://img.youtube.com/vi/<insert-youtube-video-id-here>/default.jpg
Đối với phiên bản chất lượng cao của hình thu nhỏ, hãy sử dụng URL tương tự như sau:
https://img.youtube.com/vi/<insert-youtube-video-id-here>/hqdefault.jpg
Ngoài ra còn có một phiên bản chất lượng trung bình của hình thu nhỏ, sử dụng URL tương tự như HQ:
https://img.youtube.com/vi/<insert-youtube-video-id-here>/mqdefault.jpg
Đối với phiên bản độ nét tiêu chuẩn của hình thu nhỏ, hãy sử dụng URL tương tự như sau:
https://img.youtube.com/vi/<insert-youtube-video-id-here>/sddefault.jpg
Đối với phiên bản độ phân giải tối đa của hình thu nhỏ, hãy sử dụng URL tương tự như sau:
https://img.youtube.com/vi/<insert-youtube-video-id-here>/maxresdefault.jpg
Tất cả các URL trên cũng có sẵn trên HTTP. Ngoài ra, tên máy chủ ngắn hơn một chút i3.ytimg.com
hoạt động thay cho img.youtube.com
các URL ví dụ ở trên.
Ngoài ra, bạn có thể sử dụng API dữ liệu YouTube (v3) để có được hình ảnh thu nhỏ.
http://www.img.youtube.com
, chỉhttp://img.youtube.com
mqdefault
là 16: 9
sddefault
và maxresdefault
không phải lúc nào awailable một số video có họ mặc dù ....
Bạn có thể sử dụng API dữ liệu YouTube để truy xuất hình thu nhỏ của video, chú thích, mô tả, xếp hạng, thống kê và hơn thế nữa. API phiên bản 3 yêu cầu khóa *. Lấy khóa và tạo video: danh sách yêu cầu:
https://www.googleapis.com/youtube/v3/videos?key=YOUR_API_KEY&part=snippet&id=VIDEO_ID
Mã PHP ví dụ
$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);
Đầu ra
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)
}
}
* Không chỉ bạn cần một khóa, bạn có thể được yêu cầu cung cấp thông tin thanh toán tùy thuộc vào số lượng yêu cầu API bạn dự định thực hiện. Tuy nhiên, vài triệu yêu cầu mỗi ngày là miễn phí.
jsonc
thay vì json
cho getJSON. Không thành công do cấu trúc JSON sai của bạn.
jsonc
. Các ví dụ jQuery và PHP PHẢI sử dụng json
. Và tôi đã cập nhật mã để phù hợp với cấu trúc JSON mới. Tôi đang sử dụng mã ngay bây giờ và nó đang hoạt động TRỰC TIẾP. vì vậy đừng nói rằng nó không hoạt động mà không đọc các thay đổi. Cảm ơn!
v=2
) sẽ đảm nhận các thay đổi API.
Những gì Asaph nói là đúng. Tuy nhiên, không phải video YouTube nào cũng chứa tất cả chín hình thu nhỏ. Ngoài ra, kích thước hình ảnh của hình thu nhỏ phụ thuộc vào video (các số bên dưới được dựa trên một).
Có bảy hình thu nhỏ được đảm bảo tồn tại:
| 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 |
Ngoài ra, hai hình thu nhỏ khác có thể tồn tại hoặc không tồn tại. Sự hiện diện của họ có lẽ dựa trên việc video có chất lượng cao hay không.
| 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 |
Bạn có thể tìm thấy các tập lệnh JavaScript và PHP để truy xuất hình thu nhỏ và thông tin YouTube khác trong:
Bạn cũng có thể sử dụng công cụ Trình tạo thông tin video YouTube để nhận tất cả thông tin về video YouTube bằng cách gửi URL hoặc id video.
Trong YouTube API V3, chúng tôi cũng có thể sử dụng các URL này để lấy hình thu nhỏ ... Chúng được phân loại dựa trên chất lượng của chúng.
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
Và cho độ phân giải tối đa ..
https://i1.ytimg.com/vi/<insert-youtube-video-id-here>/maxresdefault.jpg
Một lợi thế của các URL này so với các URL trong câu trả lời đầu tiên là các URL này không bị chặn bởi tường lửa.
Nếu bạn muốn hình ảnh lớn nhất từ YouTube cho một ID video cụ thể, thì URL phải giống như thế này:
http://i3.ytimg.com/vi/SomeVideoIDHere/0.jpg
Sử dụng API, bạn có thể chọn hình ảnh thu nhỏ mặc định. Mã đơn giản nên giống như thế này:
//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);
Nếu bạn muốn thoát khỏi "các thanh màu đen" và làm điều đó giống như YouTube, bạn có thể sử dụng:
https://i.ytimg.com/vi_webp/<video id>/mqdefault.webp
Và nếu bạn không thể sử dụng .webp
phần mở rộng tập tin, bạn có thể làm như thế này:
https://i.ytimg.com/vi/<video id>/mqdefault.jpg
Ngoài ra, nếu bạn cần phiên bản không có tỷ lệ, hãy sử dụng maxresdefault
thay vì mqdefault
.
Lưu ý: Tôi không chắc chắn về tỷ lệ khung hình nếu bạn định sử dụng maxresdefault
.
_webp
và thay đổi tiện ích mở rộng thành .jpg
. Ví dụ hoạt động: i.ytimg.com/vi/mJ8tq8AnNis/mqdefault.jpg , tôi không chắc chắn về tỷ lệ khung hình.
Tôi đã tạo một chức năng để chỉ tìm nạp hình ảnh hiện có từ 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;
}
Trong API dữ liệu YouTube v3 , bạn có thể nhận được hình thu nhỏ của video với chức năng danh sách video-> . Từ snippet.thumbnails. (Phím) , bạn có thể chọn hình thu nhỏ mặc định, trung bình hoặc độ phân giải cao và nhận chiều rộng, chiều cao và URL của nó.
Bạn cũng có thể cập nhật hình thu nhỏ với hình thu nhỏ-> thiết lập chức năng.
Ví dụ: bạn có thể xem dự án Mẫu API của YouTube . (Những cái PHP .)
Bạn có thể nhận Mục nhập video chứa URL tới hình thu nhỏ của video. Có mã ví dụ trong liên kết. Hoặc, nếu bạn muốn phân tích cú pháp XML, có thông tin ở đây . XML được trả về có một media:thumbnail
phần tử chứa URL của hình thu nhỏ.
// 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 thuộc sở hữu của Google và Google thích có số lượng hình ảnh hợp lý cho các kích thước màn hình khác nhau, do đó hình ảnh của nó được lưu trữ ở các kích thước khác nhau. Dưới đây là một ví dụ về cách hình thu nhỏ của bạn sẽ như thế nào:
Hình thu nhỏ chất lượng thấp:
http://img.youtube.com/vi/<YouTube_Video_ID_HERE>/sddefault.jpg
Hình thu nhỏ chất lượng trung bình:
http://img.youtube.com/vi/<YouTube_Video_ID_HERE>/mqdefault.jpg
Hình thu nhỏ chất lượng cao:
http://img.youtube.com/vi/<YouTube_Video_ID_HERE>/hqdefault.jpg
Hình thu nhỏ chất lượng tối đa:
http://img.youtube.com/vi/<YouTube_Video_ID_HERE>/maxresdefault.jpg
Nếu tất cả những gì bạn muốn làm là tìm kiếm YouTube và nhận các thuộc tính liên quan:
Nhận API công khai - Liên kết này mang đến một hướng tốt
Sử dụng chuỗi truy vấn dưới đây. Truy vấn tìm kiếm (ký hiệu là q = ) trong chuỗi URL là stackoverflow cho mục đích ví dụ. YouTube sau đó sẽ gửi lại cho bạn một câu trả lời JSON, nơi bạn có thể phân tích cú pháp cho Thumbnail, Snippet, Author, v.v.
Một cách khác tốt hơn là sử dụng API oEmbed được YouTube hỗ trợ.
Bạn chỉ cần thêm URL YouTube của mình vào URL oEmbed và bạn sẽ nhận được JSON bao gồm hình thu nhỏ và mã HTML để nhúng.
Thí dụ:
http://www.youtube.com/oembed?format=json&url=http%3A//youtube.com/watch%3Fv%3DxUeJdWYdMmQ
Sẽ cung cấp cho bạn:
{
"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"
}
Đọc tài liệu để biết thêm thông tin .
Sử dụng:
https://www.googleapis.com/youtube/v3/videoCategories?part=snippet,id&maxResults=100®ionCode=us&key=**Your YouTube ID**
Trên đây là đường dẫn. Sử dụng điều đó, bạn có thể tìm thấy các đặc điểm YouTube của video. Sau khi tìm thấy các đặc điểm, bạn có thể nhận được các video của thể loại đã chọn. Sau đó, bạn có thể tìm thấy hình ảnh video được chọn bằng câu trả lời của Asaph .
Hãy thử cách tiếp cận ở trên và bạn có thể phân tích mọi thứ từ API YouTube .
Tôi đã sử dụng hình thu nhỏ của YouTube theo cách này:
$url = 'http://img.youtube.com/vi/' . $youtubeId . '/0.jpg';
$img = dirname(__FILE__) . '/youtubeThumbnail_' . $youtubeId . '.jpg';
file_put_contents($img, file_get_contents($url));
Hãy nhớ rằng YouTube ngăn chặn hình ảnh trực tiếp từ máy chủ của họ.
Tôi tìm thấy công cụ tiện lợi này cho phép bạn tạo hình ảnh với nút phát YouTube được đặt trên hình ảnh:
Chỉ cần thêm / mở rộng các giải pháp được đưa ra, tôi cảm thấy cần lưu ý rằng, vì tôi đã gặp phải vấn đề này, người ta thực sự có thể lấy nhiều nội dung video trên YouTube, trong trường hợp này là hình thu nhỏ, với một yêu cầu HTTP:
Sử dụng Rest Client, trong trường hợp này là HTTPFUL, bạn có thể làm một cái gì đó như thế này:
<?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 cung cấp cho chúng tôi bốn hình ảnh được tạo cho mỗi video thông qua API dữ liệu (v3), ví dụ:
Theo điều này, bạn cần phải cụm từ URL của bạn như thế này -
www.googleapis.com/youtube/v3/videos?part=snippet&id=`yourVideoId`&key=`yourApiKey`
Bây giờ thay đổi ID video và khóa API của bạn thành id video và api-key tương ứng của bạn và phản hồi của nó sẽ là đầu ra JSON cung cấp cho bạn bốn liên kết trong hình thu nhỏ của biến đoạn trích (nếu tất cả đều có sẵn).
Bạn có thể lấy ID video từ url video YouTube bằng cách sử dụng parse_url , parse_str và sau đó chèn vào các url dự đoán cho hình ảnh. Cảm ơn YouTube về các URL dự đoán
$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";
Bạn có thể sử dụng công cụ này để tạo hình thu nhỏ của YouTube
https://tools.tutsplanet.com/index.php/get-youtube-video-thumbnails
Một hàm PHP đơn giản tôi đã tạo cho hình thu nhỏ của YouTube và các loại là
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;}
Nếu bạn đang sử dụng API công khai, cách tốt nhất để làm điều đó là sử dụng if
câu lệnh.
Nếu video ở chế độ công khai hoặc không được liệt kê, bạn đặt hình thu nhỏ bằng phương pháp URL. Nếu video ở chế độ riêng tư, bạn sử dụng API để lấy hình thu nhỏ.
<?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';
}
Tôi nghĩ rằng chúng là rất nhiều câu trả lời cho hình thu nhỏ, nhưng tôi muốn thêm một số URL khác để có được hình thu nhỏ của YouTube rất dễ dàng. Tôi chỉ lấy một số văn bản từ câu trả lời của Asaph. Dưới đây là một số URL để nhận hình thu nhỏ của YouTube:
https://ytimg.googleusercontent.com/vi/<insert-youtube-video-id-here>/default.jpg
Đối với phiên bản chất lượng cao của hình thu nhỏ, hãy sử dụng URL tương tự như sau:
https://ytimg.googleusercontent.com/vi/<insert-youtube-video-id-here>/hqdefault.jpg
Ngoài ra còn có phiên bản chất lượng trung bình của hình thu nhỏ, sử dụng URL tương tự như chất lượng cao:
https://ytimg.googleusercontent.com/vi/<insert-youtube-video-id-here>/mqdefault.jpg
Đối với phiên bản độ nét tiêu chuẩn của hình thu nhỏ, hãy sử dụng URL tương tự như sau:
https://ytimg.googleusercontent.com/vi/<insert-youtube-video-id-here>/sddefault.jpg
Đối với phiên bản độ phân giải tối đa của hình thu nhỏ, hãy sử dụng URL tương tự như sau:
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');
Đây là câu trả lời hàng đầu được tối ưu hóa để sử dụng thủ công. Mã thông báo ID video không có dấu phân cách cho phép chọn bằng cách nhấp đúp.
Mỗi video YouTube có bốn hình ảnh được tạo. Chúng được dự đoán định dạng như sau:
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
Cái đầu tiên trong danh sách là một hình ảnh kích thước đầy đủ và những cái khác là hình ảnh thu nhỏ. (. Tức là một trong những hình ảnh thu nhỏ mặc định 1.jpg
, 2.jpg
, 3.jpg
) là:
https://img.youtube.com/vi/YOUTUBEVIDEOID/default.jpg
Đối với phiên bản chất lượng cao của hình thu nhỏ, hãy sử dụng URL tương tự như sau:
https://img.youtube.com/vi/YOUTUBEVIDEOID/hqdefault.jpg
Ngoài ra còn có một phiên bản chất lượng trung bình của hình thu nhỏ, sử dụng URL tương tự như HQ:
https://img.youtube.com/vi/YOUTUBEVIDEOID/mqdefault.jpg
Đối với phiên bản độ nét tiêu chuẩn của hình thu nhỏ, hãy sử dụng URL tương tự như sau:
https://img.youtube.com/vi/YOUTUBEVIDEOID/sddefault.jpg
Đối với phiên bản độ phân giải tối đa của hình thu nhỏ, hãy sử dụng URL tương tự như sau:
https://img.youtube.com/vi/YOUTUBEVIDEOID/maxresdefault.jpg
Tất cả các URL trên cũng có sẵn trên HTTP. Ngoài ra, tên máy chủ ngắn hơn một chút i3.ytimg.com
hoạt động thay cho img.youtube.com
các URL ví dụ ở trên.
Ngoài ra, bạn có thể sử dụng API dữ liệu YouTube (v3) để có được hình ảnh thu nhỏ.
Cách 1:
Bạn có thể tìm thấy tất cả thông tin cho một video YouTube có trang JSON thậm chí có "hình thu nhỏ_url", http://www.youtube.com/oembed?format=json&url= {URL video của bạn ở đây}
Giống như giao diện URL cuối cùng + mã kiểm tra 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
Để biết chi tiết, bạn cũng có thể xem Cách lấy hình thu nhỏ video YouTube bằng id hoặc https://www.youtube.com/watch?v=mXde7q59BI8 video hướng dẫn 1
Cách 2:
Sử dụng liên kết hình ảnh YouTube, https://img.youtube.com/vi/ "insert-youtube-video-id-here" /default.jpg
Cách 3:
Sử dụng mã nguồn trình duyệt để nhận hình thu nhỏ bằng liên kết URL video - truy cập mã nguồn video và tìm kiếm hình thu nhỏ. Bây giờ bạn có thể sử dụng URL này vào mã nguồn của mình:
{img src="https://img.youtube.com/vi/"insert-youtube-video-id-here"/default.jpg"}
Để biết chi tiết, bạn cũng có thể xem Cách lấy hình thu nhỏ video YouTube bằng id hoặc https://www.youtube.com/watch?v=9f6E8MeM6PI video hướng dẫn 2
https://www.youtube.com/watch?v=mXde7q59BI8
và https://www.youtube.com/watch?v=9f6E8MeM6PI
bị (có hiệu quả) bị phá vỡ.
Sử dụng img.youtube.com/vi/YouTubeID/ImageFormat.jpg
Ở đây các định dạng hình ảnh khác nhau như mặc định, hqdefault, maxresdefault.
Đây là giải pháp không yêu cầu API-key-side-side-side-side-client của tôi.
YouTube.parse('https://www.youtube.com/watch?v=P3DGwyl0mJQ').then(_ => console.log(_))
Mật mã:
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`
Tiện ích 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
})
}
Tiện ích 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
},
{})
}
Đây là một chức năng đơn giản mà tôi đã tạo để lấy hình thu nhỏ. Nó rất dễ hiểu và sử dụng.
$ link là liên kết YouTube được sao chép chính xác như trong trình duyệt, ví dụ: 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
nào?
Lưu mã này trong tệp .php trống và kiểm tra nó.
<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';
}
Cảm ơn.
public const string tubeThumb = "http://i.ytimg.com/vi/[id]/hqdefault.jpg";
vid.Thumbnail = tubeThumb.Replace("[id]", vid.VideoID);