Question

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

Était-ce utile?

La solution

Chaque vidéo YouTube a quatre images générées. Ils sont formatés comme suit on pouvait s'y attendre:

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 d'autres sont des images miniatures. La valeur par défaut image miniature (à savoir, l'un des 1.jpg, 2.jpg, 3.jpg) est la suivante:

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

Pour la version haute qualité de la vignette utiliser une URL semblable à ceci:

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

Il existe également une version de qualité moyenne de la vignette, en utilisant une URL semblable au QG:

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

Pour la version standard de définition de la vignette, utiliser une URL semblable à ceci:

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

Pour la version de la résolution maximale de la vignette utiliser une URL semblable à ceci:

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 i3.ytimg.com un peu plus court travaille à la place de img.youtube.com dans les exemples d'URL ci-dessus.

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

Autres conseils

Vous pouvez utiliser Data API YouTube pour récupérer les vignettes vidéo , la légende, la description, note, statistiques et plus encore. API version 3 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é, vous pouvez demander des renseignements de facturation en fonction du nombre de demandes d'API que vous envisagez de faire. Cependant, quelques millions de requêtes par jour sont gratuits.

article Source .

Qu'est-ce que Asaph a dit est vrai. Cependant, toutes les vidéos YouTube contient les neuf vignettes. En outre, les tailles d'image de miniatures dépend de la vidéo (les numéros ci-dessous sont basés sur un).

Il y a sept vignettes garanties existent:

| 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 est probablement basée sur si la vidéo est de haute qualité.

| 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 les vignettes et autres informations YouTube:

Vous pouvez également utiliser la outil de générateur d'information vidéo YouTube pour obtenir toutes les informations sur une vidéo YouTube en soumettant une id URL ou vidéo.

Dans la version 3 de l'API YouTube, nous pouvons également utiliser ces URL 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

L'un des avantages de ces URL sur les URL dans la première réponse est que ces URL ne seront pas bloqués par les pare-feu.

Si vous voulez que la plus grande image de YouTube pour un ID vidéo spécifique, l'URL doit être quelque chose comme ceci:

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

En utilisant l'API, vous pouvez prendre l'image de vignette 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);

Si vous voulez vous débarrasser des « barres noires » et de 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 l'extension de fichier .webp vous pouvez le faire comme ceci:

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

En outre, si vous avez besoin de la version non ajusté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

.

J'ai fait fonction chercher uniquement les images existantes à partir 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;
}

API de données YouTube v3 , vous pouvez obtenir des vignettes de vidéo avec le Videos-> liste de fonction . De snippet.thumbnails. (Clé) , vous pouvez choisir la valeur par défaut, moyenne ou miniature haute résolution, et obtenir sa largeur, la hauteur et l'URL.

Vous pouvez également mettre à jour les vignettes avec la thumbnails-> set fonctionnalité .

Pour des exemples, vous pouvez consulter le YouTube Les échantillons API projet. ( les PHP .)

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

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

YouTube est la propriété de Google et Google aime avoir un nombre raisonnable d'images pour différentes tailles d'écran, d'où ses images sont stockées dans différentes tailles. Voici un exemple de la façon dont l'ongle du pouce sera comme:

miniature de faible qualité:

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

miniature de qualité moyenne:

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

miniature de haute qualité:

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

vignette qualité maximale:

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

YouTube version API 3 et en cours d'exécution en 2 minutes

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

  1. Obtenir un API publique - Ce lien donne une bonne direction

  2. Utilisez ci-dessous chaîne de requête. La requête de recherche (notée q = ) dans la chaîne URL est stackoverflow à titre d'exemple. YouTube alors vous renvoyer une réponse JSON où vous pouvez ensuite analyser pour Miniature, Snippet, Auteur, etc.

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

Utilisation:

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

est dessus du lien. En utilisant, 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 sélectionnée. Après vous pouvez trouver une sélection de photos vidéo en utilisant la réponse de Asaph .

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

Je l'ai utilisé les vignettes YouTube ainsi:

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

Rappelez-vous YouTube empêche d'inclure des images directement à partir de leur serveur.

J'ai trouvé ce que vous nifty outil permet de créer l'image avec le bouton de lecture YouTube placé sur l'image:

