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

si j'ai une URL Vidéo YouTube, y a-t-il un moyen d'utiliser PHP et cURL pour obtenir la vignette associée à partir de L'API YouTube?

2069
demandé sur Salman A 2010-01-15 02:34:24

30 réponses

chaque vidéo YouTube a 4 images générées. 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 dans la liste est une image pleine grandeur et d'autres sont des images miniatures. La valeur par défaut de vignette (ie. 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 de haute qualité de la vignette utiliser une url similaire à celle-ci:

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

il y a aussi un médium version de qualité de la vignette, en utilisant une url similaire au HQ:

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

pour la version 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 utiliser 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. En outre ,le nom d'hôte légèrement plus court i3.ytimg.com fonctionne à la place de img.youtube.com dans l'exemple de l'url ci-dessus.

alternativement, vous pouvez utiliser L'API de données YouTube (v3) pour obtenir des images miniatures.

3968
répondu Asaph 2018-06-27 04:10:36

vous pouvez utiliser API données YouTube pour récupérer des vignettes vidéo, légende, description, évaluation, statistiques et plus. La version 3 de L'API nécessite 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 que vous avez besoin d'une clé, on pourrait vous demander des informations de facturation en fonction du nombre de requêtes API que vous prévoyez de faire. Cependant, quelques millions de requêtes par jour sont gratuites.

Article Source .

362
répondu Salman A 2015-11-07 11:07:29

ce qu'Asaph a dit est juste. Cependant, toutes les vidéos sur YouTube ne contiennent pas les neuf vignettes, mais il y en a sept pour chaque vidéo. Ce sont:

(la taille de L'Image dépend de la vidéo.)

  • lecteur Fond miniature (480x360 pixels)

    https://i1.ytimg.com/vi/G0wGs3useV8/0.jpg

  • Démarrer Miniature (120x90 pixels)

    https://i1.ytimg.com/vi/G0wGs3useV8/1.jpg

  • vignette du milieu (120x90 pixels)

    https://i1.ytimg.com/vi/G0wGs3useV8/2.jpg

  • vignette D'extrémité (120x90 pixels)

    https://i1.ytimg.com/vi/G0wGs3useV8/3.jpg

  • vignette de haute qualité (480x360 pixels)

    https://i1.ytimg.com/vi/G0wGs3useV8/hqdefault.jpg

  • vignette de qualité moyenne (320x180 pixels)

    https://i1.ytimg.com/vi/G0wGs3useV8/mqdefault.jpg

  • vignette de qualité normale (120x90 pixels)

    https://i1.ytimg.com/vi/G0wGs3useV8/default.jpg

et en outre, les deux vignettes suivantes peuvent ou non exister. Pour les vidéos du QG ils existent.

  • définition standard vignette (640x480 pixels)

    https://i1.ytimg.com/vi/G0wGs3useV8/sddefault.jpg

  • vignette 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 des vignettes et d'autres Informations sur YouTube dans

Également utiliser l'outil Vidéo YouTube de l'Information Générateur pour obtenir tous les l'information D'une vidéo YouTube en soumettant un URL ou de la vidéo ID.

200
répondu AGMG 2016-11-02 01:07:49

dans YouTube API V3 nous pouvons également utiliser ces URLs pour obtenir des vignettes... Ils sont classés 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 URLs par rapport aux URLs de la première réponse est que ces URLs ne sont pas bloquées par des pare-feu.

66
répondu Naren 2014-02-02 11:04:38

si vous voulez la plus grande image de YouTube pour un ID vidéo spécifique, alors L'URL devrait être quelque chose comme ceci:

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

avec L'API, vous pouvez récupérer l'image 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);
47
répondu PoorBoy 2014-02-02 11:00:46

Si vous voulez vous débarrasser de la "barres noires" et le faire comme YouTube ne, 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

aussi, si vous avez besoin de la version non scellée, utilisez maxresdefault au lieu de mqdefault .

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

40
répondu LuTz 2016-07-09 16:50:30

j'ai créé une fonction pour récupérer uniquement les images existantes sur 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
répondu Henrik Albrechtsson 2015-10-07 07:59:46

dans API données YouTube v3 , vous pouvez obtenir les vignettes de la vidéo avec le vidéos->liste fonction. De extrait de.vignette.(key) , 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 la fonctionnalité vignettes->définir .

Pour des exemples, vous pouvez consulter le API YouTube Échantillons du projet. ( PHP .)

26
répondu Ibrahim Ulukaya 2014-02-02 11:01:59

