web-dev-qa-db-fra.com

Comment puis-je obtenir une miniature de vidéo YouTube à partir de l'API YouTube?

Si j'ai une URL de vidéo YouTube, est-il possible d'utiliser PHP et cURL pour obtenir la vignette associée à partir de l'API YouTube?

2246
Ryan

Chaque vidéo YouTube a quatre images générées. De manière prévisible, ils sont formatés comme suit:

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

Le premier de la liste est une image en taille réelle et les autres sont des images miniatures. La vignette par défaut (c’est-à-dire l’un des 1.jpg, 2.jpg, 3.jpg) est:

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

Pour la version haute qualité de la vignette, utilisez une URL similaire à celle-ci:

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

Il existe également une version de qualité moyenne de la vignette, utilisant une URL similaire à celle du siège:

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

Pour la version en définition standard de la vignette, utilisez une URL similaire à celle-ci:

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

Pour la version à résolution maximale de la vignette, utilisez une URL similaire à celle-ci:

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

Toutes les URL ci-dessus sont également disponibles via HTTP. De plus, le nom d'hôte légèrement plus court i3.ytimg.com remplace la valeur de img.youtube.com dans les exemples d'URL ci-dessus.

Vous pouvez également utiliser API de données YouTube (v3) pour obtenir des images miniatures.

4315
Asaph

Vous pouvez utiliser l'API de données YouTube pour récupérer des vignettes vidéo, une légende, une description, un classement, des statistiques, etc. L'API version 3 nécessite une clé *. Obtenez la clé et créez une vidéos: liste demande:

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

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

Sortie

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

* Non seulement vous avez besoin d'une clé, mais des informations de facturation peuvent vous être demandées, en fonction du nombre de demandes d'API que vous envisagez de faire. Cependant, quelques millions de demandes par jour sont gratuites.

Article d'origine .

380
Salman A

Ce que Asaph a dit est juste. Cependant, toutes les vidéos YouTube ne contiennent pas les neuf vignettes. De plus, la taille des images des vignettes dépend de la vidéo (les chiffres ci-dessous sont basés sur une).

Il existe sept vignettes garanties:

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

En outre, les deux autres vignettes peuvent ou non exister. Leur présence dépend probablement de la qualité de la vidéo.

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

Vous pouvez trouver des scripts JavaScript et PHP pour récupérer des vignettes et d'autres informations YouTube dans:

Vous pouvez également utiliser l'outil Générateur d'informations vidéo YouTube pour obtenir toutes les informations sur une vidéo YouTube en soumettant une URL ou un identifiant de vidéo.

230
AGMG

Dans YouTube API V3, nous pouvons également utiliser ces URL pour obtenir des vignettes ... Elles sont classées en fonction de leur qualité.

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

Et pour la résolution maximale ..

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

Un des avantages de ces URL par rapport aux URL de la première réponse est que ces URL ne sont pas bloquées par des pare-feu.

71
Naren

Si vous voulez la plus grande image de YouTube pour un identifiant vidéo spécifique, l'URL devrait ressembler à ceci:

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

À l'aide de l'API, vous pouvez récupérer une image miniature par défaut. Le code simple devrait ressembler à ceci:

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

Si vous souhaitez vous débarrasser des "barres noires" et le faire comme le fait YouTube, vous pouvez utiliser:

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

Et si vous ne pouvez pas utiliser l'extension de fichier .webp, vous pouvez le faire comme suit:

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

De plus, si vous avez besoin de la version non mise à l'échelle, utilisez maxresdefault au lieu de mqdefault.

Remarque: je ne suis pas sûr du rapport hauteur/largeur si vous prévoyez d'utiliser maxresdefault.

43
LuTz

J'ai créé une fonction pour extraire uniquement les images existantes de 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
Henrik Albrechtsson

Dans YouTube Data API v , vous pouvez obtenir les vignettes de la vidéo avec la fonction videos-> list . A partir de snippet.thumbnails. (Key) , vous pouvez choisir la miniature par défaut, de résolution moyenne ou élevée, et obtenir sa largeur, sa hauteur et son URL.

