it-swarm.com.ru

Как получить миниатюру видео YouTube из API YouTube?

Если у меня есть URL-адрес видео на YouTube, есть ли способ использовать PHP и ​​cURL для получения соответствующего эскиза из API YouTube?

2202
Ryan

Каждое видео на 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

Существует также версия эскиза среднего качества, использующая URL, похожий на HQ:

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-адресах.

Кроме того, вы можете использовать API данных YouTube (v3) для получения миниатюр изображений.

4245
Asaph

Вы можете использовать API данных YouTube для получения миниатюр видео, подписи, описания, рейтинга, статистики и многого другого. 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, которые вы планируете сделать. Тем не менее, несколько миллионов запросов в день бесплатны.

Исходная статья .

375
Salman A

То, что сказал Асаф, верно. Однако не каждое видео на 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-адрес или идентификатор видео.

223
AGMG

В YouTube API V3 мы также можем использовать эти URL-адреса для получения миниатюр ... Они классифицируются по качеству.

https://i1.ytimg.com/vi/<insert-youtube-video-id-here>/default.jpg -   default
https://i1.ytimg.com/vi/<insert-youtube-video-id-here>/mqdefault.jpg - medium 
https://i1.ytimg.com/vi/<insert-youtube-video-id-here>/hqdefault.jpg - high
https://i1.ytimg.com/vi/<insert-youtube-video-id-here>/sddefault.jpg - standard

И для максимального разрешения ..

https://i1.ytimg.com/vi/<insert-youtube-video-id-here>/maxresdefault.jpg

Одним из преимуществ этих URL-адресов перед URL-адресами в первом ответе является то, что эти URL-адреса не блокируются брандмауэрами.

70
Naren

Если вам нужно самое большое изображение с 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);
50
PoorBoy

Если вы хотите избавиться от "черных полос" и сделать это так, как это делает YouTube, вы можете использовать:

https://i.ytimg.com/vi_webp/<video id>/mqdefault.webp

И если вы не можете использовать расширение .webp, вы можете сделать это так:

https://i.ytimg.com/vi/<video id>/mqdefault.jpg

Кроме того, если вам нужна немасштабированная версия, используйте maxresdefault вместо mqdefault.

Примечание: я не уверен насчет соотношения сторон, если вы планируете использовать maxresdefault.

42
LuTz

Я сделал функцию только для извлечения существующих изображений с YouTube

function youtube_image($id) {
    $resolution = array (
        'maxresdefault',
        'sddefault',
        'mqdefault',
        'hqdefault',
        'default'
    );

    for ($x = 0; $x < sizeof($resolution); $x++) {
        $url = '//img.youtube.com/vi/' . $id . '/' . $resolution[$x] . '.jpg';
        if (get_headers($url)[0] == 'HTTP/1.0 200 OK') {
            break;
        }
    }
    return $url;
}
32
Henrik Albrechtsson

В API данных YouTube v вы можете получить эскизы видео с помощью функции videos-> list . Из snippet.thumbnails. (Key) вы можете выбрать миниатюру по умолчанию, среднее или высокое разрешение и получить ее ширину, высоту и URL.

Вы также можете обновить эскизы с помощью функции thumbnails-> set .

Например, вы можете проверить проект Примеры API YouTube . ( PHP .)

30
Ibrahim Ulukaya

Вы можете получить Запись видео , которая содержит URL-адрес миниатюры видео. Пример кода в ссылке. Или, если вы хотите разобрать XML, есть информация здесь . Возвращенный XML имеет элемент media:thumbnail, который содержит URL-адрес миниатюры.

28
keyboardP
// 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;
23
Mahendra Tyagi

YouTube принадлежит Google, и Google любит иметь разумное количество изображений для экранов разного размера, поэтому его изображения хранятся в разных размерах, вот пример того, как ваш эскиз понравится ему.

Миниатюра низкого качества:

http://img.youtube.com/vi/<YouTube_Video_ID_HERE>/sddefault.jpg

Миниатюра среднего качества:

http://img.youtube.com/vi/<YouTube_Video_ID_HERE>/mqdefault.jpg

Высокое качество миниатюры:

http://img.youtube.com/vi/<YouTube_Video_ID_HERE>/hqdefault.jpg

Максимальное качество миниатюры:

http://img.youtube.com/vi/<YouTube_Video_ID_HERE>/maxresdefault.jpg
17
life evader

