Si j'ai une URL de vidéo YouTube, existe-t-il un moyen d'utiliser PHP et cURL pour obtenir la miniature associée de l'API YouTube?
Si j'ai une URL de vidéo YouTube, existe-t-il un moyen d'utiliser PHP et cURL pour obtenir la miniature associée de l'API YouTube?
Réponses:
Chaque vidéo YouTube contient quatre 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
La première 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 ( par exemple, 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, 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 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. En outre, le nom d'hôte légèrement plus court i3.ytimg.com
fonctionne à la place des img.youtube.com
URL d'exemple ci-dessus.
Vous pouvez également utiliser l' API YouTube Data (v3) pour obtenir des images miniatures.
http://www.img.youtube.com
, seulementhttp://img.youtube.com
mqdefault
16: 9
sddefault
et maxresdefault
NE SONT PAS TOUJOURS DISPONIBLES, certaines vidéos les ont cependant ....
Vous pouvez utiliser l' API YouTube Data pour récupérer les vignettes vidéo, la légende, la description, la note, les statistiques et plus encore. L'API version 3 nécessite une clé *. Obtenez la clé et créez une vidéo: demande de liste :
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);
Production
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 il se peut que l'on vous demande des informations de facturation en fonction du nombre de demandes d'API que vous prévoyez de faire. Cependant, quelques millions de demandes par jour sont gratuites.
jsonc
place de json
getJSON. Il échoue en raison de votre mauvaise structure JSON.
jsonc
. Les exemples jQuery et PHP DOIVENT utiliser json
. Et j'ai mis à jour le code pour le rendre conforme à la nouvelle structure JSON. J'utilise le code en ce moment et cela fonctionne EN DIRECT. alors ne dites pas que cela ne fonctionne pas sans lire les modifications. Merci!
v=2
) prend en charge les modifications d'API.
Ce qu'Asaph a dit est juste. Cependant, toutes les vidéos YouTube ne contiennent pas les neuf miniatures. De plus, la taille des images des vignettes dépend de la vidéo (les nombres ci-dessous sont basés sur une seule).
Il existe sept miniatures 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 miniatures peuvent ou non exister. Leur présence est probablement basée sur 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 miniatures et d'autres informations YouTube dans:
Vous pouvez également utiliser l' outil Générateur d'informations sur les vidéos YouTube pour obtenir toutes les informations sur une vidéo YouTube en soumettant une URL ou un identifiant vidéo.
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 par rapport aux URL de la première réponse est que ces URL ne sont pas bloquées par les pare-feu.
Si vous voulez la plus grande image de YouTube pour un ID de vidéo spécifique, l'URL devrait ressembler à ceci:
http://i3.ytimg.com/vi/SomeVideoIDHere/0.jpg
En utilisant 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);
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 l' .webp
extension de fichier, vous pouvez le faire comme ceci:
https://i.ytimg.com/vi/<video id>/mqdefault.jpg
De plus, si vous avez besoin de la version non mise à l'échelle, utilisez maxresdefault
plutôt que mqdefault
.
Remarque: je ne suis pas sûr du rapport hauteur / largeur si vous prévoyez d'utiliser maxresdefault
.
_webp
et remplacez l'extension par .jpg
. Exemple de travail: i.ytimg.com/vi/mJ8tq8AnNis/mqdefault.jpg , je ne suis pas sûr du rapport d'aspect.
J'ai créé une fonction pour récupérer 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;
}
Dans YouTube Data API v3 , vous pouvez obtenir les vignettes des vidéos avec la fonction vidéos-> liste . À partir de snippet.thumbnails. (Clé) , vous pouvez choisir la vignette par défaut, moyenne ou haute résolution, et obtenir sa largeur, sa hauteur et son URL.
Vous pouvez également mettre à jour les miniatures avec la fonctionnalité miniatures-> définir .
Pour des exemples, vous pouvez consulter le projet d' exemples d'API YouTube . ( PHP ).
Vous pouvez obtenir l' entrée vidéo qui contient l'URL de la miniature de la vidéo. Il y a un exemple de code dans le lien. Ou, si vous souhaitez analyser XML, il y a des informations ici . Le XML renvoyé contient un media:thumbnail
élément, qui contient l'URL de la miniature.
// 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 appartient à Google et Google aime avoir un nombre raisonnable d'images pour différentes tailles d'écran, donc ses images sont stockées dans différentes tailles. Voici un exemple de la forme de votre miniature:
Vignette de faible 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
Si tout ce que vous voulez faire, c'est rechercher sur YouTube et obtenir les propriétés associées:
Obtenez une API publique - Ce lien donne une bonne direction
Utilisez la chaîne de requête ci-dessous. La requête de recherche (notée q = ) dans la chaîne URL est stackoverflow à titre d'exemple. YouTube vous enverra alors une réponse JSON où vous pourrez ensuite analyser la vignette, l'extrait de code, l'auteur, etc.
Une autre bonne alternative serait d'utiliser l' API oEmbed qui est prise en charge par YouTube.
Vous ajoutez simplement 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%3DxUeJdWYdMmQ
Vous donnerait:
{
"height":270,
"width":480,
"title":"example video for 2020",
"thumbnail_width":480,
"html":"...",
"thumbnail_height":360,
"version":"1.0",
"provider_name":"YouTube",
"author_url":"https:\/\/www.youtube.com\/channel\/UCza6VSQUzCON- AzlsrOLwaA",
"thumbnail_url":"https:\/\/i.ytimg.com\/vi\/xUeJdWYdMmQ\/hqdefault.jpg",
"author_name":"Pokics",
"provider_url":"https:\/\/www.youtube.com\/",
"type":"video"
}
Lisez la documentation pour plus d' informations .
Utilisation:
https://www.googleapis.com/youtube/v3/videoCategories?part=snippet,id&maxResults=100®ionCode=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 sélectionnée. Après cela, vous pouvez trouver des images vidéo sélectionnées en utilisant la réponse d'Asaph .
Essayez l'approche ci-dessus et vous pouvez tout analyser à partir de l' API YouTube .
J'ai utilisé les miniatures 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 depuis leur serveur.
J'ai trouvé cet outil astucieux qui vous 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 j'ai eu ce problème moi-même, on peut réellement saisir plusieurs contenus de vidéos YouTube, dans ce cas, des miniatures, avec une demande HTTP:
En utilisant un client de repos, 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);
?>
YouTube nous fournit les quatre images générées pour chaque vidéo via l'API Data (v3), par exemple,
Selon 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 en votre ID vidéo et clé api respectifs et sa réponse sera une sortie JSON vous fournissant les quatre liens dans les vignettes de la variable d'extrait (si tous sont disponibles).
Vous pouvez obtenir l'ID vidéo à partir de l'URL de la vidéo YouTube en utilisant parse_url , parse_str , puis 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/$ytID/maxresdefault.jpg";
print "https://img.youtube.com/vi/$ytID/mqdefault.jpg";
print "https://img.youtube.com/vi/$ytID/hqdefault.jpg";
print "https://img.youtube.com/vi/$ytID/sddefault.jpg";
print "https://img.youtube.com/vi/$ytID/default.jpg";
Vous pouvez utiliser cet outil pour générer des miniatures YouTube
https://tools.tutsplanet.com/index.php/get-youtube-video-thumbnails
Une simple fonction PHP que j'ai créée pour la vignette YouTube et les types sont
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 if
instructions.
Si la vidéo est publique ou non répertoriée, vous définissez la miniature à l'aide de la méthode URL. Si la vidéo est privée, vous utilisez l'API pour obtenir la miniature.
<?php
if($video_status == 'unlisted'){
$video_thumbnail = 'http://img.youtube.com/vi/'.$video_url.'/mqdefault.jpg';
$video_status = '<i class="fa fa-lock"></i> Unlisted';
}
elseif($video_status == 'public'){
$video_thumbnail = 'http://img.youtube.com/vi/'.$video_url.'/mqdefault.jpg';
$video_status = '<i class="fa fa-eye"></i> Public';
}
elseif($video_status == 'private'){
$video_thumbnail = $playlistItem['snippet']['thumbnails']['maxres']['url'];
$video_status = '<i class="fa fa-lock"></i> Private';
}
Je pense que ce sont de nombreuses réponses pour les vignettes, mais je veux ajouter d'autres URL pour obtenir la vignette YouTube très facilement. Je prends juste un texte de la réponse d'Asaph. Voici quelques URL pour obtenir des miniatures 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 à la 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
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');
Voici la meilleure réponse optimisée 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 contient quatre 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
La première de la liste est une image en taille réelle et d'autres sont des images miniatures. (. -À- dire une de l'image de la vignette par défaut 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, 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 au 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
fonctionne à la place deimg.youtube.com
URL d'exemple ci-dessus.
Vous pouvez également utiliser l' API YouTube Data (v3) pour obtenir des images miniatures.
Méthode 1:
Vous pouvez trouver 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= {l'URL de votre vidéo va ici}
Comme l'URL finale + le 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);
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 Comment obtenir une miniature de vidéo YouTube en utilisant id ou https://www.youtube.com/watch?v=mXde7q59BI8 tutoriel vidéo 1
Méthode 2:
En utilisant le lien d'image YouTube, https://img.youtube.com/vi/ "insert-youtube-video-id-here" /default.jpg
Méthode 3:
Utilisation du code source du navigateur pour obtenir la miniature à l'aide du lien URL vidéo - accédez au code source de la vidéo et recherchez thumbnailurl. Vous pouvez maintenant 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 miniature de vidéo YouTube en utilisant id ou https://www.youtube.com/watch?v=9f6E8MeM6PI tutoriel vidéo 2
https://www.youtube.com/watch?v=mXde7q59BI8
et https://www.youtube.com/watch?v=9f6E8MeM6PI
sont (effectivement) rompus.
Utilisation img.youtube.com/vi/YouTubeID/ImageFormat.jpg
Ici, les formats d'image sont différents comme default, hqdefault, maxresdefault.
Ceci est ma solution côté client uniquement sans clé API.
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 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;
}
&t=227s
?
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.
public const string tubeThumb = "http://i.ytimg.com/vi/[id]/hqdefault.jpg";
vid.Thumbnail = tubeThumb.Replace("[id]", vid.VideoID);