Якщо у мене є URL-адреса відео YouTube, чи є спосіб використовувати PHP та CURL, щоб отримати пов'язаний мініатюру з API YouTube?
Якщо у мене є URL-адреса відео YouTube, чи є спосіб використовувати PHP та CURL, щоб отримати пов'язаний мініатюру з API YouTube?
Відповіді:
Кожне відео YouTube має чотири створених зображення. Вони передбачувано форматуються наступним чином:
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
Існує також середня якість версії мініатюри з використанням 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
наведених вище прикладів.
Крім того, ви можете використовувати API даних YouTube (v3) для отримання мініатюрних зображень.
http://www.img.youtube.com
лишеhttp://img.youtube.com
mqdefault
- 16: 9
sddefault
і maxresdefault
НЕ ЗАВЖДИ у деяких відео є їх хоч ....
Ви можете використовувати API даних YouTube для отримання мініатюр відео, підписів, опису, рейтингу, статистики та іншого. Версія 3 API вимагає ключа *. Отримайте ключ та створіть відео: запит на список :
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
getJSON. Це не вдається через вашу неправильну структуру JSON.
jsonc
. Приклади jQuery та PHP ОБОВ'ЯЗКОВО використовувати json
. І я оновив код, щоб відповідати новій структурі JSON. Я зараз використовую код, і він працює ЖИВО. тому не кажіть, що не працює, не читаючи зміни. Дякую!
v=2
) бере участь у змінах API.
Те, що сказав Асаф, є правильним. Однак не кожне відео YouTube містить усі дев'ять мініатюр. Також розміри зображень мініатюр залежать від відео (цифри нижче засновані на одному).
Є гарантовано існування семи мініатюр:
| 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 |
Ви можете знайти сценарії JavaScript та PHP для отримання мініатюр та іншої інформації YouTube у:
Ви також можете скористатися інструментом генератора інформації про відео YouTube, щоб отримати всю інформацію про відео YouTube, подавши URL-адресу чи ідентифікатор відео.
У 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-адреси не блокуються між брандмауерами.
Якщо ви хочете найбільше зображення з 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;
}
У YouTube Data API v3 ви можете отримати ескізи відео за допомогою функції відео- > список . З snippet.thumbnails. (Key) ви можете вибрати мініатюру середньої або високої роздільної здатності та отримати її ширину, висоту та URL-адресу.
Ви також можете оновити мініатюри за допомогою функцій мініатюр-> встановити .
Наприклад, ви можете ознайомитися з проектом API зразків API YouTube . ( PHP .)
Ви можете отримати відеозапис, який містить URL до ескізу відео. Приклад коду є у посиланні. Або, якщо ви хочете , щоб розібрати XML, є інформація тут . У поверненому XML є media:thumbnail
елемент, який містить URL-адресу мініатюри.
// 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;
Google належить 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 - це посилання дає хороші вказівки
Використовуйте нижче рядок запиту. Наприклад, пошуковий запит (позначений q = ) у рядку URL є stackoverflow . Потім YouTube надішле вам відповідь JSON, де ви зможете розібратися у мініатюрі, фрагменті, авторі тощо.
Ще однією хорошою альтернативою було б використання API oEmbed, який підтримується YouTube.
Ви просто додаєте свою URL-адресу YouTube до URL-адреси омеджену, і ви отримаєте JSON, включаючи ескіз та HTML-код для вбудовування.
Приклад:
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. Виявивши характеристики, ви можете отримати відео вибраної категорії. Після цього ви можете знайти вибрані відеозображення, використовуючи відповідь Асафа .
Спробуйте вказаний вище підхід, і ви зможете проаналізувати все з API YouTube .
Я використовував ескізи 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 забороняє включати зображення безпосередньо зі свого сервера.
Я знайшов цей чудовий інструмент, який дозволяє створювати зображення за допомогою кнопки відтворення YouTube, розміщеної над зображенням:
Просто для додання / розширення заданих рішень, я вважаю за необхідне зазначити, що, як у мене була сама проблема, можна насправді захопити декілька вмісту відео YouTube, у цьому випадку ескізи, з одним запитом HTTP:
Використовуючи Відпочиваючий клієнт, у цьому випадку 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 надає нам чотири згенерованих зображення для кожного відео через API даних (v3), наприклад,
Згідно з цим, вам потрібно сформулювати свою URL-адресу так -
www.googleapis.com/youtube/v3/videos?part=snippet&id=`yourVideoId`&key=`yourApiKey`
Тепер змініть свій ідентифікатор відео та ключ API на відповідний відео-ідентифікатор та api-ключ, і його відповідь буде результатом JSON, який надасть вам чотири посилання на ескізи змінної фрагмента (якщо всі вони доступні).
Ви можете отримати ідентифікатор відео з YouTube відео URL з допомогою parse_url , parse_str , а потім вставте і прогнозує адреса для зображень. Дякуємо 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";
Цей інструмент можна використовувати для створення мініатюр YouTube
https://tools.tutsplanet.com/index.php/get-youtube-video-thumbnails
Проста функція PHP, яку я створив для мініатюри YouTube, і такі типи є
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';
}
Я думаю, що вони є великою відповіддю на мініатюру, але я хочу додати ще деякі URL-адреси, щоб отримати мініатюру YouTube дуже легко. Я просто беру частину тексту з відповіді Асафа. Ось кілька URL-адрес для отримання мініатюр YouTube:
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');
Ось найкраща відповідь, оптимізована для ручного використання. Маркер відео-ідентифікатора без роздільників дозволяє вибрати його подвійним клацанням.
Кожне відео YouTube має чотири створених зображення. Вони передбачувано форматуються наступним чином:
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
Існує також середня якість версії мініатюри з використанням 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
наведених вище прикладів.
Крім того, ви можете використовувати API даних YouTube (v3) для отримання мініатюрних зображень.
Спосіб 1:
Ви можете знайти всю інформацію для відео на YouTube зі сторінкою JSON, на якій розміщено навіть "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
Докладніше ви також можете побачити Як отримати мініатюру відео YouTube за допомогою id або https://www.youtube.com/watch?v=mXde7q59BI8 відео-підручник 1
Спосіб 2:
Використовуючи посилання на зображення YouTube, https://img.youtube.com/vi/ "insert-youtube-video-id-here" /default.jpg
Спосіб 3:
Використання вихідного коду браузера для отримання мініатюри за допомогою посилання URL-адреси відео -на вихідний код відео та пошук мініатюр. Тепер ви можете використовувати цю URL-адресу у своєму вихідному коді:
{img src="https://img.youtube.com/vi/"insert-youtube-video-id-here"/default.jpg"}
Докладніше ви також можете дізнатися Як отримати мініатюру відео YouTube за допомогою id або https://www.youtube.com/watch?v=9f6E8MeM6PI відео-підручник 2
https://www.youtube.com/watch?v=mXde7q59BI8
і https://www.youtube.com/watch?v=9f6E8MeM6PI
(ефективно) порушені.
Це рішення, яке не потрібне для мого клієнта.
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';
}
Дякую.
public const string tubeThumb = "http://i.ytimg.com/vi/[id]/hqdefault.jpg";
vid.Thumbnail = tubeThumb.Replace("[id]", vid.VideoID);