it-swarm.dev

Jak získám miniaturu videa YouTube z rozhraní API YouTube?

Pokud mám adresu URL videa YouTube, můžete nějakým způsobem použít PHP a cURL k získání přidružené miniatury z rozhraní API YouTube?

2190
Ryan

Každé video YouTube má 4 vygenerované obrázky. Jsou předvídatelně formátovány následovně:

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

První v seznamu je obrázek v plné velikosti a další jsou miniatury obrázků. Výchozí obrázek miniatury (tj. Jeden z 1.jpg, 2.jpg, 3.jpg) je:

https://img.youtube.com/vi/<insert-youtube-video-id-here>/default.jpg

Pro vysoce kvalitní verzi miniatury použijte adresu URL podobnou tomuto:

https://img.youtube.com/vi/<insert-youtube-video-id-here>/hqdefault.jpg

K dispozici je také verze miniatury střední kvality, která používá adresu URL podobnou HQ:

https://img.youtube.com/vi/<insert-youtube-video-id-here>/mqdefault.jpg

Pro verzi miniatury standardního rozlišení použijte adresu URL podobnou této:

https://img.youtube.com/vi/<insert-youtube-video-id-here>/sddefault.jpg

Pro verzi miniatury s maximálním rozlišením použijte adresu URL podobnou tomuto:

https://img.youtube.com/vi/<insert-youtube-video-id-here>/maxresdefault.jpg

Všechny výše uvedené adresy URL jsou také k dispozici přes http. Navíc, o něco kratší jméno hostitele i3.ytimg.com funguje místo img.youtube.com v příkladu adresy URL výše.

Alternativně můžete použít YouTube Data API (v3) pro získání náhledů obrázků.

4217
Asaph

Můžete použít Datové rozhraní YouTube pro načtení miniatur videa, titulků, popisu, hodnocení, statistik a dalších informací. Verze API 3 vyžaduje klíč *. Získat klíč a vytvořit videos: list request:

https://www.googleapis.com/youtube/v3/videos?key=YOUR_API_KEY&part=snippet&id=VIDEO_ID

Příklad PHP Kód

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

Výstup

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)
  }
}

* Nejen, že potřebujete klíč, ale můžete být požádáni o fakturační údaje v závislosti na počtu požadavků rozhraní API, které chcete provést. Několik miliónů požadavků za den je však zdarma.

Zdrojový článek .

372
Salman A

To, co Asaph řekl, je správné. Ne každé video YouTube však obsahuje všech devět miniatur. Velikost miniatur obrázků závisí také na videu (níže uvedená čísla jsou založena na jednom).

Existuje sedm miniatur zaručených existencí:

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

Další dva miniatury mohou nebo nemusí existovat. Jejich přítomnost je pravděpodobně založena na tom, zda je video vysoce kvalitní.

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

Skripty JavaScript a PHP můžete najít, abyste získali miniatury a další informace YouTube v:

Můžete také použít nástroj YouTube Video Information Generator nástroj pro získání všech informací o videu YouTube odesláním adresy URL nebo videa.

221
AGMG

Ve službě YouTube API V3 můžeme také použít tyto adresy URL pro získání náhledů ... Jsou klasifikovány na základě jejich kvality.

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

A pro maximální rozlišení.

https://i1.ytimg.com/vi/<insert-youtube-video-id-here>/maxresdefault.jpg

Jednou z výhod těchto adres URL v adresách URL v první odpovědi je, že tyto adresy URL neblokují brány firewall.

70
Naren

Pokud chcete pro konkrétní ID videa získat největší obrázek z YouTube, měla by být adresa URL něco takového:

http://i3.ytimg.com/vi/SomeVideoIDHere/0.jpg

Pomocí rozhraní API můžete vybrat výchozí miniaturu. Jednoduchý kód by měl být něco takového:

//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);
50
PoorBoy

Pokud se chcete zbavit „černých pruhů“ a udělat to, jako to dělá YouTube, můžete použít:

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

A pokud nemůžete použít příponu .webp, můžete to udělat takto:

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

Také pokud potřebujete verzi bez názvu, použijte maxresdefault namísto mqdefault.

Poznámka: Pokud si přejete použít maxresdefault, nevím o poměru stran.

41
LuTz

Udělal jsem funkci pro načtení stávajících obrázků z 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;
}
32

V YouTube Data API v3 , můžete získat miniatury videa s videos-> list funkcí. Z snippet.thumbnails (key) , můžete vybrat výchozí, střední nebo vysoký náhled a získat jeho šířku, výšku a URL.

Můžete také aktualizovat miniatury pomocí funkce thumbnails-> set .

