Питання Як отримати ескіз відео YouTube із YouTube API?


Якщо у мене є відео URL YouTube, чи є спосіб використовувати PHP і локон, щоб отримати відповідну мініатюру з API YouTube?


2025
2018-01-14 23:34


походження


Ось декілька PHP-функцій, які я створив, щоб отримати найкращий мініатюру, доступний за допомогою методу URL без пінгування API, на основі багатьох хороших відповідей на цій сторінці: gist.github.com/squarecandy/30ec9f6779c0e8cdf12e337c665d96c5 - squarecandy


Відповіді:


У кожному відео 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 в наведених вище прикладах.

Крім того, ви можете скористатись API даних YouTube (v3) щоб отримати ескізи.


3883
2018-01-14 23:40



Як отримати зображення високої чіткості (якщо є)? - trusktr
Тільки у випадку, якщо хтось інший робить цю тупу помилку - не можна використовувати http://www.img.youtube.com, лише http://img.youtube.com - Ciaran Phillips
@ NickG mqdefault є 16: 9 - tomtastico
це десь офіційно задокументоване? - bjunix
@ clami219, що теж помилково - очевидно працює (2015-04): i.ytimg.com/vi_webp/EhjdWfxjuHA/sddefault.webp, правда: sddefault і maxresdefault НЕ ЗАБЕЗПЕЧНО деякі відео мають їх, хоча .... - jave.web


Ви можете використовувати 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, які ви плануєте зробити. Проте кілька мільйонів запитів на день безкоштовні.

Джерело статті.


358
2018-01-21 09:58



FYI: я не змінив код, щоб відповідати новій структурі JSON. Код у вашому getJSON неправильний. Ви використовували jsonc замість json для getJSON Це неможливо через неправильну структуру JSON. - mauris
Можна використовувати лише перший приклад jsonc. Приклади jQuery та PHP ПОВИНЕН використовувати json. І я оновив код, щоб відповідати новій структурі JSON. Я використовую код прямо зараз, і він працює LIVE. тому не кажуть, що він не працює, не читаючи зміни. Дякую! - mauris
Приклади jQuery та PHP ПОВИННІ використовувати json... Ви можете надати посилання? Крім того, запит на конкретний номер версії API (v=2) піклується про зміни API. - Salman A
Виклик gdata не повертає, чи доступно maxresdefault.jpg для відео, де він доступний, тільки mq / hq / sd. - Aaron
Це не працює в реальному API v3 - Mario Gonzales Flores


Що сказав Асаф, це правильно. Однак, не всі відео YouTube містить всі дев'ять мініатюр, але є сім мініатюр для кожного відео. Вони є:

(Розмір зображення залежить від відео.)

  • Фонове ескіз плеєра (480x360 пікселів)
    https://i1.ytimg.com/vi/G0wGs3useV8/0.jpg

  • Почати ескіз (120x90 пікселів)
    https://i1.ytimg.com/vi/G0wGs3useV8/1.jpg

  • Середній мініатюра (120x90 пікселів)
    https://i1.ytimg.com/vi/G0wGs3useV8/2.jpg

  • Кінець мініатюри (120x90 пікселів)
    https://i1.ytimg.com/vi/G0wGs3useV8/3.jpg

  • Висока якість мініатюри (480x360 пікселів)
    https://i1.ytimg.com/vi/G0wGs3useV8/hqdefault.jpg

  • Мініатюра середнього якості (320x180 пікселів)
    https://i1.ytimg.com/vi/G0wGs3useV8/mqdefault.jpg

  • Нормальна мініатюра якості (120x90 пікселів)
    https://i1.ytimg.com/vi/G0wGs3useV8/default.jpg

Крім того, наступні два ескізи можуть існувати або не існувати. Для відео HQ вони існують.

  • Стандартне визначення мініатюри (640x480 пікселів)
    https://i1.ytimg.com/vi/G0wGs3useV8/sddefault.jpg

  • Мініатюра максимальної роздільної здатності (1920x1080 пікселів)
    https://i1.ytimg.com/vi/G0wGs3useV8/maxresdefault.jpg

Ви можете отримати скрипти JavaScript та PHP, щоб отримати мініатюри та інші Інформація про YouTube в

Також використовуйте інструмент Генератор відеоматеріалів YouTube щоб отримати все інформацію про відео YouTube, надіславши повідомлення URL-адреса або ідентифікатор відео.


199
2017-12-12 11:17



Ви також можете досягти такого ж результату за допомогою офіційного посилання YouTube img.youtube.com/vi/mJ8tq8AnNis/mqdefault.jpg де mJ8tq8AnNis є ідентифікатором відео - Ragaisis
Іноді певних не існує - i1.ytimg.com/vi/r5R8gSgedh4/maxresdefault.jpg є фальшивим, хоча i1.ytimg.com/vi/r5R8gSgedh4/0.jpg це добре, наприклад. - NoBugs
Дякуємо за публікацію цього. У вас є джерело цих даних? Це правильно, але я хотів би отримати посилання на щось із Youtube / Google і не зможе його знайти. - Jonathan Vanasco
@ Джонатан Ванаско, вибачте. Якщо ви маєте на увазі офіційний ресурс для точного змісту, я нічого не знаю. І я не думаю, що є метою публікувати щось подібне з їхньої точки зору. - AGMG
будь-який спосіб отримати 1.jpg у більш високій роздільній здатності, якщо я вже встановив щось інше як ескіз? - dietbacon


У 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-адреси не блокується міжмережевими екранами.


66
2017-08-23 10:23



Чи передбачають ці зображення в тег img і повинні просто працювати, тому що я намагаюся включити посилання з правильним ідентифікатором відео youtube і помістити їх у тег img, але я продовжую отримувати 404 - Lion789
@ Lion789 Ці URL-адреси чудово працюють, коли вони поміщені в тег img. Проблема може бути неправильним ідентифікатором відео або запит може бути недоступним, але ви не отримаєте 404 з цими помилками. Будь ласка, перевірте URL-адресу img тег - Naren
Чи підтверджено, що URL-адреси будуть працювати після API v2 буде зупинено? - Daniele B
@ DanieleB Ці URL-адреси як і раніше працюють. Ви знаєте, як перевірити, чи будуть ці URL-адреси працювати після API v2? - 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);

46
2017-12-22 05:44



Я знайшов приклад, де 0.jpg має роздільну здатність 480x360, а maxresdefault.jpg - 1280x720 - Nico Haase


Якщо ви хочете позбутися "чорних смуг" і робити це, як це робить YouTube, ви можете використовувати:

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

І якщо ви не можете використовувати .webp Розширення ви можете зробити так:

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

Також, якщо вам потрібна скасована версія використання maxresdefault замість mqdefault.

Примітка. Я не впевнений щодо співвідношення сторін, якщо ви плануєте використовувати maxresdefault.


39
2018-06-08 11:59



.webp формат не працює в Firefox - Guilherme Carlos
У такому випадку скористайтеся https://i.ytimg.com/vi/<video id>/mqdefault.jpg. - LuTz
Спасибі, я шукав ескізи без цих blackbars для HD (1920x1080), і це просто працювало для мене! Genius @LuTz! - Aaron Belchamber
Це недоступне для багатьох відео. Наприклад: i.ytimg.com/vi_webp/mJ8tq8AnNis/mqdefault.webp - NickG
@ NickG: він працює, якщо ви видалите _webp і змінити розширення на .jpg. Робочий приклад: i.ytimg.com/vi/mJ8tq8AnNis/mqdefault.jpg , Я не впевнений щодо співвідношення сторін. - 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;
}

27
2017-12-18 10:29