Vous pouvez également mettre à jour les vignettes avec la fonctionnalité vignettes-> définir .

Pour des exemples, vous pouvez consulter le projet exemples d’API YouTube . ( ceux en PHP .)

30
Ibrahim Ulukaya

Vous pouvez obtenir le Entrée vidéo qui contient l'URL de la vignette de la vidéo. Il y a un exemple de code dans le lien. Ou, si vous voulez analyser XML, il y a des informations ici . Le code XML renvoyé contient un élément media:thumbnail, qui contient l'URL de la vignette.

29
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 appartient à Google et Google aime disposer d’un nombre raisonnable d’images pour différentes tailles d’écran. Par conséquent, ses images sont stockées dans différentes tailles. Voici un exemple de la façon dont votre vignette ressemblera à ceci:

Vignette de basse qualité:

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

Vignette de qualité moyenne:

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

Vignette de haute qualité:

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

Vignette de qualité maximale:

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

YouTube API version 3 est opérationnel en 2 minutes

Si vous souhaitez simplement rechercher sur YouTube et obtenir les propriétés associées:

  1. Obtenir une API publique - Ce lien vous indique la bonne direction

  2. Utilisez la chaîne de requête ci-dessous. La requête de recherche (indiquée par q = ) dans la chaîne d'URL est stackoverflow à des fins d'exemple. YouTube vous enverra ensuite une réponse JSON dans laquelle vous pourrez ensuite analyser Thumbnail, Snippet, Author, etc.

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

15
Chris

Utilisation:

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

Ci-dessus est le lien. Grâce à cela, vous pouvez trouver les caractéristiques des vidéos sur YouTube. Après avoir trouvé les caractéristiques, vous pouvez obtenir des vidéos de la catégorie sélectionnée. Ensuite, vous pourrez trouver les images vidéo sélectionnées avec réponse d'Asaph.

Essayez l'approche ci-dessus et vous pouvez tout analyser à partir de YouTube API .

14
Nikh1414

J'ai utilisé les vignettes YouTube de cette manière:

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

N'oubliez pas que YouTube empêche d'inclure des images directement à partir de leur serveur.

13

Une autre alternative intéressante consiste à utiliser l'API oEmbed qui est prise en charge par YouTube.

Vous ajoutez simplement votre URL YouTube à l'URL oEmbed et vous recevez un JSON comprenant une vignette et le code HTML à incorporer.

Exemple:

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

Vous donnerait:

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

Lisez la documentation pour plus information .

12
Andresch Serj

Juste pour ajouter/développer les solutions proposées, j’estime nécessaire de noter que, comme j’ai eu ce problème moi-même, on peut récupérer plusieurs contenus de vidéos YouTube, dans ce cas, des vignettes, avec une requête HTTP:

En utilisant un client rest, dans ce cas, HTTPFUL, vous pouvez faire quelque chose comme ceci:

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

J'ai trouvé cet outil astucieux qui vous permet de créer l'image avec le bouton de lecture YouTube placé sur l'image:

12
Scott Joudry

Une simple fonction PHP que j'ai créée pour la vignette YouTube et les types sont

  • 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

Si vous utilisez l'API publique, le meilleur moyen de le faire consiste à utiliser les instructions if.

Si la vidéo est publique ou non répertoriée, vous définissez la vignette à l'aide de la méthode URL. Si la vidéo est privée, vous utilisez l'API pour obtenir la vignette.

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

API de données YouTube

YouTube nous fournit les quatre images générées pour chaque vidéo via l’API de données (v3), par exemple:

  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

Obtenir l'accès aux images via l'API

  1. Commencez par obtenir votre clé d'API publique à l'adresse Console Google API .
  2. Conformément à la référence des miniatures de YouTube dans la documentation de l'API , vous devez accéder aux ressources sur snippet.thumbnails.
  3. Selon cela, vous devez énoncer votre URL de la manière suivante:

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

Modifiez maintenant votre identifiant vidéo et votre clé API en identifiant vos identifiants vidéo et api-clés respectifs. Sa réponse sera une sortie JSON vous fournissant les quatre liens dans les vignettes de la variable snippet (si toutes sont disponibles).