Juste pour ajouter / développer les solutions données, je pense qu'il est nécessaire de noter que, comme je l'ai eu ce problème moi-même, on peut effectivement saisir plusieurs contenu de vidéos YouTube, dans ce cas, les vignettes, avec une requête HTTP:

L'utilisation d'un dans ce cas, le repos client, 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);

?>

Une autre bonne alternative serait d'utiliser le oEmbed API qui est pris en charge par YouTube.

Vous ajoutez simplement votre URL YouTube à l'URL oEmbed et vous recevrez un JSON incluant 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

Souhaitez-vous donner:

{
  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 informations .

Une simple fonction PHP j'ai créé 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;}

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

Si la vidéo est public ou non cotées, 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';
    }

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. d'abord obtenir votre clé API public Google API Console .
  2. Selon la référence des vignettes de YouTube dans la documentation API , vous devez accéder aux ressources snippet.thumbnails.
  3. Comme par cela, vous devez formuler votre URL comme ceci -

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

Maintenant, changez votre ID vidéo et votre clé API pour la vidéo de votre ID respectif et clé api et sa réponse sera une sortie JSON vous fournissant les quatre liens dans les vignettes de variable d'extrait (si tous sont disponibles).

Vous pouvez obtenir l'ID vidéo de l'URL vidéo YouTube en utilisant parse_url parse_str puis insérer dans les URL pour les images prédictives . 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-vignettes

Je pense que leur sont un bon nombre de réponses pour la vignette, mais je veux ajouter d'autres URL pour obtenir la vignette YouTube très facilement. Je prends juste un texte de la réponse de 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 utiliser une URL semblable à ceci:

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

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

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

Pour la version standard de définition de la vignette, utiliser une URL semblable à ceci:

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

Pour la version de la résolution maximale de la vignette utiliser une URL semblable à ceci:

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

La partie supérieure réponse est optimisé pour une utilisation manuelle. Le jeton d'identification vidéo sans séparateurs permet la sélection d'un double clic.

Chaque vidéo YouTube a quatre images générées. Ils sont formatés comme suit on pouvait s'y attendre:

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 d'autres sont des images miniatures. L'image de la vignette par défaut (.-À-dire l'un des 1.jpg, 2.jpg, 3.jpg) est la suivante:

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

Pour la version haute qualité de la vignette utiliser une URL semblable à ceci:

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

Il existe également une version de qualité moyenne de la vignette, en utilisant une URL semblable au QG:

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

Pour la version standard de définition de la vignette, utiliser une URL semblable à ceci:

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

Pour la version de la résolution maximale de la vignette utiliser une URL semblable à ceci:

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

Toutes les URL ci-dessus sont disponibles sur HTTP aussi. De plus, le nom d'hôte i3.ytimg.com un peu plus court travaille à la place de img.youtube.com dans les exemples d'URL ci-dessus.

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

Méthode 1:

Vous trouverez toutes les informations pour une vidéo YouTube avec une page JSON qui a même « thumbnail_url », http://www.youtube.com/oembed?format=json&url= { URL de votre vidéo va ici}

Comme aspect final URL + code de test PHP

$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 didacticiel vidéo 1

Méthode 2:

En utilisant le lien d'image YouTube, https://img.youtube.com/vi/ "insert-youtube-video-id- ici "/default.jpg

Méthode 3:

En utilisant le code source du navigateur pour obtenir miniatures à l'aide lien URL de la vidéo -Aller à code source vidéo et recherche de 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 voir Comment obtenir une vignette vidéo YouTube à l'aide id ou https://www.youtube.com/watch?v=9f6E8MeM6PI didacticiel vidéo 2

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

Voici les formats d'image sont différentes comme par défaut, hqdefault, maxresdefault.

Ceci est mon côté client uniquement non-API-clé requise solution.

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

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

$ link est le lien YouTube copié exactement comme 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;
}

Enregistrer ce code dans le fichier .php vide et le tester.

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

public const string tubeThumb = "http://i.ytimg.com/vi/[id]/hqdefault.jpg";
vid.Thumbnail = tubeThumb.Replace("[id]", vid.VideoID);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top