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

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

Ответы

Ответ 1

Каждое видео на 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, похожий на 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) для получения миниатюр изображений.

Ответ 2

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

Источник статьи.

Ответ 3

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

Ответ 4

В 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-адреса не блокируются брандмауэрами.

Ответ 5

Если вы хотите получить наибольшее изображение с 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);

Ответ 6

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

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

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

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

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

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

Ответ 7

Я сделал функцию только для извлечения существующих изображений из 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;
}

Ответ 8

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

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

В качестве примера вы можете проверить проект PHP-версии.)

Ответ 9

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

Ответ 10

// 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;

Ответ 11

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

Ответ 12

YouTube API версии 3 будет запущен через 2 минуты

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

  1. Получить публичный API - эта ссылка дает хорошее направление

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

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

Ответ 13

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

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

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

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

Ответ 14

Я использовал эскизы 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 запрещает включать изображения непосредственно со своего сервера.

Ответ 15

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

Ответ 16

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

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

?>

Ответ 17

Еще одна хорошая альтернатива - использование 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
}

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

Ответ 18

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

  • дефолт
  • 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;}

Ответ 19

Если вы используете открытый 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';
    }

Ответ 20

Вы можете получить идентификатор видео из 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://tools.tutsplanet.com/index.php/get-youtube-video-thumbnails

Ответ 21

API данных YouTube

YouTube предоставляет нам четыре сгенерированных изображения для каждого видео через 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'
    

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

Ответ 22

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

Ответ 23

    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');

Ответ 24

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

Каждое видео на 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 Одно из 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) для получения миниатюр изображений.

Ответ 25

Способ 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, https://img.youtube.com/vi/ "insert-youtube-video-id-here"/default.jpg

Способ 3:

Использование исходного кода браузера для получения миниатюр с помощью URL-ссылки видео -go на исходный код видео и поиска thumbnailurl. Теперь вы можете использовать этот 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

Ответ 26

Используйте img.youtube.com/vi/YouTubeID/ImageFormat.jpg

Здесь форматы изображения отличаются как default, hqdefault, maxresdefault.

Ответ 27

Вот простая функция, которую я создал для получения миниатюр. Это легко понять и использовать.

$ 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;
}

Ответ 28

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

Ответ 29

Сохраните этот код в пустом .php файле и протестируйте его.

<img src="<?php echo youtube_img_src('9bZkp7q19f0', 'high');?>" />
<?php
// Get a YOUTUBE video thumb image 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';
}

Спасибо.

Ответ 30

public const string tubeThumb = "http://i.ytimg.com/vi/[id]/hqdefault.jpg";
vid.Thumbnail = tubeThumb.Replace("[id]", vid.VideoID);