8
Daksh Miglani

Vous pouvez obtenir l'ID de la vidéo à partir de l'URL de la vidéo YouTube à l'aide de parse_url , parse_str , puis l'insérer dans les URL prédictives des images. Merci à YouTube pour les URL prédictives

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

Vous pouvez utiliser cet outil pour générer des vignettes YouTube.

https://tools.tutsplanet.com/index.php/get-youtube-video-thumbnails

7
Rinto George

Je pense qu’il ya beaucoup de réponses pour les vignettes, mais je souhaite ajouter d’autres URL pour obtenir très facilement les vignettes de YouTube. Je prends juste un texte de la réponse d'Asaph. Voici quelques URL pour obtenir des vignettes YouTube:

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

Pour la version haute qualité de la vignette, utilisez une URL similaire à celle-ci:

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

Il existe également une version de qualité moyenne de la vignette, utilisant une URL similaire à celle de haute qualité:

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

Pour la version en définition standard de la vignette, utilisez une URL similaire à celle-ci:

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

Pour la version à résolution maximale de la vignette, utilisez une URL similaire à celle-ci:

https://ytimg.googleusercontent.com/vi/<insert-youtube-video-id-here>/maxresdefault.jpg
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

La réponse du haut est optimisé pour une utilisation manuelle. Le jeton d'identification vidéo sans séparateur permet une sélection en double-clic.

Chaque vidéo YouTube a quatre images générées. De manière prévisible, ils sont formatés comme suit:

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

Le premier de la liste est une image en taille réelle et les autres sont des images miniatures. La vignette par défaut (c.-à-d. L'un des 1.jpg, 2.jpg, 3.jpg) est:

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

Pour la version haute qualité de la vignette, utilisez une URL similaire à celle-ci:

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

Il existe également une version de qualité moyenne de la vignette, utilisant une URL similaire à celle du siège:

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

Pour la version en définition standard de la vignette, utilisez une URL similaire à celle-ci:

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

Pour la version à résolution maximale de la vignette, utilisez une URL similaire à celle-ci:

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

Toutes les URL ci-dessus sont également disponibles via HTTP. De plus, le nom d'hôte légèrement plus court i3.ytimg.com remplace la valeur de img.youtube.com dans les exemples d'URL ci-dessus.

Vous pouvez également utiliser API de données YouTube (v3) pour obtenir des images miniatures.

3
Lycan

Méthode 1:

Vous pouvez trouver toutes les informations pour une vidéo YouTube avec une page JSON comportant même "thumbnail_url", http://www.youtube.com/oembed?format=json&url= {l'URL de votre vidéo va ici}

Comme l'URL finale, look + PHP code de test

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

Sortie

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

Pour plus de détails, vous pouvez également voir https://www.youtube.com/watch?v=mXde7q59BI8 tutoriel vidéo 1

Méthode 2:

Utilisation du lien d’image YouTube, https://img.youtube.com/vi/ "insérer-youtube-video-id-here" /default.jpg

Méthode 3:

Utilisation du code source du navigateur pour obtenir une vignette à l'aide d'un lien URL vidéo - Allez au code source vidéo et recherchez thumbnailurl. Maintenant, vous pouvez utiliser cette URL dans votre code source:

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

Pour plus de détails, vous pouvez également consulter Comment obtenir une vignette de la vidéo YouTube à l'aide de l'id ou https://www.youtube.com/watch ? v = 9f6E8MeM6PI tutoriel vidéo 2

2
Hassan Saeed

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

Ici, les formats d'image sont différents comme default, hqdefault, maxresdefault.

1
shpwebhost

Enregistrez ce code dans un fichier .php vide et testez-le.

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

Merci.

0
Ali

Voici une fonction simple que j'ai créée pour obtenir les vignettes. Il est facile à comprendre et à utiliser.

$ link est le lien YouTube copié exactement tel qu'il est dans le navigateur, par exemple, 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

Ceci est ma solution côté client uniquement sans API-clé requise.

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

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

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

Utilitaire 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