vous pouvez obtenir la 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 ya des informations ici . Le XML retourné comporte un élément media:thumbnail , qui contient l'URL de la vignette.

25
répondu keyboardP 2010-01-14 23:40:57
// 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;
20
répondu Mahendra Tyagi 2014-02-02 11:03:41

YouTube est la propriété de Google et Google aime avoir un nombre raisonnable d'images pour différentes tailles d'écran donc ses images sont stockées dans des tailles différentes, voici un exemple de la façon dont votre vignette comme will il aime""

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
16
répondu life evader 2015-12-02 19:01:26

YOUTUBE API VERSION 3 * * UP AND RUNNING IN 2 MINUTES * *

si tout ce que vous voulez faire est la recherche YouTube et obtenir des propriétés associées:

  1. Obtenir une API PUBLIQUE -- Ce Lien donne la bonne direction

2.Utilisez la chaîne de requête ci-dessous. La requête de recherche (dénotée par q= ) dans la chaîne d'url est stackoverflow par exemple. YouTube vous renverra alors une réponse json où vous pourrez ensuite analyser pour Thumbnail, Snippet, auteur, etc.

https://www.googleapis.com/youtube/v3/search?part=id%2Csnippet&maxResults=50&q=stackoverflow&key=YOUR_API_KEY_HERE
13
répondu Chris 2014-03-14 16:20:18

utiliser:

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

ci-Dessus est le lien. En utilisant cela, vous pouvez trouver les caractéristiques YouTube des vidéos. Après avoir trouvé les caractéristiques, vous pouvez obtenir des vidéos de la catégorie choisie. Après cela, vous pouvez trouver des images vidéo sélectionnées en utilisant réponse D'Asaph .

essayez l'approche ci-dessus et vous pouvez tout analyser sur YouTube API .

12
répondu Nikh1414 2017-05-23 12:18:26

j'ai utilisé des vignettes YouTube de cette façon:

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

souvenez-vous YouTube empêche d'inclure des Images directement à partir de leur serveur

11
répondu blacksunshineCoding 2015-05-06 10:55:02

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

10
répondu Scott Joudry 2016-02-09 18:31:50

juste pour ajouter/étendre sur les solutions données, je pense qu'il est nécessaire de noter que, comme j'ai eu ce problème moi-même, on peut effectivement saisir plusieurs vidéos YouTube contenu, dans ce cas, des vignettes, avec une demande 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);

?>
10
répondu Hlawuleka MAS 2017-08-15 15:10:06

une fonction php simple que j'ai créé pour la vignette youtube et les types sont

  • par défaut
  • 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;}
    
9
répondu Arun Yokesh 2015-09-24 06:24:45

une autre bonne alternative serait d'utiliser L'API oEmbed qui est prise en charge par YouTube.

il vous suffit d'ajouter votre Url YouTube à l'url oEmbed et vous recevrez un JSON comprenant une vignette et le code html pour l'intégration.

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
}

Lire la Documentation pour plus "" Information .

9
répondu Andresch Serj 2017-03-08 08:24:34

Si vous utilisez l'api publique, la meilleure façon de le faire est d'utiliser des instructions if.

si la vidéo est publique ou non, vous définissez la vignette en utilisant 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';
}
7
répondu Harvey Connor 2016-05-17 21:28:43

API données YouTube

YouTube nous fournit les 4 images générées pour chaque vidéo à travers L'API de données( v3), Pour 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

accéder aux Images Via API

  1. obtenez D'abord votre clé API publique à Google API Console .
  2. selon la référence de la vignette de YouTube dans la documentation API , vous devez accéder aux ressources sur snippet.vignette.
  3. comme suit, vous devez formuler votre URL comme ceci -

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

changez maintenant votrevideoid et yourApiKey en votre id vidéo respectif et la clé api et sa réponse sera une sortie JSON vous fournissant les 4liens dans les vignettes de la variable snippet (si tous sont disponibles).

6
répondu Daksh Miglani 2017-03-22 15:26:48

je pense que leur sont beaucoup de réponse pour vignette, mais je veux ajouter quelques autres urls pour obtenir vignette youtube très facilement. Je prends juste quelques textos 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 de haute qualité de la vignette utiliser une url similaire à celle-ci:

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

il y a aussi une version de qualité moyenne de la vignette, en utilisant une url similaire au HQ:

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

pour la version 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 utiliser une url similaire à celle-ci:

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

J'espère que ça aidera quelqu'un dans un futur proche.

5
répondu Kumar 2016-10-24 15:29:19

