Wenn ich eine YouTube-Video-URL habe, gibt es eine Möglichkeit, PHP und cURL zu verwenden, um die zugehörige Miniaturansicht von der YouTube-API abzurufen?
Wie erhalte ich ein YouTube-Video-Thumbnail von der YouTube-API?
CodeOverload
Salmann A
Sie können verwenden YouTube-Daten-API zum Abrufen von Video-Thumbnails, Untertiteln, Beschreibungen, Bewertungen, Statistiken und mehr. API-Version 3 erfordert einen Schlüssel*. Besorgen Sie sich den Schlüssel und erstellen Sie a Videos: Liste Anfrage:
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 Sie werden möglicherweise auch nach Zahlungsinformationen gefragt, abhängig von der Anzahl der geplanten API-Anfragen. Einige tausend Anfragen pro Tag sind jedoch kostenlos.
-
FYI: Ich habe den Code nicht geändert, um ihn an die neue JSON-Struktur anzupassen. Der Code in Ihrem getJSON ist falsch. Du hast benutzt
jsonc
anstattjson
für getJSON. Es schlägt aufgrund Ihrer falschen JSON-Struktur fehl.– Mauris
24. Juni 2012 um 7:41 Uhr
-
Nur das erste Beispiel kann verwendet werden
jsonc
. Die jQuery- und PHP-Beispiele MUSS verwendenjson
. Und ich habe den Code aktualisiert, um der neuen JSON-Struktur zu entsprechen. Ich verwende den Code gerade und er funktioniert LIVE. Sagen Sie also nicht, dass es nicht funktioniert, ohne die Änderungen zu lesen. Danke!– Mauris
24. Juni 2012 um 7:44 Uhr
-
Die jQuery- und PHP-Beispiele MÜSSEN json verwenden… können Sie eine Referenz angeben? Auch das Anfordern einer bestimmten API-Versionsnummer (
v=2
) kümmert sich um API-Änderungen.– Salmann A
24. Juni 2012 um 7:47 Uhr
-
Der gdata-Aufruf gibt nicht zurück, ob maxresdefault.jpg für Videos verfügbar ist, wo es verfügbar ist, sondern nur mq/hq/sd.
– Aaron
20. Mai 2013 um 18:56 Uhr
-
API v3 ist SEHR schlecht dokumentiert. Sie geben Ihnen Beispielcode, aber der Abschnitt “Referenz” ist sehr kurz im Detail. Einige Dinge, die relativ “offensichtlich” sein sollten, scheinen extreme Problemumgehungen zu erfordern.
– Goldesel
3. Februar 2015 um 9:51 Uhr
-
Sie können das gleiche Ergebnis auch mit dem offiziellen YouTube-Link erzielen img.youtube.com/vi/mJ8tq8AnNis/mqdefault.jpg wobei mJ8tq8AnNis die Video-ID ist
– Ragaise
7. Oktober 2014 um 8:23 Uhr
-
Das Tool „YouTube Video Information Generator“ funktioniert derzeit nicht. Erwägen Sie, die Antwort zu bearbeiten.
– giovannipds
22. März 2017 um 22:57 Uhr
-
Empfehlen Entfernen Sie alle drei Links. Keiner von ihnen produziert etwas Nützliches, das ich sehen könnte.
– Bob Stein
1. März 2020 um 15:11 Uhr
-
FWIW, die YouTube-Frontend-Hardcodes
mqdefault.jpg
320×180 sein– Mattwmaster58
23. November 2021 um 7:34 Uhr
Naren
In YouTube API V3 können wir diese URLs auch zum Abrufen von Thumbnails verwenden… Sie werden nach 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.
-
Sollen diese Bilder in einem img-Tag platziert werden und sollten nur funktionieren, weil ich versuche, den Link mit der richtigen YouTube-Video-ID einzufügen und sie in das img-Tag einzufügen, aber ich erhalte immer wieder einen 404
– Lion789
1. November 2013 um 23:08 Uhr
-
@Lion789 Diese URLs funktionieren gut, wenn sie in einem img-Tag platziert werden. Das Problem könnte eine falsche Video-ID sein oder die angeforderte Auflösung ist möglicherweise nicht verfügbar, aber Sie erhalten bei diesen Fehlern kein 404. Bitte überprüfen Sie die URL der img-Tag.
– Naren
4. November 2013 um 5:42 Uhr
-
Ist bestätigt, dass die URLs weiterhin funktionieren, nachdem API v2 gestoppt wird?
– Daniel B
14. April 2015 um 13:19 Uhr
-
@DanieleB Diese URLs funktionieren immer noch. Wissen Sie, wie Sie überprüfen können, ob diese URLs nach API v2 funktionieren?
– Naren
15. April 2015 um 4:31 Uhr
Peter Mortensen
Wenn Sie das größte Bild von YouTube für eine bestimmte Video-ID haben möchten, sollte die URL etwa so lauten:
http://i3.ytimg.com/vi/SomeVideoIDHere/0.jpg
Mit der API können Sie das Standard-Thumbnail-Bild abrufen. Einfacher Code sollte etwa 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);
-
Sollen diese Bilder in einem img-Tag platziert werden und sollten nur funktionieren, weil ich versuche, den Link mit der richtigen YouTube-Video-ID einzufügen und sie in das img-Tag einzufügen, aber ich erhalte immer wieder einen 404
– Lion789
1. November 2013 um 23:08 Uhr
-
@Lion789 Diese URLs funktionieren gut, wenn sie in einem img-Tag platziert werden. Das Problem könnte eine falsche Video-ID sein oder die angeforderte Auflösung ist möglicherweise nicht verfügbar, aber Sie erhalten bei diesen Fehlern kein 404. Bitte überprüfen Sie die URL der img-Tag.
– Naren
4. November 2013 um 5:42 Uhr
-
Ist bestätigt, dass die URLs weiterhin funktionieren, nachdem API v2 gestoppt wird?
– Daniel B
14. April 2015 um 13:19 Uhr
-
@DanieleB Diese URLs funktionieren immer noch. Wissen Sie, wie Sie überprüfen können, ob diese URLs nach API v2 funktionieren?
– Naren
15. April 2015 um 4:31 Uhr
Zombo
Wenn Sie die “schwarzen Balken” loswerden und es wie YouTube machen möchten, können Sie Folgendes verwenden:
https://i.ytimg.com/vi_webp/<video id>/mqdefault.webp
Und wenn Sie die nicht verwenden können .webp
Dateierweiterung kannst du es so machen:
https://i.ytimg.com/vi/<video id>/mqdefault.jpg
Verwenden Sie auch, wenn Sie die unskalierte Version benötigen maxresdefault
anstatt mqdefault
.
Hinweis: Ich bin mir nicht sicher über das Seitenverhältnis, wenn Sie es verwenden möchten maxresdefault
.
-
Dies ist für viele Videos nicht verfügbar. Z.B: i.ytimg.com/vi_webp/mJ8tq8AnNis/mqdefault.webp
– NickG
8. Juli 2016 um 15:43 Uhr
-
@NickG: Es funktioniert, wenn Sie entfernen
_webp
und ändern Sie die Erweiterung in.jpg
. Arbeitsbeispiel: i.ytimg.com/vi/mJ8tq8AnNis/mqdefault.jpg ich bin mir nicht sicher über das Seitenverhältnis.– Lütz
9. Juli 2016 um 16:42 Uhr
-
Danke. Gibt es einen Weg zu bekommen
sddefault
ohne schwarze Balken? img.youtube.com/vi_webp/dQw4w9WgXcQ/sddefault.webp gibt immer wieder Bilder mit schwarzen Balken zurück.– Akshay K. Nair
23. August 2021 um 9:09 Uhr
Hier sind einige PHP-Funktionen, die ich erstellt habe, um das beste verfügbare Miniaturbild von der URL-Methode zu erhalten, ohne die API zu pingen, basierend auf den vielen guten Antworten auf dieser Seite: gist.github.com/squarecandy/30ec9f6779c0e8cdf12e337c665d96c5
– Kandiszucker
9. Mai 2018 um 18:38 Uhr