YOUTUBE ВЕРСИЯ API 3 ** ВВЕРХ И РАБОТАЕТ В 2 МИНУТАХ **

Если все, что вы хотите сделать, это поиск на YouTube и получить соответствующие свойства:

  1. Получить ПУБЛИЧНЫЙ API - Эта ссылка дает хорошее направление

2. Используйте ниже строку запроса. Поисковый запрос (обозначенный q = ) в строке URL является stackoverflow для примера. Затем YouTube отправит вам ответ в формате json, где вы сможете проанализировать миниатюру, фрагмент, автора и т.д.

https://www.googleapis.com/youtube/v3/search?part=id%2Csnippet&maxResults=50&q=stackoverflow&key=YOUR_API_KEY_HERE
15
Chris

Использование:

https://www.googleapis.com/youtube/v3/videoCategories?part=snippet,id&maxResults=100&regionCode=us&key=**Your YouTube ID**

Выше ссылка. Используя это, вы можете найти характеристики YouTube видео. Найдя характеристики, вы можете получить видеоролики выбранной категории. После этого вы можете найти выбранные видеоизображения, используя ответ Асафа.

Попробуйте описанный выше подход, и вы сможете проанализировать все с YouTube API .

14
Nikh1414

Я использовал эскизы YouTube следующим образом:

$url = 'http://img.youtube.com/vi/' . $youtubeId . '/0.jpg';
$img = dirname(__FILE__) . '/youtubeThumbnail_'  . $youtubeId . '.jpg';
file_put_contents($img, file_get_contents($url));

Помните, YouTube запрещает включать изображения непосредственно со своего сервера

13
blacksunshineCoding

Еще одна хорошая альтернатива - использование API oEmbed , который поддерживается YouTube.

Вы просто добавляете свой URL-адрес YouTube в URL-адрес oEmbed, и вы получите JSON, включая эскиз и HTML-код для встраивания.

Пример:

http://www.youtube.com/oembed?format=json&url=http%3A//youtube.com/watch%3Fv%3DDLzxrzFCyOs

Даст вам:

{
  thumbnail_url: "https://i.ytimg.com/vi/DLzxrzFCyOs/hqdefault.jpg",
  width: 459,
  author_name: "AllKindsOfStuff",
  version: "1.0",
  author_url: "https://www.youtube.com/channel/UCLNd5EtH77IyN1frExzwPRQ",
  thumbnail_width: 480,
  type: "video",
  provider_url: "https://www.youtube.com/",
  html: "<iframe width="459" height="344" src="https://www.youtube.com/embed/DLzxrzFCyOs?feature=oembed" frameborder="0" allowfullscreen></iframe>",
  title: "Some title bla bla foo bar",
  thumbnail_height: 360,
  provider_name: "YouTube",
  height: 344
}

Прочитайте Документацию для получения дополнительной информации Информация .

12
Andresch Serj

Просто чтобы добавить/расширить представленные решения, я считаю необходимым отметить, что, поскольку я сам столкнулся с этой проблемой, можно фактически получить несколько видеоклипов YouTube, в данном случае миниатюры, с помощью одного HTTP-запроса:

Используя 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);

?>
12
Hlawuleka MAS

Я нашел этот отличный инструмент, который позволяет создавать изображение с помощью кнопки воспроизведения YouTube, размещенной над изображением:

12
Scott Joudry

простая функция PHP, которую я создал для эскиза YouTube и типы

  • default
  • hqdefault
  • mqdefault
  • sddefault
  • 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;}
    
10
Arun Yokesh

Если вы используете публичный API, лучший способ сделать это - использовать операторы if.

Если видео является общедоступным или не включено в список, вы устанавливаете миниатюру с помощью метода url. Если видео является частным, вы используете API, чтобы получить эскиз.

<?php
if($video_status == 'unlisted'){
$video_thumbnail = 'http://img.youtube.com/vi/'.$video_url.'/mqdefault.jpg';
$video_status = '<i class="fa fa-lock"></i>&nbsp;Unlisted';
}
elseif($video_status == 'public'){
$video_thumbnail = 'http://img.youtube.com/vi/'.$video_url.'/mqdefault.jpg';
$video_status = '<i class="fa fa-eye"></i>&nbsp;Public';
}
elseif($video_status == 'private'){
$video_thumbnail = $playlistItem['snippet']['thumbnails']['maxres']['url'];
$video_status = '<i class="fa fa-lock"></i>&nbsp;Private';
}
9
Harvey Connor