vous pouvez obtenir l'ID de la vidéo à partir de L'url de la vidéo YouTube en utilisant parse_url , parse_str puis insérez dans les URL prédictives pour les images. Merci à YouTube pour les URLs 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://codeatools.com/get-youtube-video-thumbnails

5
répondu Rinto George 2018-07-01 12:05:04
    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');
4
répondu Nimesh Vagadiya 2017-10-26 10:29:52

réponse Sommet optimisé pour une utilisation manuelle. Le jeton d'identification vidéo sans séparateurs permet de sélectionner avec un double clic.

chaque vidéo YouTube a 4 images générées. 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 dans la liste est une image pleine grandeur et d'autres sont des images miniatures. La valeur par défaut de vignette (ie. l'un des 1.jpg , 2.jpg , 3.jpg ) est:

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

pour la version de haute qualité de la vignette utiliser une url similaire à celle-ci:

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

il y a aussi une version de qualité moyenne de la vignette, en utilisant une url similaire au HQ:

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

pour la version 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 utiliser une url similaire à celle-ci:

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

Toutes les url ci-dessus sont disponibles sur http. En outre, le nom d'hôte légèrement plus court i3.ytimg.com fonctionne à la place de img.youtube.com dans les urls de l'exemple ci-dessus.

alternativement, vous pouvez utiliser le API de données YouTube (v3) pour obtenir des images miniatures.

0
répondu Lycan 2018-02-24 21:59:26

Méthode 1:

vous pouvez trouver la vidéo youtube toutes les informations avec la page json qui a même " thumbnail_url" http://www.youtube.com/oembed?format=json&url = {l'url de votre vidéo va ici}

, comme final url look + php un code de test 151950920"

$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 aussi voir https://www.youtube.com/watch?v=mXde7q59BI8 tutoriel vidéo 1

Méthode 2: l'utilisation de youtube img lien https://img.youtube.com/vi/ "insérez-youtube-video-id-ici"/par défaut.jpg

Méthode 3: utiliser le code source du navigateur pour obtenir la vignette utiliser le lien url de la vidéo - aller au code source de la vidéo et rechercher thumbnailurl Vous pouvez maintenant utiliser cette url dans votre sorce Code: {img src="https://img.youtube.com/vi/"insérer-youtube-video-id-ici"/default.jpg"}

pour plus de détails, vous pouvez aussi voir http://hzonesp.com/php/get-youtube-video-thumbnail-using-id / ou https://www.youtube.com/watch?v=9f6E8MeM6PI tutoriel vidéo 2

0
répondu Hassan Saeed 2018-04-10 13:35:12

voici une fonction simple que j'ai créée pour obtenir les vignettes, elle est facile à comprendre et à utiliser. $link est le lien youtube copié exactement comme il est sur 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
répondu Mustapha Sodruldeen 2018-04-22 16:03:30

utilisez ceci - img.youtube.com/vi/YouTubeID/ImageFormat.jpg ici les formats d'image sont différents comme par défaut, hqdefault, maxresdefault.

0
répondu shpwebhost 2018-08-29 09:55:55

c'est ma solution sans clé API côté client.

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
répondu asdfasdfads 2018-09-23 15:50:44
public const string tubeThumb = "http://i.ytimg.com/vi/[id]/hqdefault.jpg";
vid.Thumbnail = tubeThumb.Replace("[id]", vid.VideoID);
-1
répondu Rajat Jain 2017-02-16 05:59:32

Enregistrer le fichier sous .js

  var maxVideos = 5;
  $(document).ready(function(){
  $.get(
    "https://www.googleapis.com/youtube/v3/videos",{
      part: 'snippet,contentDetails',
      id:'your_video_id',
      kind: 'youtube#videoListResponse',
      maxResults: maxVideos,
      regionCode: 'IN',
      key: 'Your_API_KEY'},
      function(data){
        var output;
        $.each(data.items, function(i, item){
          console.log(item);
                thumb = item.snippet.thumbnails.high.url;
          output = '<div id="img"><img src="' + thumb + '"></div>';
          $('#thumbnail').append(output);
        })
        
      }
    );
}); 
.main{
 width:1000px;
 margin:auto;
}
#img{
float:left;
display:inline-block;
margin:5px;
}
<!DOCTYPE html>
<html>
<head>
  <title>Thumbnails</title>
  <script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js" type="text/javascript"></script>
</head>
<body>
<div class="main">
 <ul id="thumbnail"> </ul>
</div>
</body>
</html>
-2
répondu Shahzaib Chadhar 2018-05-04 07:56:35