Как получить миниатюру видео YouTube из API YouTube? - PullRequest
2210 голосов
/ 15 января 2010

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

Ответы [ 31 ]

17 голосов
/ 02 декабря 2015

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
15 голосов
/ 14 марта 2014

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
14 голосов
/ 03 апреля 2014

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

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

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

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

13 голосов
/ 06 мая 2015

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

12 голосов
/ 08 мая 2016

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

Используя 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 голосов
/ 21 января 2014

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

12 голосов
/ 08 марта 2017

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

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

10 голосов
/ 24 сентября 2015

простая функция 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;}
    
9 голосов
/ 18 мая 2016

Если вы используете публичный 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';
}
8 голосов
/ 22 марта 2017

API данных YouTube

YouTube Предоставляет нам 4 сгенерированных изображения для каждого видео через 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 на Консоль API Google .
  2. Согласно справочнику по миниатюрам YouTube в документации API , вам необходимо получить доступ к ресурсам в snippet.thumbnails.
  3. В соответствии с этим вам нужно сформулировать ваш URL следующим образом -

    www.googleapis.com / YouTube / v3 / видео? Часть = фрагмент & ID = yourVideoId & ключ = yourApiKey

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

...