Například můžete zkontrolovat projekt YouTube Vzorky . ( PHP ty .)

30
Ibrahim Ulukaya

Můžete získat položku Video Entry , která obsahuje adresu URL miniatury videa. Odkaz obsahuje příklad kódu. Nebo, pokud chcete analyzovat XML, jsou zde informace zde . Vrácený XML má prvek media:thumbnail, který obsahuje adresu URL miniatury.

28
keyboardP
// 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;
23
Mahendra Tyagi

YouTube je vlastněn společností Google a společnost Google má ráda přiměřený počet obrázků pro různé velikosti obrazovky, a proto jsou jeho obrázky uloženy v různých velikostech.

Miniatura s nízkou kvalitou:

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

Miniatura střední kvality:

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

Miniatura s vysokou kvalitou:

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

Miniatura maximální kvality:

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

YOUTUBE VERZE API 3 ** UP A RUNNING V 2 MINUTECH **

Je-li vše, co chcete udělat, vyhledávání na YouTube a získání souvisejících vlastností:

  1. Získejte PUBLIC API - Tento odkaz dává dobrý směr

2. Použijte níže uvedený řetězec dotazů. Vyhledávací dotaz (označený q =) v řetězci url je stackoverflow například pro účely. Služba YouTube vám poté odešle odpověď na dotaz json, ve které můžete analyzovat miniaturu, fragment, autora atd.

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

Použití:

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

Nahoře je odkaz. Pomocí této funkce můžete najít charakteristiky videí YouTube. Po nalezení charakteristik můžete získat videa vybrané kategorie. Poté můžete najít vybrané video obrazy pomocíAsafova odpověď.

Vyzkoušejte výše uvedený přístup a můžete analyzovat vše z YouTube API .

14
Nikh1414

Tímto způsobem jsem použil miniatury YouTube:

$url = 'http://img.youtube.com/vi/' . $youtubeId . '/0.jpg';
$img = dirname(__FILE__) . '/youtubeThumbnail_'  . $youtubeId . '.jpg';
file_put_contents($img, file_get_contents($url));

Pamatujte, že služba YouTube zabraňuje zahrnout obrázky přímo ze serveru

13

Další dobrou alternativou by bylo použití oEmbed API, které je podporováno službou YouTube.

Stačí přidat adresu URL služby YouTube do url oEmbed a obdržíte JSON včetně miniatury a html kódu pro vložení.

Příklad:

http://www.youtube.com/oembed?format=json&url=http%3A//youtube.com/watch%3Fv%3DDLzxrzFCyOs

Dali byste:

{
  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
}

Přečtěte si dokumentaci pro více Informace .

12
Andresch Serj

Jen abych přidal/rozšířil dané řešení, mám pocit, že je třeba poznamenat, že jak jsem měl tento problém sám, člověk může vlastně chytit více videí z YouTube, v tomto případě miniatur, s jedním požadavkem HTTP:

Pomocí Rest Client, v tomto případě HTTPFUL, můžete udělat něco takového:

<?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
Hlawuleka MAS

Našel jsem tento šikovný nástroj, který vám umožní vytvořit obrázek pomocí tlačítka pro přehrávání YouTube umístěného nad obrázkem:

12
Scott Joudry

jednoduchá php funkce jsem vytvořil pro youtube náhled a typy jsou

  • default
  • 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;}
    
10
Arun Yokesh

Pokud používáte veřejný api, nejlepší způsob, jak to udělat, je použití příkazů.

Pokud je video veřejné nebo neuvedené, nastavte miniaturu pomocí metody url. Pokud je video soukromé, můžete použít miniaturu 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';
}
9
Harvey Connor

Rozhraní API dat YouTube

YouTube Poskytuje 4 generované obrázky pro každé video prostřednictvím rozhraní Data API (v3), Ex -

  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

Získání přístupu k obrázkům přes rozhraní API

  1. Nejdříve získáte svůj veřejný klíč API v konzole Google API .
  2. Jak na odkaz Thumbnail na YouTube v API dokumentaci , Musíte přistupovat k prostředkům na snippet.thumbnails.
  3. Stejně jako v tomto případě je třeba adresu URL označit takto -

    www.googleapis.com/youtube/v3/videos?part=snippet&id=yourVideoId&key=yourApiKey

Nyní změňte yourVideoId a yourApiKey na příslušný video-id a api-key a jeho odpověď bude výstup JSON, který vám poskytne 4 odkazy v miniaturách proměnné snippet (pokud jsou všechny dostupné).

8
Daksh Miglani

ID videa můžete získat z url videa YouTube pomocí parse_url , parse_str a poté vložte do prediktivních adres URL obrázků. Děkujeme YouTube za prediktivní adresy 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";