API данных YouTube

YouTube предоставляет нам 4 сгенерированных изображения для каждого видео через Data API (v3), например:

  1. https://i.ytimg.com/vi/V_zwalcR8DU/maxresdefault.jpg

  2. https://i.ytimg.com/vi/V_zwalcR8DU/sddefault.jpg

  3. https://i.ytimg.com/vi/V_zwalcR8DU/hqdefault.jpg

  4. https://i.ytimg.com/vi/V_zwalcR8DU/mqdefault.jpg

Получение доступа к изображениям через API

  1. Сначала получите свой открытый ключ API на Консоль Google API .
  2. Согласно Справочнику по миниатюрам YouTube в Документация API , Вам необходимо получить доступ к ресурсам в snippet.thumbnails.
  3. В соответствии с этим вам нужно сформулировать ваш URL следующим образом:

    www.googleapis.com/youtube/v3/videos?part=snippet&id=yourVideoId&key=yourApiKey

Теперь замените yourVideoId и yourApiKey на ваш соответствующий идентификатор видео и api-ключ, и его ответом будет вывод JSON, предоставляющий вам 4 ссылки в миниатюрах переменной сниппета (если все они доступны).

8
Daksh Miglani

Вы можете получить идентификатор видео из URL-адреса видео YouTube, используя parse_url , parse_str , а затем вставить в прогнозируемые 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/<?php print $ytID?>/maxresdefault.jpg";
print "https://img.youtube.com/vi/<?php print $ytID?>/mqdefault.jpg";
print "https://img.youtube.com/vi/<?php print $ytID?>/hqdefault.jpg";
print "https://img.youtube.com/vi/<?php print $ytID?>/sddefault.jpg";
print "https://img.youtube.com/vi/<?php print $ytID?>/default.jpg";

Вы можете использовать этот инструмент для создания миниатюр YouTube

https://codeatools.com/get-youtube-video-thumbnails

7
Rinto George

Я думаю, что это много ответов для миниатюр, но я хочу добавить несколько других 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, похожий на HQ:

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

Надеюсь, это поможет кому-то в ближайшем будущем.

6
Kumar
    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');
5
Nimesh Vagadiya

Топ ответ оптимизирован для ручного использования. Идентификатор видео-токена без разделителей позволяет выбирать двойным щелчком мыши.

Каждое видео на 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

Существует также версия эскиза среднего качества, использующая URL, похожий на HQ:

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-адресах.

Кроме того, вы можете использовать API данных YouTube (v3) для получения миниатюр изображений.

3
Lycan

Способ 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

подробнее вы также можете посмотреть https://www.youtube.com/watch?v=mXde7q59BI8 видеоурок 1

Метод 2: с помощью ссылки на YouTube img https://img.youtube.com/vi/ "insert-youtube-video -id-сюда "/default.jpg

Метод 3: использование исходного кода браузера для получения миниатюр с помощью ссылки на URL видео -перейти к исходному коду видео и поиску thumbnailurl Теперь вы можете использовать этот URL в своем Код sorce: {img src = "https://img.youtube.com/vi/" insert-youtube-video-id-here "/default.jpg"}

подробнее вы также можете посмотреть http://hzonesp.com/php/get-youtube-video-thumbnail-using-id/ или https://www.youtube.com/ смотреть? v = 9f6E8MeM6PI видеоурок 2

2
Hassan Saeed

Используйте это - img.youtube.com/vi/YouTubeID/ImageFormat.jpg здесь форматы изображения отличаются как стандартные, hqdefault, maxresdefault.

1
shpwebhost

вот простая функция, которую я создал для получения миниатюр, ее легко понять и использовать. $ link - это ссылка на YouTube, скопированная точно так же, как и в браузере, например https://www.youtube.com/watch?v=BQ0mxQXmLsk

    function get_youtube_thumb($link){
    $new=str_replace('https://www.youtube.com/watch?v=','', $link);
    $thumbnail='https://img.youtube.com/vi/'.$new.'/0.jpg';
    return $thumbnail;
}
0
Sodruldeen Mustapha

Это мое клиентское решение, не требующее ключа 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
    },
    {})
}
0
asdfasdfads