Hoe krijg ik een YouTube-videominiatuur van de YouTube API?

Als ik een YouTube-video-URL heb, is er dan een manier om PHP en cURL te gebruiken om de bijbehorende thumbnail van de YouTube API te krijgen?


Antwoord 1, autoriteit 100%

Elke YouTube-video heeft vier gegenereerde afbeeldingen. Ze zijn voorspelbaar als volgt opgemaakt:

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

De eerste in de lijst is een afbeelding op volledige grootte en de andere zijn miniatuurafbeeldingen. De standaard miniatuurafbeelding (d.w.z. een van 1.jpg, 2.jpg, 3.jpg) is:

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

Gebruik voor de hoogwaardige versie van de miniatuur een URL die lijkt op deze:

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

Er is ook een versie van gemiddelde kwaliteit van de miniatuur, met een URL die lijkt op het hoofdkantoor:

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

Gebruik voor de standaarddefinitieversie van de miniatuur een URL die lijkt op deze:

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

Gebruik voor de maximale resolutieversie van de miniatuur een URL die lijkt op deze:

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

Alle bovenstaande URL’s zijn ook beschikbaar via HTTP. Bovendien werkt de iets kortere hostnaam i3.ytimg.com in plaats van img.youtube.com in de bovenstaande voorbeeld-URL’s.

Je kunt ook de YouTube Data API (v3) gebruiken om miniatuurafbeeldingen te krijgen.


Antwoord 2, autoriteit 8%

Je kunt YouTube Data API gebruiken om videominiaturen op te halen , bijschrift, beschrijving, beoordeling, statistieken en meer. API versie 3 vereist een sleutel*. Verkrijg de sleutel en maak een videos: list verzoek:

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

Voorbeeld PHP-code

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

Uitvoer

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

* U heeft niet alleen een sleutel nodig, maar u kunt ook om factureringsgegevens worden gevraagd, afhankelijk van het aantal API-verzoeken dat u wilt doen. Er zijn echter een paar miljoen verzoeken per dag gratis.

Bronartikel.


Antwoord 3, autoriteit 6%

Wat Asaf zei klopt. Niet elke YouTube-video bevat echter alle negen
miniaturen. De afbeeldingsgroottes van de miniaturen zijn ook afhankelijk van de video (de nummers
hieronder zijn gebaseerd op één). Er zijn gegarandeerd enkele miniaturen:

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

Bovendien kunnen sommige andere thumbnails al dan niet bestaan. Hun aanwezigheid is
waarschijnlijk gebaseerd op de vraag of de video van hoge kwaliteit is.

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

Je kunt JavaScript- en PHP-scripts vinden om thumbnails en andere op te halen
YouTube-informatie in:

Je kunt ook de tool YouTube Video Information Generator gebruiken om alle
de informatie over een YouTube-video door een URL of video-ID in te dienen.


Antwoord 4, autoriteit 2%

In YouTube API V3 kunnen we deze URL’s ook gebruiken om thumbnails te verkrijgen… Ze zijn geclassificeerd op basis van hun kwaliteit.

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

En voor de maximale resolutie..

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

Een voordeel van deze URL’s ten opzichte van de URL’s in het eerste antwoord is dat deze URL’s niet worden geblokkeerd door firewalls.


Antwoord 5

Als je de grootste afbeelding van YouTube wilt voor een specifieke video-ID, moet de URL er ongeveer zo uitzien:

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

Met behulp van de API kunt u de standaard miniatuurafbeelding ophalen. Eenvoudige code zou er ongeveer zo uit moeten zien:

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

Antwoord 6

Als je de ‘zwarte balken’ wilt verwijderen en het wilt doen zoals YouTube dat doet, kun je het volgende gebruiken:

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

En als u de bestandsextensie .webp niet kunt gebruiken, kunt u dit als volgt doen:

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

Als je de ongeschaalde versie nodig hebt, gebruik dan maxresdefault in plaats van mqdefault.

Opmerking: ik weet niet zeker wat de beeldverhouding is als je van plan bent maxresdefault te gebruiken.


Antwoord 7

Ik heb een functie gemaakt om alleen bestaande afbeeldingen van YouTube op te halen

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

Antwoord 8

Je kunt het Video-item krijgen dat de URL bevat naar de miniatuur van de video. Er staat een voorbeeldcode in de link. Of, als je XML wilt ontleden, vind je hier informatie. De geretourneerde XML heeft een media:thumbnail-element, dat de URL van de thumbnail bevat.


Antwoord 9

In YouTube Data API v3 kun je thumbnails van video’s krijgen met de videos->list functie. Van snippet.thumbnails.(key) , kunt u de standaardminiatuur, gemiddelde of hoge resolutie kiezen en de breedte, hoogte en URL krijgen.

