Вопрос

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

Другие советы

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

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

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

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

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

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

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

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

Для примера вы можете посмотреть Примеры 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;

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

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

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

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

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

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

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

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

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

YouTube API версии 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

Использовать:

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

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

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

Я использовал миниатюры 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-запроса:

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

?>

Другой хорошей альтернативой было бы использование oВстроить API, который поддерживается 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
}

Прочтите документацию, чтобы узнать больше информация.

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

  • по умолчанию
  • hqdefault
  • mqdefault
  • SDdefault
  • Максресдефолт

 

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>&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';
    }

API данных YouTube

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

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

Вы можете получить идентификатор видео из 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

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

Способ 1:

Вы можете найти всю информацию для видео на YouTube на странице JSON, на которой есть даже "thumbnail_url"., http://www.youtube.com/oembed ?формат=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/"вставить-youtube-видео-id-сюда"/default.jpg

Способ 3:

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

Использование img.youtube.com/vi/YouTubeID/ImageFormat.jpg

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

Это мое решение только на стороне клиента, не требующее ключа API.

YouTube.parse('https://www.youtube.com/watch?v=P3DGwyl0mJQ').then(_ => console.log(_))

Код:

import { parseURL, parseQueryString } from './url'
import { getImageSize } from './image'

const PICTURE_SIZE_NAMES = [
    // 1280 x 720.
    // HD aspect ratio.
    'maxresdefault',
    // 629 x 472.
    // non-HD aspect ratio.
    'sddefault',
    // For really old videos not having `maxresdefault`/`sddefault`.
    'hqdefault'
]

// - Supported YouTube URL formats:
//   - http://www.youtube.com/watch?v=My2FRPA3Gf8
//   - http://youtu.be/My2FRPA3Gf8
export default
{
    parse: async function(url)
    {
        // Get video ID.
        let id
        const location = parseURL(url)
        if (location.hostname === 'www.youtube.com') {
            if (location.search) {
                const query = parseQueryString(location.search.slice('/'.length))
                id = query.v
            }
        } else if (location.hostname === 'youtu.be') {
            id = location.pathname.slice('/'.length)
        }

        if (id) {
            return {
                source: {
                    provider: 'YouTube',
                    id
                },
                picture: await this.getPicture(id)
            }
        }
    },

    getPicture: async (id) => {
        for (const sizeName of PICTURE_SIZE_NAMES) {
            try {
                const url = getPictureSizeURL(id, sizeName)
                return {
                    type: 'image/jpeg',
                    sizes: [{
                        url,
                        ...(await getImageSize(url))
                    }]
                }
            } catch (error) {
                console.error(error)
            }
        }
        throw new Error(`No picture found for YouTube video ${id}`)
    },

    getEmbeddedVideoURL(id, options = {}) {
        return `https://www.youtube.com/embed/${id}`
    }
}

const getPictureSizeURL = (id, sizeName) => `https://img.youtube.com/vi/${id}/${sizeName}.jpg`

Полезность image.js:

// Gets image size.
// Returns a `Promise`.
function getImageSize(url)
{
    return new Promise((resolve, reject) =>
    {
        const image = new Image()
        image.onload = () => resolve({ width: image.width, height: image.height })
        image.onerror = reject
        image.src = url
    })
}

Полезность url.js:

// Only on client side.
export function parseURL(url)
{
    const link = document.createElement('a')
    link.href = url
    return link
}

export function parseQueryString(queryString)
{
    return queryString.split('&').reduce((query, part) =>
    {
        const [key, value] = part.split('=')
        query[decodeURIComponent(key)] = decodeURIComponent(value)
        return query
    },
    {})
}

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

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

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

Сохраните этот код в пустой файл .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);
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top