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


Si j'ai une URL de vidéo YouTube, y a-t-il un moyen d'utiliser PHP et cURL pour obtenir la vignette associée de l'API YouTube?


2023
2018-01-14 23:34


origine


Réponses:


Chaque vidéo YouTube a 4 images générées. Ils sont formatés de manière prévisible 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. L'image miniature par défaut (c'est-à-dire l'une 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 au HQ:

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 disponibles sur http aussi. De plus, le nom d'hôte légèrement plus court i3.ytimg.com travaille à la place de img.youtube.com dans les exemples d'URL ci-dessus.

Alternativement, vous pouvez utiliser le YouTube Data API (v3) pour obtenir des images miniatures.


3875
2018-01-14 23:40



Vous pouvez utiliser API YouTube Data pour récupérer des vignettes vidéo, légende, description, notation, statistiques et plus encore. L'API version 3 requiert une clé *. Obtenir la clé et créer un vidéos: liste demande:

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

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

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 on vous demandera peut-être des informations de facturation en fonction du nombre de demandes d'API que vous avez l'intention de faire. Cependant, quelques millions de demandes par jour sont gratuites.

Article source.


357
2018-01-21 09:58



Ce qu'Asaph a dit est juste. Cependant, toutes les vidéos YouTube ne contiennent pas toutes les neuf miniatures, mais sept vignettes sont disponibles pour chaque vidéo. Elles sont:

(La taille de l'image dépend de la vidéo.)

  • Miniature d'arrière-plan du lecteur (480x360 pixels)
    https://i1.ytimg.com/vi/G0wGs3useV8/0.jpg

  • Démarrer la miniature (120x90 pixels)
    https://i1.ytimg.com/vi/G0wGs3useV8/1.jpg

  • Miniature du milieu (120x90 pixels)
    https://i1.ytimg.com/vi/G0wGs3useV8/2.jpg

  • Fin Vignette (120x90 pixels)
    https://i1.ytimg.com/vi/G0wGs3useV8/3.jpg

  • Miniature de haute qualité (480x360 pixels)
    https://i1.ytimg.com/vi/G0wGs3useV8/hqdefault.jpg

  • Miniature de qualité moyenne (320 x 180 pixels)
    https://i1.ytimg.com/vi/G0wGs3useV8/mqdefault.jpg

  • Miniature de qualité normale (120x90 pixels)
    https://i1.ytimg.com/vi/G0wGs3useV8/default.jpg

Et en outre, les deux vignettes suivantes peuvent exister ou non. Pour les vidéos HQ ils existent.

  • Miniature de définition standard (640x480 pixels)
    https://i1.ytimg.com/vi/G0wGs3useV8/sddefault.jpg

  • Miniature de résolution maximale (1920x1080 pixels)
    https://i1.ytimg.com/vi/G0wGs3useV8/maxresdefault.jpg

Vous pouvez obtenir les scripts JavaScript et PHP pour récupérer les vignettes et autres Informations YouTube dans

Utilisez également l'outil Générateur d'informations vidéo YouTube pour obtenir tous les informations d'une vidéo YouTube en soumettant une URL ou ID vidéo.


199
2017-12-12 11:17



Dans YouTube API V3, nous pouvons également utiliser ces URL pour obtenir des miniatures ... 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 avantage de ces URL sur les URL dans la première réponse est que ces URL ne sont pas bloquées par les pare-feu.


66
2017-08-23 10:23



Si vous souhaitez obtenir la plus grande image de YouTube pour un ID de vidéo spécifique, l'URL doit ressembler à ceci:

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

À l'aide de l'API, vous pouvez récupérer l'image miniature par défaut. Le code simple devrait être quelque chose comme 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);

46
2017-12-22 05:44



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

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

Et si vous ne pouvez pas utiliser .webp extension, vous pouvez le faire comme ceci:

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

En outre, si vous avez besoin de l'utilisation de la version non mise à l'échelle maxresdefault au lieu de mqdefault.

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


39
2018-06-08 11:59



J'ai fait une fonction pour ne récupérer que 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;
}

27
2017-12-18 10:29



Dans YouTube Data API v3, vous pouvez obtenir des vignettes vidéo avec le vidéos-> liste fonction. De snippet.thumbnails. (clé), vous pouvez choisir la vignette par défaut, moyenne ou haute résolution, et obtenir sa largeur, hauteur et URL.

Vous pouvez également mettre à jour les vignettes avec vignettes-> ensemble fonctionnalité.

Pour des exemples, vous pouvez consulter le Exemples d'API YouTube projet. (PHP.)


26
2018-05-28 17:45



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 XML renvoyé a un media:thumbnail élément, qui contient l'URL de la vignette.


25
2018-01-14 23:40