Je kunt miniaturen ook bijwerken met de thumbnails->set functionaliteit.

Voor voorbeelden kun je de YouTube bekijken API-voorbeelden-project. (PHP’s.)


Antwoord 10

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

Antwoord 11

YouTube is eigendom van Google en Google heeft graag een redelijk aantal afbeeldingen voor verschillende schermformaten, daarom worden de afbeeldingen in verschillende formaten opgeslagen. Hier is een voorbeeld van hoe je thumbnail eruit zal zien:

Miniatuur van lage kwaliteit:

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

Miniatuur van gemiddelde kwaliteit:

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

Miniatuur van hoge kwaliteit:

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

Miniatuur van maximale kwaliteit:

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

Antwoord 12

Een ander goed alternatief zou zijn om de oEmbed API te gebruiken die wordt ondersteund door YouTube.

Je voegt eenvoudig je YouTube-URL toe aan de oEmbed-URL en je ontvangt een JSON met een thumbnail en de HTML-code voor insluiten.

Voorbeeld:

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

Zou je geven:

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

Lees de documentatie voor meer informatie.


Antwoord 13

YouTube API-versie 3 in 2 minuten klaar voor gebruik

Als je alleen op YouTube wilt zoeken en bijbehorende eigenschappen wilt krijgen:

  1. Ontvang een openbare APIDeze link geeft een goede richting

  2. Gebruik onderstaande queryreeks. De zoekopdracht (aangeduid met q=) in de URL-tekenreeks is bijvoorbeeld stackoverflow. YouTube stuurt je dan een JSON-antwoord terug, waar je vervolgens kunt parseren voor thumbnail, snippet, auteur, enz.

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


Antwoord 14

Gebruik:

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

Hierboven staat de link. Hiermee kun je de YouTube-kenmerken van video’s vinden. Nadat je kenmerken hebt gevonden, kun je video’s van de geselecteerde categorie krijgen. Daarna kun je geselecteerde videobeelden vinden met Asaph’s antwoord.

Probeer de bovenstaande aanpak en je kunt alles ontleden van de YouTube API.


Antwoord 15

Ik heb YouTube-thumbnails op deze manier gebruikt:

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

Onthoud dat YouTube voorkomt dat afbeeldingen rechtstreeks van hun server worden opgenomen.


Antwoord 16

Om de gegeven oplossingen toe te voegen/uit te breiden, denk ik dat het nodig is om op te merken dat, aangezien ik dit probleem zelf had, je meerdere YouTube-video’s kunt pakken, in dit geval thumbnails, met één HTTP-verzoek:

Met een Rest Client, in dit geval HTTPFUL, kun je zoiets als dit doen:

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

Antwoord 17

YouTube-gegevens-API

YouTube levert ons bijvoorbeeld de vier gegenereerde afbeeldingen voor elke video via de 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

Toegang krijgen tot de afbeeldingen via de API

  1. Koop eerst uw openbare API-sleutel op Google API Console.
  2. Volgens de miniatuurreferentie van YouTube in de API-documentatie moet je toegang hebben tot de bronnen op snippet.thumbnails.
  3. Hierdoor moet je je URL als volgt formuleren –

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

Verander nu uw video-ID en uw API-sleutel in uw respectievelijke video-id en api-sleutel en het antwoord is een JSON-uitvoer die u de vier links in de miniaturen van de fragmentvariabele biedt (als ze allemaal beschikbaar zijn).


Antwoord 18

Ik vond deze handige tool waarmee je de afbeelding kunt maken met de YouTube-afspeelknop boven de afbeelding:


Antwoord 19

Je kunt de video-ID uit de YouTube-video-url halen met parse_url ,parse_str en vervolgens invoegen in de voorspellende URL’s voor afbeeldingen . Met dank aan YouTube voor de voorspellende URL’s

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

Je kunt deze tool gebruiken om YouTube-thumbnails te genereren

https://youtube-thumbnail-tool.com


Antwoord 20

Een eenvoudige PHP-functie die ik heb gemaakt voor de YouTube-thumbnail en de typen zijn

  • standaard
  • 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;}

Antwoord 21

Als u de openbare API gebruikt, kunt u dit het beste doen door if-instructies te gebruiken.

Als de video openbaar of verborgen is, stel je de thumbnail in met de URL-methode.
Als de video privé is, gebruik je de API om de thumbnail te krijgen.

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

Antwoord 22

YouTube biedt miniaturen van twee servers. Je hoeft alleen maar <YouTube_Video_ID_HERE> met je eigen YouTube-video-ID. Tegenwoordig is webP het beste formaat voor het snel laden van afbeeldingen vanwege de kleine afbeeldingsgrootte.

