Если у меня есть URL-адрес видео YouTube, есть ли способ использовать PHP и cURL для получения соответствующего эскиза из API YouTube?
31 ответ
Каждое видео 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) для получения уменьшенных изображений.
http://www.img.youtube.com
, только http://img.youtube.com
sddefault.jpg
и maxresdefault.jpg
больше не работают
sddefault
и maxresdefault
не всегда доступны. Подходит ли mqdefault
для всех видео? Какой URL-адрес лучше всего для миниатюры без двух черных рамок (вверху и внизу)?
maxres2.jpg
, hq2.jpg
, hq3.jpg
и т. Д.
YouTube API версии 3 запускается через 2 минуты
Если все, что вам нужно, это выполнить поиск на YouTube и получить связанные свойства:
Получите общедоступный API - Эта ссылка дает хорошее направление
Используйте строку запроса ниже. Например, поисковый запрос (обозначенный q = ) в строке URL - это stackoverflow . Затем YouTube отправит вам ответ JSON, в котором вы сможете проанализировать значок, фрагмент, автора и т. Д.
Другой хорошей альтернативой может быть использование API oEmbed, поддерживаемого YouTube.
Вы просто добавляете URL-адрес YouTube к URL-адресу oEmbed, и вы получаете 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 запрещает включать изображения прямо со своего сервера.
Вы можете получить идентификатор видео из 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/$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://youtube-thumbnail-tool.com
Я нашел этот отличный инструмент, который позволяет создавать изображение с помощью кнопки воспроизведения YouTube, расположенной над изображением:
- Установлено на сервере для написания сценариев: https://github.com/halgatewood/youtube-thumbnail-enhancer < / а>
Просто чтобы добавить / расширить представленные решения, я считаю необходимым отметить, что, поскольку у меня сама была эта проблема, на самом деле можно получить несколько видеороликов 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);
?>
API данных YouTube
YouTube предоставляет нам четыре сгенерированных изображения для каждого видео через Data API (v3), например,
Получение доступа к изображениям через API
- Сначала получите свой открытый ключ API на консоли Google API.
- Согласно ссылке на значок YouTube в документации API, вам необходимо получить доступ к ресурсам на snippet.thumbnails.
В соответствии с этим вам нужно сформулировать свой URL следующим образом:
www.googleapis.com/youtube/v3/videos?part=snippet&id=`yourVideoId`&key=`yourApiKey`
Теперь измените свой идентификатор видео и ключ API на соответствующий идентификатор видео и ключ API, и его ответом будет вывод JSON с четырьмя ссылками в эскизах переменной фрагмента (если все они доступны).
Простая функция 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;}
Если вы используете общедоступный 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
https://i.ytimg.com/vi/<--Video ID-->/default.jpg
Изображение Размер Вес 120 пикселей Высота 90 пикселей
https://i.ytimg.com/vi/<--Video ID-->/mqdefault.jpg
Изображение Размер Вес 320 пикселей Высота 180 пикселей
https://i.ytimg.com/vi/<--Video ID-->/hqdefault.jpg
Изображение Размер Вес 480 пикселей Высота 360 пикселей
https://i.ytimg.com/vi/<--Video ID-->/sddefault.jpg
Изображение Размер Вес 640 пикселей Высота 480 пикселей
https://i.ytimg.com/vi/<--Video ID-->/maxresdefault.jpg
Изображение Размер Вес 1280 пикселей Высота 720 пикселей
Метод 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 эскиз с идентификатором или видеоурок 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 с использованием идентификатора или https://www.youtube.com/watch?v=9f6E8MeM6PI видеоурок 2
https://www.youtube.com/watch?v=mXde7q59BI8
и https://www.youtube.com/watch?v=9f6E8MeM6PI
(эффективно) не работают.
Вот главный ответ, оптимизированный для использования вручную. Маркер идентификатора видео без разделителей позволяет выбрать двойным щелчком.
Каждое видео 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) для получения миниатюрных изображений.
Это мое решение, предназначенное только для клиентской стороны и не требующее ключа 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
},
{})
}
Сохраните этот код в файле empty.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';
}
Гарантированно существуют некоторые эскизы:
Width | Height | URL
------|--------|----
120 | 90 | https://i.ytimg.com/vi/<VIDEO ID>/1.jpg
120 | 90 | https://i.ytimg.com/vi/<VIDEO ID>/2.jpg
120 | 90 | https://i.ytimg.com/vi/<VIDEO ID>/3.jpg
120 | 90 | https://i.ytimg.com/vi/<VIDEO ID>/default.jpg
320 | 180 | https://i.ytimg.com/vi/<VIDEO ID>/mq1.jpg
320 | 180 | https://i.ytimg.com/vi/<VIDEO ID>/mq2.jpg
320 | 180 | https://i.ytimg.com/vi/<VIDEO ID>/mq3.jpg
320 | 180 | https://i.ytimg.com/vi/<VIDEO ID>/mqdefault.jpg
480 | 360 | https://i.ytimg.com/vi/<VIDEO ID>/0.jpg
480 | 360 | https://i.ytimg.com/vi/<VIDEO ID>/hq1.jpg
480 | 360 | https://i.ytimg.com/vi/<VIDEO ID>/hq2.jpg
480 | 360 | https://i.ytimg.com/vi/<VIDEO ID>/hq3.jpg
480 | 360 | https://i.ytimg.com/vi/<VIDEO ID>/hqdefault.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');
Вы можете использовать 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, которые вы планируете сделать. Однако несколько тысяч запросов в день бесплатны.
jsonc
вместо json
для getJSON. Это не удается из-за неправильной структуры JSON.
jsonc
. Примеры jQuery и PHP ДОЛЖНЫ использовать json
. И я обновил код, чтобы он соответствовал новой структуре JSON. Я использую код прямо сейчас, и он работает в прямом эфире. поэтому не говорите, что это не работает, не прочитав изменения. Спасибо!
v=2
) отвечает за изменения API.
То, что сказал Асаф, верно. Однако не каждое видео YouTube содержит все девять эскизов. Кроме того, размеры изображений миниатюр зависят от видео (числа ниже основаны на одном). Гарантированно существуют некоторые эскизы:
Width | Height | URL
------|--------|----
120 | 90 | https://i.ytimg.com/vi/<VIDEO ID>/1.jpg
120 | 90 | https://i.ytimg.com/vi/<VIDEO ID>/2.jpg
120 | 90 | https://i.ytimg.com/vi/<VIDEO ID>/3.jpg
120 | 90 | https://i.ytimg.com/vi/<VIDEO ID>/default.jpg
320 | 180 | https://i.ytimg.com/vi/<VIDEO ID>/mq1.jpg
320 | 180 | https://i.ytimg.com/vi/<VIDEO ID>/mq2.jpg
320 | 180 | https://i.ytimg.com/vi/<VIDEO ID>/mq3.jpg
320 | 180 | https://i.ytimg.com/vi/<VIDEO ID>/mqdefault.jpg
480 | 360 | https://i.ytimg.com/vi/<VIDEO ID>/0.jpg
480 | 360 | https://i.ytimg.com/vi/<VIDEO ID>/hq1.jpg
480 | 360 | https://i.ytimg.com/vi/<VIDEO ID>/hq2.jpg
480 | 360 | https://i.ytimg.com/vi/<VIDEO ID>/hq3.jpg
480 | 360 | https://i.ytimg.com/vi/<VIDEO ID>/hqdefault.jpg
Кроме того, некоторые другие эскизы могут существовать, а могут и не существовать. Их присутствие, вероятно, зависит от качества видео.
Width | Height | URL
------|--------|----
640 | 480 | https://i.ytimg.com/vi/<VIDEO ID>/sd1.jpg
640 | 480 | https://i.ytimg.com/vi/<VIDEO ID>/sd2.jpg
640 | 480 | https://i.ytimg.com/vi/<VIDEO ID>/sd3.jpg
640 | 480 | https://i.ytimg.com/vi/<VIDEO ID>/sddefault.jpg
1280 | 720 | https://i.ytimg.com/vi/<VIDEO ID>/hq720.jpg
1920 | 1080 | https://i.ytimg.com/vi/<VIDEO ID>/maxresdefault.jpg
Вы можете найти сценарии JavaScript и PHP для получения эскизов и другой информации YouTube в:
- Как получить информацию о видео YouTube с помощью PHP
- Получение сведений о видео YouTube с помощью JavaScript - JSON и API v2
Вы также можете использовать инструмент YouTube Video Information Generator, чтобы получить все информацию о видео YouTube, отправив URL-адрес или идентификатор видео.
mqdefault.jpg
должны быть 320x180
В 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 , Я не уверен насчет соотношения сторон.
sddefault
без черных полос? img.youtube.com/vi_webp/dQw4w9WgXcQ/sddefault.webp сохраняет возвращаемое изображение с черными полосами.
Вы можете получить запись видео, которая содержит URL-адрес видео эскиз. В ссылке есть пример кода. Или, если вы хотите проанализировать XML, есть информация здесь. В возвращенном XML есть элемент media:thumbnail
, который содержит URL-адрес эскиза.
В API данных YouTube v3 вы можете получить эскизы видео с помощью videos-> list. Из snippet.thumbnails. (Ключ) , вы можете выбрать эскиз по умолчанию, среднего или высокого разрешения и получить его ширину, высоту и URL-адрес.
Вы также можете обновить эскизы с помощью функции эскизов-> установить.
В качестве примеров вы можете ознакомиться с образцами API YouTube < / a> проект. ( PHP.)
// 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 обслуживает эскизы с двух серверов. Вам просто нужно заменить
https://img.youtube.com https://i.ytimg.com
Примеры - с сервером https://i.ytimg.com только потому, что он короче, без какой-либо другой конкретной причины. Вы можете использовать оба.
Миниатюра фона проигрывателя (480x360):
WebP
https://i.ytimg.com/vi_webp/<YouTube_Video_ID_HERE>/0.webp
JPG
https://i.ytimg.com/vi/<YouTube_Video_ID_HERE>/0.jpg
Эскизы видеокадров (120x90)
WebP:
Start: https://i.ytimg.com/vi_webp/<YouTube_Video_ID_HERE>/1.webp
Middle: https://i.ytimg.com/vi_webp/<YouTube_Video_ID_HERE>/2.webp
End: https://i.ytimg.com/vi_webp/<YouTube_Video_ID_HERE>/3.webp
JPG:
Start: https://i.ytimg.com/vi/<YouTube_Video_ID_HERE>/1.jpg
Middle: https://i.ytimg.com/vi/<YouTube_Video_ID_HERE>/2.jpg
End: https://i.ytimg.com/vi/<YouTube_Video_ID_HERE>/3.jpg
Уменьшенное изображение самого низкого качества (120 x 90)
WebP
https://i.ytimg.com/vi_webp/<YouTube_Video_ID_HERE>/default.webp
JPG
https://i.ytimg.com/vi/<YouTube_Video_ID_HERE>/default.jpg
Миниатюра среднего качества (320 x 180)
WebP
https://i.ytimg.com/vi_webp/<YouTube_Video_ID_HERE>/mqdefault.webp
JPG
https://i.ytimg.com/vi/<YouTube_Video_ID_HERE>/mqdefault.jpg
Миниатюра в высоком качестве (480x360)
WebP
https://i.ytimg.com/vi_webp/<YouTube_Video_ID_HERE>/hqdefault.webp
JPG
https://i.ytimg.com/vi/<YouTube_Video_ID_HERE>/hqdefault.jpg
Миниатюра стандартного качества (640 x 480)
WebP
https://i.ytimg.com/vi_webp/<YouTube_Video_ID_HERE>/sddefault.webp
JPG
https://i.ytimg.com/vi/<YouTube_Video_ID_HERE>/sddefault.jpg
Немасштабированное разрешение миниатюр
WebP
https://i.ytimg.com/vi_webp/<YouTube_Video_ID_HERE>/maxresdefault.webp
JPG
https://i.ytimg.com/vi/<YouTube_Video_ID_HERE>/maxresdefault.jpg
Вот простая функция, которую я создал для получения эскизов. Его легко понять и использовать.
$ 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
?
Я сделал функцию, чтобы получать только существующие изображения с 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;
}
Используйте img.youtube.com/vi/YouTubeID/ImageFormat.jpg
Здесь форматы изображений разные, такие как default, hqdefault, maxresdefault.
Похожие вопросы
Связанные вопросы
Новые вопросы
php
PHP — это широко используемый язык сценариев общего назначения с открытым исходным кодом, мультипарадигмальный, динамически типизированный и интерпретируемый, изначально разработанный для веб-разработки на стороне сервера. Используйте этот тег для вопросов о программировании на языке PHP.