Wenn ich eine YouTube-Video-URL habe, gibt es eine Möglichkeit, PHP und cURL zu verwenden, um das zugehörige Miniaturbild von der YouTube-API abzurufen?
Wenn ich eine YouTube-Video-URL habe, gibt es eine Möglichkeit, PHP und cURL zu verwenden, um das zugehörige Miniaturbild von der YouTube-API abzurufen?
Antworten:
Jedes YouTube-Video enthält vier generierte Bilder. Sie sind vorhersehbar wie folgt formatiert:
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
Das erste Bild in der Liste ist ein Bild in voller Größe, andere sind Miniaturbilder. Die Standarddarstellung des Bildes ( das heißt, einer von 1.jpg
, 2.jpg
, 3.jpg
) ist:
https://img.youtube.com/vi/<insert-youtube-video-id-here>/default.jpg
Verwenden Sie für die hochwertige Version der Miniaturansicht eine ähnliche URL:
https://img.youtube.com/vi/<insert-youtube-video-id-here>/hqdefault.jpg
Es gibt auch eine Version der Miniaturansicht mittlerer Qualität, die eine URL ähnlich dem HQ verwendet:
https://img.youtube.com/vi/<insert-youtube-video-id-here>/mqdefault.jpg
Verwenden Sie für die Standarddefinitionsversion der Miniaturansicht eine ähnliche URL:
https://img.youtube.com/vi/<insert-youtube-video-id-here>/sddefault.jpg
Verwenden Sie für die Version des Miniaturbilds mit maximaler Auflösung eine ähnliche URL:
https://img.youtube.com/vi/<insert-youtube-video-id-here>/maxresdefault.jpg
Alle oben genannten URLs sind auch über HTTP verfügbar. Zusätzlich i3.ytimg.com
funktioniert der etwas kürzere Hostname anstelle der img.youtube.com
obigen Beispiel-URLs.
Alternativ können Sie die YouTube-Daten-API (Version 3) verwenden , um Miniaturbilder abzurufen.
http://www.img.youtube.com
, nurhttp://img.youtube.com
mqdefault
ist 16: 9
sddefault
und sind maxresdefault
nicht immer verfügbar Einige Videos haben sie aber ....
Mithilfe der YouTube-Daten-API können Sie Miniaturansichten, Beschriftungen, Beschreibungen, Bewertungen, Statistiken und mehr von Videos abrufen. Für API-Version 3 ist ein Schlüssel * erforderlich. Besorgen Sie sich den Schlüssel und erstellen Sie ein Video: Listenanforderung:
https://www.googleapis.com/youtube/v3/videos?key=YOUR_API_KEY&part=snippet&id=VIDEO_ID
Beispiel PHP Code
$data = file_get_contents("https://www.googleapis.com/youtube/v3/videos?key=YOUR_API_KEY&part=snippet&id=T0Jqdjbed40");
$json = json_decode($data);
var_dump($json->items[0]->snippet->thumbnails);
Ausgabe
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)
}
}
* Sie benötigen nicht nur einen Schlüssel, sondern werden möglicherweise auch nach Rechnungsinformationen gefragt, abhängig von der Anzahl der API-Anforderungen, die Sie planen. Es sind jedoch nur wenige Millionen Anfragen pro Tag kostenlos.
jsonc
anstelle von json
getJSON verwendet. Es schlägt aufgrund Ihrer falschen JSON-Struktur fehl.
jsonc
. Die Beispiele jQuery und PHP MÜSSEN verwendet werden json
. Und ich habe den Code aktualisiert, um ihn an die neue JSON-Struktur anzupassen. Ich benutze den Code gerade und er funktioniert LIVE. Sagen Sie also nicht, dass es nicht funktioniert, ohne die Änderungen zu lesen. Vielen Dank!
v=2
) werden auch API-Änderungen berücksichtigt.
Was Asaph gesagt hat, ist richtig. Allerdings enthält nicht jedes YouTube-Video alle neun Miniaturansichten. Die Bildgröße der Miniaturansichten hängt auch vom Video ab (die folgenden Zahlen basieren auf einem).
Es gibt garantiert sieben Miniaturansichten:
| 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 |
Darüber hinaus können die beiden anderen Miniaturansichten vorhanden sein oder nicht. Ihre Anwesenheit hängt wahrscheinlich davon ab, ob das Video von hoher Qualität ist.
| 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 |
JavaScript- und PHP-Skripte zum Abrufen von Miniaturansichten und anderen YouTube-Informationen finden Sie unter:
Sie können auch das YouTube Video Information Generator- Tool verwenden, um alle Informationen zu einem YouTube-Video abzurufen, indem Sie eine URL oder eine Video-ID eingeben.
In YouTube API V3 können wir diese URLs auch zum Abrufen von Miniaturansichten verwenden. Sie werden anhand ihrer Qualität klassifiziert.
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
Und für die maximale Auflösung ..
https://i1.ytimg.com/vi/<insert-youtube-video-id-here>/maxresdefault.jpg
Ein Vorteil dieser URLs gegenüber den URLs in der ersten Antwort besteht darin, dass diese URLs nicht von Firewalls blockiert werden.
Wenn Sie das größte Bild von YouTube für eine bestimmte Video-ID möchten, sollte die URL ungefähr so lauten:
http://i3.ytimg.com/vi/SomeVideoIDHere/0.jpg
Mithilfe der API können Sie Standard-Miniaturbilder abrufen. Einfacher Code sollte ungefähr so aussehen:
//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);
Wenn Sie die "schwarzen Balken" entfernen und es wie YouTube tun möchten, können Sie Folgendes verwenden:
https://i.ytimg.com/vi_webp/<video id>/mqdefault.webp
Und wenn Sie die .webp
Dateierweiterung nicht verwenden können, können Sie dies folgendermaßen tun:
https://i.ytimg.com/vi/<video id>/mqdefault.jpg
Wenn Sie die nicht skalierte Version benötigen, verwenden Sie maxresdefault
stattdessen anstelle von mqdefault
.
Hinweis: Ich bin mir über das Seitenverhältnis nicht sicher, ob Sie es verwenden möchten maxresdefault
.
_webp
die Erweiterung entfernen und in ändern .jpg
. Arbeitsbeispiel: i.ytimg.com/vi/mJ8tq8AnNis/mqdefault.jpg , ich bin mir über das Seitenverhältnis nicht sicher.
Ich habe eine Funktion erstellt, um nur vorhandene Bilder von YouTube abzurufen
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;
}
In YouTube Data API v3 können Sie die Miniaturansichten von Videos mit der Funktion videos-> list abrufen . Aus snippet.thumbnails. (Schlüssel) können Sie das Standard-Miniaturbild mit mittlerer oder hoher Auflösung auswählen und dessen Breite, Höhe und URL abrufen.
Sie können Thumbnails auch mit den Thumbnails-> set aktualisieren Funktion .
Beispiele finden Sie im YouTube API Samples- Projekt. ( PHP .)
Sie können die bekommen Video Eintrag , der die URL des Videos Thumbnail enthält. Der Link enthält einen Beispielcode. Wenn Sie XML analysieren möchten, finden Sie hier Informationen . Das zurückgegebene XML enthält ein media:thumbnail
Element, das die URL der Miniaturansicht enthält.
// 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 gehört Google und Google möchte eine angemessene Anzahl von Bildern für unterschiedliche Bildschirmgrößen haben. Daher werden die Bilder in unterschiedlichen Größen gespeichert. Hier ist ein Beispiel dafür, wie Ihr Miniaturbild aussehen wird:
Miniaturbild von geringer Qualität:
http://img.youtube.com/vi/<YouTube_Video_ID_HERE>/sddefault.jpg
Miniaturbild mittlerer Qualität:
http://img.youtube.com/vi/<YouTube_Video_ID_HERE>/mqdefault.jpg
Hochwertige Miniaturansicht:
http://img.youtube.com/vi/<YouTube_Video_ID_HERE>/hqdefault.jpg
Miniaturbild von maximaler Qualität:
http://img.youtube.com/vi/<YouTube_Video_ID_HERE>/maxresdefault.jpg
Wenn Sie nur YouTube durchsuchen und die zugehörigen Eigenschaften abrufen möchten:
Holen Sie sich eine öffentliche API - Dieser Link gibt eine gute Richtung
Verwenden Sie die folgende Abfragezeichenfolge. Die Suchabfrage (bezeichnet mit q = ) in der URL-Zeichenfolge ist beispielsweise ein Stapelüberlauf . YouTube sendet dir dann eine JSON-Antwort zurück, in der du nach Miniaturansichten, Snippets, Autoren usw. suchen kannst.
Eine weitere gute Alternative wäre die Verwendung des oEmbed von YouTube unterstützten API.
Sie fügen einfach Ihre YouTube-URL zur oEmbed-URL hinzu und erhalten einen JSON mit einer Miniaturansicht und dem HTML-Code zum Einbetten.
Beispiel:
http://www.youtube.com/oembed?format=json&url=http%3A//youtube.com/watch%3Fv%3DxUeJdWYdMmQ
Würde dir geben:
{
"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"
}
Weitere Informationen finden Sie in der Dokumentation .
Verwenden:
https://www.googleapis.com/youtube/v3/videoCategories?part=snippet,id&maxResults=100®ionCode=us&key=**Your YouTube ID**
Oben ist der Link. Auf diese Weise können Sie die YouTube-Eigenschaften von Videos ermitteln. Nachdem Sie Merkmale gefunden haben, können Sie Videos der ausgewählten Kategorie abrufen. Danach können Sie ausgewählte Videobilder mit Asaphs Antwort finden .
Wenn Sie den obigen Ansatz ausprobieren, können Sie alles über die YouTube- API analysieren .
Ich habe YouTube-Miniaturansichten folgendermaßen verwendet:
$url = 'http://img.youtube.com/vi/' . $youtubeId . '/0.jpg';
$img = dirname(__FILE__) . '/youtubeThumbnail_' . $youtubeId . '.jpg';
file_put_contents($img, file_get_contents($url));
Denken Sie daran, YouTube verhindert, dass Bilder direkt von ihrem Server aufgenommen werden.
Ich habe dieses raffinierte Tool gefunden, mit dem Sie das Bild mit der YouTube-Wiedergabetaste über dem Bild erstellen können:
Um die angegebenen Lösungen hinzuzufügen / zu erweitern, muss ich beachten, dass man, da ich dieses Problem selbst hatte, tatsächlich mehrere YouTube-Videoinhalte, in diesem Fall Miniaturansichten, mit einer HTTP-Anfrage abrufen kann:
Mit einem Rest-Client, in diesem Fall HTTPFUL, können Sie Folgendes tun:
<?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 stellt uns die vier generierten Bilder für jedes Video beispielsweise über die Daten-API (v3) zur Verfügung.
Aus diesem Grund müssen Sie Ihre URL folgendermaßen formulieren:
www.googleapis.com/youtube/v3/videos?part=snippet&id=`yourVideoId`&key=`yourApiKey`
Ändern Sie nun Ihre Video-ID und Ihren API-Schlüssel in Ihre jeweilige Video-ID und Ihren API-Schlüssel. Die Antwort ist eine JSON-Ausgabe, die Ihnen die vier Links in den Miniaturansichten der Snippet-Variablen enthält (sofern alle verfügbar sind).
Sie können die Video-ID mithilfe von parse_url , parse_str von der YouTube-Video-URL abrufen und dann in die Vorhersage-URLs für Bilder einfügen. Vielen Dank an YouTube für die prädiktiven URLs
$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";
Mit diesem Tool können Sie YouTube-Miniaturansichten erstellen
https://tools.tutsplanet.com/index.php/get-youtube-video-thumbnails
Eine einfache PHP-Funktion, die ich für das YouTube-Miniaturbild erstellt habe, und die Typen sind
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;}
Wenn Sie die öffentliche API verwenden, verwenden Sie am besten if
Anweisungen.
Wenn das Video öffentlich oder nicht aufgeführt ist, legen Sie die Miniaturansicht mithilfe der URL-Methode fest. Wenn das Video privat ist, verwenden Sie die API, um die Miniaturansicht abzurufen.
<?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';
}
Ich denke, es gibt viele Antworten auf Miniaturansichten, aber ich möchte einige andere URLs hinzufügen, um YouTube-Miniaturansichten sehr einfach zu erhalten. Ich nehme nur einen Text aus Asaphs Antwort. Hier sind einige URLs, um YouTube-Miniaturansichten zu erhalten:
https://ytimg.googleusercontent.com/vi/<insert-youtube-video-id-here>/default.jpg
Verwenden Sie für die hochwertige Version der Miniaturansicht eine ähnliche URL:
https://ytimg.googleusercontent.com/vi/<insert-youtube-video-id-here>/hqdefault.jpg
Es gibt auch eine Version des Miniaturbilds mittlerer Qualität, die eine URL verwendet, die der hohen Qualität ähnelt:
https://ytimg.googleusercontent.com/vi/<insert-youtube-video-id-here>/mqdefault.jpg
Verwenden Sie für die Standarddefinitionsversion der Miniaturansicht eine ähnliche URL:
https://ytimg.googleusercontent.com/vi/<insert-youtube-video-id-here>/sddefault.jpg
Verwenden Sie für die Version des Miniaturbilds mit maximaler Auflösung eine ähnliche URL:
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');
Hier ist die beste Antwort, die für den manuellen Gebrauch optimiert wurde. Das Video-ID-Token ohne Trennzeichen ermöglicht die Auswahl mit einem Doppelklick.
Jedes YouTube-Video enthält vier generierte Bilder. Sie sind vorhersehbar wie folgt formatiert:
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
Das erste Bild in der Liste ist ein Bild in voller Größe, andere sind Miniaturbilder. (. Also eines der Standard - Miniaturbild 1.jpg
, 2.jpg
, 3.jpg
) ist:
https://img.youtube.com/vi/YOUTUBEVIDEOID/default.jpg
Verwenden Sie für die hochwertige Version der Miniaturansicht eine ähnliche URL:
https://img.youtube.com/vi/YOUTUBEVIDEOID/hqdefault.jpg
Es gibt auch eine Version der Miniaturansicht mittlerer Qualität, die eine URL ähnlich dem HQ verwendet:
https://img.youtube.com/vi/YOUTUBEVIDEOID/mqdefault.jpg
Verwenden Sie für die Standarddefinitionsversion der Miniaturansicht eine ähnliche URL:
https://img.youtube.com/vi/YOUTUBEVIDEOID/sddefault.jpg
Verwenden Sie für die Version des Miniaturbilds mit maximaler Auflösung eine ähnliche URL:
https://img.youtube.com/vi/YOUTUBEVIDEOID/maxresdefault.jpg
Alle oben genannten URLs sind auch über HTTP verfügbar. Zusätzlich i3.ytimg.com
funktioniert der etwas kürzere Hostname anstelle der img.youtube.com
obigen Beispiel-URLs.
Alternativ können Sie die YouTube-Daten-API (Version 3) verwenden , um Miniaturbilder abzurufen.
Methode 1:
Sie finden alle Informationen für ein YouTube-Video mit einer JSON-Seite, die sogar "thumbnail_url" enthält. Http://www.youtube.com/oembed?format=json&url= {Ihre Video-URL finden Sie hier}
Wie endgültige URL aussehen + PHP-Testcode
$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
Weitere Informationen finden Sie auch unter So erhalten Sie eine Miniaturansicht eines YouTube-Videos mithilfe der ID oder des https://www.youtube.com/watch?v=mXde7q59BI8 Video-Tutorials 1
Methode 2:
Über den YouTube-Bildlink https://img.youtube.com/vi/ "insert-youtube-video-id-here" /default.jpg
Methode 3:
Verwenden des Browser-Quellcodes zum Abrufen von Miniaturansichten mithilfe des Video-URL-Links - Gehen Sie zum Video-Quellcode und suchen Sie nach Miniaturansichten. Jetzt können Sie diese URL in Ihren Quellcode verwenden:
{img src="https://img.youtube.com/vi/"insert-youtube-video-id-here"/default.jpg"}
Weitere Informationen finden Sie auch unter So erhalten Sie eine Miniaturansicht eines YouTube-Videos mithilfe der ID oder des https://www.youtube.com/watch?v=9f6E8MeM6PI Video-Tutorials 2
https://www.youtube.com/watch?v=mXde7q59BI8
und https://www.youtube.com/watch?v=9f6E8MeM6PI
sind (effektiv) kaputt.
Verwenden img.youtube.com/vi/YouTubeID/ImageFormat.jpg
Hier unterscheiden sich die Bildformate wie Standard, hqdefault, maxresdefault.
Dies ist meine clientseitige Lösung, für die kein API-Schlüssel erforderlich ist.
YouTube.parse('https://www.youtube.com/watch?v=P3DGwyl0mJQ').then(_ => console.log(_))
Der 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`
Dienstprogramm 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
})
}
Dienstprogramm 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
},
{})
}
Hier ist eine einfache Funktion, die ich zum Abrufen der Miniaturansichten erstellt habe. Es ist leicht zu verstehen und zu verwenden.
$ link ist der YouTube-Link, der genau so kopiert wird, wie er im Browser ist, z. B. 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
?
Speichern Sie diesen Code in einer leeren .php-Datei und testen Sie ihn.
<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';
}
Vielen Dank.
public const string tubeThumb = "http://i.ytimg.com/vi/[id]/hqdefault.jpg";
vid.Thumbnail = tubeThumb.Replace("[id]", vid.VideoID);