Pomocí tohoto nástroje můžete generovat miniatury YouTube

https://codeatools.com/get-youtube-video-thumbnails

7
Rinto George

Myslím, že jejich spousta odpovědí na náhled, ale chci přidat nějaké další adresy URL, aby se youtube miniatura velmi snadno. Beru jen text z Asafovy odpovědi. Zde je několik url pro získání miniatur youtube

https://ytimg.googleusercontent.com/vi/<insert-youtube-video-id-here>/default.jpg

Pro vysoce kvalitní verzi miniatury použijte adresu URL podobnou tomuto:

https://ytimg.googleusercontent.com/vi/<insert-youtube-video-id-here>/hqdefault.jpg

K dispozici je také verze miniatury střední kvality, která používá adresu URL podobnou HQ:

https://ytimg.googleusercontent.com/vi/<insert-youtube-video-id-here>/mqdefault.jpg

Pro verzi miniatury standardního rozlišení použijte adresu URL podobnou této:

https://ytimg.googleusercontent.com/vi/<insert-youtube-video-id-here>/sddefault.jpg

Pro verzi miniatury s maximálním rozlišením použijte adresu URL podobnou tomuto:

https://ytimg.googleusercontent.com/vi/<insert-youtube-video-id-here>/maxresdefault.jpg

Doufám, že to někomu v blízké budoucnosti pomůže.

6
Kumar
    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');
5
Nimesh Vagadiya

Top odpověď optimalizováno pro ruční použití. Token ID videa bez oddělovačů umožňuje výběr dvojitým kliknutím.

Každé video YouTube má 4 vygenerované obrázky. Jsou předvídatelně formátovány následovně:

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

První v seznamu je obrázek v plné velikosti a další jsou miniatury obrázků. Výchozí obrázek miniatury (tj. Jeden z 1.jpg, 2.jpg, 3.jpg) je:

https://img.youtube.com/vi/YOUTUBEVIDEOID/default.jpg

Pro vysoce kvalitní verzi miniatury použijte adresu URL podobnou tomuto:

https://img.youtube.com/vi/YOUTUBEVIDEOID/hqdefault.jpg

K dispozici je také verze miniatury střední kvality, která používá adresu URL podobnou HQ:

https://img.youtube.com/vi/YOUTUBEVIDEOID/mqdefault.jpg

Pro verzi miniatury standardního rozlišení použijte adresu URL podobnou této:

https://img.youtube.com/vi/YOUTUBEVIDEOID/sddefault.jpg

Pro verzi miniatury s maximálním rozlišením použijte adresu URL podobnou tomuto:

https://img.youtube.com/vi/YOUTUBEVIDEOID/maxresdefault.jpg

Všechny výše uvedené adresy URL jsou také k dispozici přes http. Navíc, o něco kratší jméno hostitele i3.ytimg.com funguje místo img.youtube.com v příkladu adresy URL výše.

Alternativně můžete použít YouTube Data API (v3) pro získání náhledů obrázků.

3
Lycan

Metoda 1:

youtube video naleznete na stránkách JSON, které obsahují i ​​"thumbnail_url" http://www.youtube.com/oembed?format=json&url= {Vaše video url sem jde}

jako konečný vzhled url + php testovací kód

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

Výstup

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

pro detail můžete také vidět https://www.youtube.com/watch?v=mXde7q59BI8 video tutorial 1

Metoda 2: using youtube img link https://img.youtube.com/vi/ "insert-youtube-video-id-here" /default.jpg

Metoda 3: použití zdrojového kódu prohlížeče pro získání náhledu pomocí odkazu URL videa -go na zdrojový kód videa a hledání miniatury Nyní můžete tuto adresu URL použít ve svém kódu kódu: {img src = "https: // img.youtube.com/vi/"insert-youtube-video-id-here"/default.jpg "}

pro detail můžete také vidět http://hzonesp.com/php/get-youtube-video-thumbnail-using-id/ nebo https://www.youtube.com/watch?v=9f6E8MeM6PI video tutorial 2

2
Hassan Saeed

Použijte toto - img.youtube.com/vi/YouTubeID/ImageFormat.jpg zde jsou formáty obrázků odlišné od výchozích, hqdefault, maxresdefault.

1
shpwebhost

zde je jednoduchá funkce, kterou jsem vytvořil pro získání miniatur, je snadné pochopit a používat. $ link je odkaz youtube zkopírovaný přesně tak, jak je v prohlížeči, například 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;
}
0

Toto je mé klientské řešení, které je vyžadováno pouze bez použití API.

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

Kód:

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`

Nástroj 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
    })
}

Nástroj 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
    },
    {})
}
0
asdfasdfads