https://img.youtube.com
https://i.ytimg.com

Voorbeelden zijn met https://i.ytimg.com server alleen omdat deze korter is, geen andere bepaalde reden. Je kunt beide gebruiken.

Spelerachtergrondminiatuur (480×360):

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

Miniaturen van videoframes (120×90)

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

Miniatuur van laagste kwaliteit (120×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

Miniatuur van gemiddelde kwaliteit (320×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

Miniatuur van hoge kwaliteit (480×360)

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

Miniatuur van standaardkwaliteit (640×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

Ongeschaalde miniatuurresolutie

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

Antwoord 23

Ik denk dat er veel antwoorden zijn op thumbnails, maar ik wil wat andere URL’s toevoegen om heel gemakkelijk YouTube-thumbnails te krijgen. Ik neem gewoon wat tekst uit Asaph’s antwoord. Hier zijn enkele URL’s om YouTube-thumbnails te krijgen:

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

Gebruik voor de hoogwaardige versie van de miniatuur een URL die lijkt op deze:

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

Er is ook een versie van gemiddelde kwaliteit van de miniatuur, met een URL die vergelijkbaar is met de hoge kwaliteit:

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

Gebruik voor de standaarddefinitieversie van de miniatuur een URL die lijkt op deze:

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

Gebruik voor de maximale resolutieversie van de miniatuur een URL die lijkt op deze:

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

Antwoord 24

Methode 1:

Je kunt alle informatie voor een YouTube-video vinden met een JSON-pagina die zelfs “thumbnail_url” heeft,
http://www.youtube.com/oembed?format=json&url={uw video-URL komt hier}

Zoals uiteindelijke URL-look + PHP-testcode

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

Uitvoer

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

Voor details kun je ook Hoe krijg een YouTube-videominiatuur met id
of https://www.youtube.com/watch?v=mXde7q59BI8 videozelfstudie 1

Methode 2:

Met de YouTube-afbeeldingslink,
https://img.youtube.com/vi/“insert-youtube-video-id- hier”/default.jpg

Methode 3:

Browserbroncode gebruiken voor het verkrijgen van thumbnails met de video-URL-link
-ga naar videobroncode en zoek naar thumbnailurl.
Nu kunt u deze URL gebruiken in
uw broncode:

{img src="https://img.youtube.com/vi/"insert-youtube-video-id-here"/default.jpg"}

Voor details kun je ook Hoe je een YouTube-videominiatuur met id
of
https://www.youtube.com/watch?v=9f6E8MeM6PI
instructievideo 2


Antwoord 25

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

Antwoord 26

Hier is het beste antwoord geoptimaliseerd voor handmatig gebruik. Het video-ID-token zonder scheidingstekens maakt selecteren met een dubbelklik mogelijk.

Elke YouTube-video heeft vier gegenereerde afbeeldingen. Ze zijn voorspelbaar als volgt opgemaakt:

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

De eerste in de lijst is een afbeelding op volledige grootte en de andere zijn miniatuurafbeeldingen. De standaard miniatuurafbeelding (d.w.z. een van 1.jpg, 2.jpg, 3.jpg) is:

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

Gebruik voor de hoogwaardige versie van de miniatuur een URL die lijkt op deze:

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

Er is ook een versie van gemiddelde kwaliteit van de miniatuur, met een URL die lijkt op het hoofdkantoor:

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

Gebruik voor de standaarddefinitieversie van de miniatuur een URL die lijkt op deze:

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

Gebruik voor de maximale resolutieversie van de miniatuur een URL die lijkt op deze:

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

Alle bovenstaande URL’s zijn ook beschikbaar via HTTP. Bovendien werkt de iets kortere hostnaam i3.ytimg.com in plaats van img.youtube.com in de bovenstaande voorbeeld-URL’s.

Je kunt ook de YouTube Data API (v3) gebruiken om miniatuurafbeeldingen te krijgen .


Antwoord 27

Dit is mijn client-side-only oplossing zonder API-sleutels.

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

De code:

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`

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

Hulpprogramma 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
    },
    {})
}

Antwoord 28

Gebruik img.youtube.com/vi/YouTubeID/ImageFormat.jpg

Hier zijn de afbeeldingsindelingen anders, zoals standaard, hqdefault,
maxresdefault.


Antwoord 29

Hier is een eenvoudige functie die ik heb gemaakt om de miniaturen te krijgen. Het is gemakkelijk te begrijpen en te gebruiken.

$link is de YouTube-link die precies zo is gekopieerd als in de browser, bijvoorbeeld 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;
}

Antwoord 30

Sla deze code op in een leeg .php-bestand en test het.

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

Bedankt.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

6 + twelve =

Other episodes