Als ik een YouTube-video-URL heb, is er dan een manier om PHP en cURL te gebruiken om de bijbehorende thumbnail van de YouTube API te krijgen?
Antwoord 1, autoriteit 100%
Elke YouTube-video heeft vier gegenereerde afbeeldingen. Ze zijn voorspelbaar als volgt opgemaakt:
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
De eerste in de lijst is een afbeelding op volledige grootte en de andere zijn miniatuurafbeeldingen. De standaard miniatuurafbeelding (d.w.z. een van 1.jpg
, 2.jpg
, 3.jpg
) is:
https://img.youtube.com/vi/<insert-youtube-video-id-here>/default.jpg
Gebruik voor de hoogwaardige versie van de miniatuur een URL die lijkt op deze:
https://img.youtube.com/vi/<insert-youtube-video-id-here>/hqdefault.jpg
Er is ook een versie van gemiddelde kwaliteit van de miniatuur, met een URL die lijkt op het hoofdkantoor:
https://img.youtube.com/vi/<insert-youtube-video-id-here>/mqdefault.jpg
Gebruik voor de standaarddefinitieversie van de miniatuur een URL die lijkt op deze:
https://img.youtube.com/vi/<insert-youtube-video-id-here>/sddefault.jpg
Gebruik voor de maximale resolutieversie van de miniatuur een URL die lijkt op deze:
https://img.youtube.com/vi/<insert-youtube-video-id-here>/maxresdefault.jpg
Alle bovenstaande URL’s zijn ook beschikbaar via HTTP. Bovendien werkt de iets kortere hostnaam i3.ytimg.com
in plaats van img.youtube.com
in de bovenstaande voorbeeld-URL’s.
Je kunt ook de YouTube Data API (v3) gebruiken om miniatuurafbeeldingen te krijgen.
Antwoord 2, autoriteit 8%
Je kunt YouTube Data API gebruiken om videominiaturen op te halen , bijschrift, beschrijving, beoordeling, statistieken en meer. API versie 3 vereist een sleutel*. Verkrijg de sleutel en maak een videos: list verzoek:
https://www.googleapis.com/youtube/v3/videos?key=YOUR_API_KEY&part=snippet&id=VIDEO_ID
Voorbeeld 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);
Uitvoer
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)
}
}
* U heeft niet alleen een sleutel nodig, maar u kunt ook om factureringsgegevens worden gevraagd, afhankelijk van het aantal API-verzoeken dat u wilt doen. Er zijn echter een paar miljoen verzoeken per dag gratis.
Antwoord 3, autoriteit 6%
Wat Asaf zei klopt. Niet elke YouTube-video bevat echter alle negen
miniaturen. De afbeeldingsgroottes van de miniaturen zijn ook afhankelijk van de video (de nummers
hieronder zijn gebaseerd op één). Er zijn gegarandeerd enkele miniaturen:
Width | Height | URL
------ | -------- | ----
120 | 90 | https://i.ytimg.com/vi/<VIDEO ID>/1.jpg
120 | 90 | https://i.ytimg.com/vi/<VIDEO ID>/2.jpg
120 | 90 | https://i.ytimg.com/vi/<VIDEO ID>/3.jpg
120 | 90 | https://i.ytimg.com/vi/<VIDEO ID>/default.jpg
320 | 180 | https://i.ytimg.com/vi/<VIDEO ID>/mq1.jpg
320 | 180 | https://i.ytimg.com/vi/<VIDEO ID>/mq2.jpg
320 | 180 | https://i.ytimg.com/vi/<VIDEO ID>/mq3.jpg
320 | 180 | https://i.ytimg.com/vi/<VIDEO ID>/mqdefault.jpg
480 | 360 | https://i.ytimg.com/vi/<VIDEO ID>/0.jpg
480 | 360 | https://i.ytimg.com/vi/<VIDEO ID>/hq1.jpg
480 | 360 | https://i.ytimg.com/vi/<VIDEO ID>/hq2.jpg
480 | 360 | https://i.ytimg.com/vi/<VIDEO ID>/hq3.jpg
480 | 360 | https://i.ytimg.com/vi/<VIDEO ID>/hqdefault.jpg
Bovendien kunnen sommige andere thumbnails al dan niet bestaan. Hun aanwezigheid is
waarschijnlijk gebaseerd op de vraag of de video van hoge kwaliteit is.
Width | Height | URL
------ | -------- | ----
640 | 480 | https://i.ytimg.com/vi/<VIDEO ID>/sd1.jpg
640 | 480 | https://i.ytimg.com/vi/<VIDEO ID>/sd2.jpg
640 | 480 | https://i.ytimg.com/vi/<VIDEO ID>/sd3.jpg
640 | 480 | https://i.ytimg.com/vi/<VIDEO ID>/sddefault.jpg
1280 | 720 | https://i.ytimg.com/vi/<VIDEO ID>/hq720.jpg
1920 | 1080 | https://i.ytimg.com/vi/<VIDEO ID>/maxresdefault.jpg
Je kunt JavaScript- en PHP-scripts vinden om thumbnails en andere op te halen
YouTube-informatie in:
- Hoe krijg je YouTube-video-informatie met PHP
- Haal YouTube-videodetails op met JavaScript – JSON & API v2
Je kunt ook de tool YouTube Video Information Generator gebruiken om alle
de informatie over een YouTube-video door een URL of video-ID in te dienen.
Antwoord 4, autoriteit 2%
In YouTube API V3 kunnen we deze URL’s ook gebruiken om thumbnails te verkrijgen… Ze zijn geclassificeerd op basis van hun kwaliteit.
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
En voor de maximale resolutie..
https://i1.ytimg.com/vi/<insert-youtube-video-id-here>/maxresdefault.jpg
Een voordeel van deze URL’s ten opzichte van de URL’s in het eerste antwoord is dat deze URL’s niet worden geblokkeerd door firewalls.
Antwoord 5
Als je de grootste afbeelding van YouTube wilt voor een specifieke video-ID, moet de URL er ongeveer zo uitzien:
http://i3.ytimg.com/vi/SomeVideoIDHere/0.jpg
Met behulp van de API kunt u de standaard miniatuurafbeelding ophalen. Eenvoudige code zou er ongeveer zo uit moeten zien:
//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);
Antwoord 6
Als je de ‘zwarte balken’ wilt verwijderen en het wilt doen zoals YouTube dat doet, kun je het volgende gebruiken:
https://i.ytimg.com/vi_webp/<video id>/mqdefault.webp
En als u de bestandsextensie .webp
niet kunt gebruiken, kunt u dit als volgt doen:
https://i.ytimg.com/vi/<video id>/mqdefault.jpg
Als je de ongeschaalde versie nodig hebt, gebruik dan maxresdefault
in plaats van mqdefault
.
Opmerking: ik weet niet zeker wat de beeldverhouding is als je van plan bent maxresdefault
te gebruiken.
Antwoord 7
Ik heb een functie gemaakt om alleen bestaande afbeeldingen van YouTube op te halen
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;
}
Antwoord 8
Je kunt het Video-item krijgen dat de URL bevat naar de miniatuur van de video. Er staat een voorbeeldcode in de link. Of, als je XML wilt ontleden, vind je hier informatie. De geretourneerde XML heeft een media:thumbnail
-element, dat de URL van de thumbnail bevat.
Antwoord 9
In YouTube Data API v3 kun je thumbnails van video’s krijgen met de videos->list functie. Van snippet.thumbnails.(key) , kunt u de standaardminiatuur, gemiddelde of hoge resolutie kiezen en de breedte, hoogte en URL krijgen.
Je kunt miniaturen ook bijwerken met de thumbnails->set functionaliteit.
Voor voorbeelden kun je de YouTube bekijken API-voorbeelden-project. (PHP’s.)
Antwoord 10
// 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;
Antwoord 11
YouTube is eigendom van Google en Google heeft graag een redelijk aantal afbeeldingen voor verschillende schermformaten, daarom worden de afbeeldingen in verschillende formaten opgeslagen. Hier is een voorbeeld van hoe je thumbnail eruit zal zien:
Miniatuur van lage kwaliteit:
http://img.youtube.com/vi/<YouTube_Video_ID_HERE>/sddefault.jpg
Miniatuur van gemiddelde kwaliteit:
http://img.youtube.com/vi/<YouTube_Video_ID_HERE>/mqdefault.jpg
Miniatuur van hoge kwaliteit:
http://img.youtube.com/vi/<YouTube_Video_ID_HERE>/hqdefault.jpg
Miniatuur van maximale kwaliteit:
http://img.youtube.com/vi/<YouTube_Video_ID_HERE>/maxresdefault.jpg
Antwoord 12
Een ander goed alternatief zou zijn om de oEmbed API te gebruiken die wordt ondersteund door YouTube.
Je voegt eenvoudig je YouTube-URL toe aan de oEmbed-URL en je ontvangt een JSON met een thumbnail en de HTML-code voor insluiten.
Voorbeeld:
http://www.youtube.com/oembed?format=json&url=http%3A//youtube.com/watch%3Fv%3DxUeJdWYdMmQ
Zou je geven:
{
"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"
}
Lees de documentatie voor meer informatie.
Antwoord 13
YouTube API-versie 3 in 2 minuten klaar voor gebruik
Als je alleen op YouTube wilt zoeken en bijbehorende eigenschappen wilt krijgen:
-
Ontvang een openbare API — Deze link geeft een goede richting
-
Gebruik onderstaande queryreeks. De zoekopdracht (aangeduid met q=) in de URL-tekenreeks is bijvoorbeeld stackoverflow. YouTube stuurt je dan een JSON-antwoord terug, waar je vervolgens kunt parseren voor thumbnail, snippet, auteur, enz.
Antwoord 14
Gebruik:
https://www.googleapis.com/youtube/v3/videoCategories?part=snippet,id&maxResults=100®ionCode=us&key=**Your YouTube ID**
Hierboven staat de link. Hiermee kun je de YouTube-kenmerken van video’s vinden. Nadat je kenmerken hebt gevonden, kun je video’s van de geselecteerde categorie krijgen. Daarna kun je geselecteerde videobeelden vinden met Asaph’s antwoord.
Probeer de bovenstaande aanpak en je kunt alles ontleden van de YouTube API.
Antwoord 15
Ik heb YouTube-thumbnails op deze manier gebruikt:
$url = 'http://img.youtube.com/vi/' . $youtubeId . '/0.jpg';
$img = dirname(__FILE__) . '/youtubeThumbnail_' . $youtubeId . '.jpg';
file_put_contents($img, file_get_contents($url));
Onthoud dat YouTube voorkomt dat afbeeldingen rechtstreeks van hun server worden opgenomen.
Antwoord 16
Om de gegeven oplossingen toe te voegen/uit te breiden, denk ik dat het nodig is om op te merken dat, aangezien ik dit probleem zelf had, je meerdere YouTube-video’s kunt pakken, in dit geval thumbnails, met één HTTP-verzoek:
Met een Rest Client, in dit geval HTTPFUL, kun je zoiets als dit doen:
<?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);
?>
Antwoord 17
YouTube-gegevens-API
YouTube levert ons bijvoorbeeld de vier gegenereerde afbeeldingen voor elke video via de Data API (v3),
Toegang krijgen tot de afbeeldingen via de API
- Koop eerst uw openbare API-sleutel op Google API Console.
- Volgens de miniatuurreferentie van YouTube in de API-documentatie moet je toegang hebben tot de bronnen op snippet.thumbnails.
-
Hierdoor moet je je URL als volgt formuleren –
www.googleapis.com/youtube/v3/videos?part=snippet&id=`yourVideoId`&key=`yourApiKey`
Verander nu uw video-ID en uw API-sleutel in uw respectievelijke video-id en api-sleutel en het antwoord is een JSON-uitvoer die u de vier links in de miniaturen van de fragmentvariabele biedt (als ze allemaal beschikbaar zijn).
Antwoord 18
Ik vond deze handige tool waarmee je de afbeelding kunt maken met de YouTube-afspeelknop boven de afbeelding:
- Geïnstalleerd op de server voor scripting: https://github.com/halgatewood/youtube-thumbnail -versterker
Antwoord 19
Je kunt de video-ID uit de YouTube-video-url halen met parse_url ,parse_str en vervolgens invoegen in de voorspellende URL’s voor afbeeldingen . Met dank aan YouTube voor de voorspellende URL’s
$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";
Je kunt deze tool gebruiken om YouTube-thumbnails te genereren
https://youtube-thumbnail-tool.com
Antwoord 20
Een eenvoudige PHP-functie die ik heb gemaakt voor de YouTube-thumbnail en de typen zijn
- standaard
- 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;}
Antwoord 21
Als u de openbare API gebruikt, kunt u dit het beste doen door if
-instructies te gebruiken.
Als de video openbaar of verborgen is, stel je de thumbnail in met de URL-methode.
Als de video privé is, gebruik je de API om de thumbnail te krijgen.
<?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';
}
Antwoord 22
YouTube biedt miniaturen van twee servers. Je hoeft alleen maar <YouTube_Video_ID_HERE> met je eigen YouTube-video-ID. Tegenwoordig is webP het beste formaat voor het snel laden van afbeeldingen vanwege de kleine afbeeldingsgrootte.
https://img.youtube.com
https://i.ytimg.com
Voorbeelden zijn met https://i.ytimg.com server alleen omdat deze korter is, geen andere bepaalde reden. Je kunt beide gebruiken.
Spelerachtergrondminiatuur (480×360):
WebP
https://i.ytimg.com/vi_webp/<YouTube_Video_ID_HERE>/0.webp
JPG
https://i.ytimg.com/vi/<YouTube_Video_ID_HERE>/0.jpg
Miniaturen van videoframes (120×90)
WebP:
Start: https://i.ytimg.com/vi_webp/<YouTube_Video_ID_HERE>/1.webp
Middle: https://i.ytimg.com/vi_webp/<YouTube_Video_ID_HERE>/2.webp
End: https://i.ytimg.com/vi_webp/<YouTube_Video_ID_HERE>/3.webp
JPG:
Start: https://i.ytimg.com/vi/<YouTube_Video_ID_HERE>/1.jpg
Middle: https://i.ytimg.com/vi/<YouTube_Video_ID_HERE>/2.jpg
End: https://i.ytimg.com/vi/<YouTube_Video_ID_HERE>/3.jpg
Miniatuur van laagste kwaliteit (120×90)
WebP
https://i.ytimg.com/vi_webp/<YouTube_Video_ID_HERE>/default.webp
JPG
https://i.ytimg.com/vi/<YouTube_Video_ID_HERE>/default.jpg
Miniatuur van gemiddelde kwaliteit (320×180)
WebP
https://i.ytimg.com/vi_webp/<YouTube_Video_ID_HERE>/mqdefault.webp
JPG
https://i.ytimg.com/vi/<YouTube_Video_ID_HERE>/mqdefault.jpg
Miniatuur van hoge kwaliteit (480×360)
WebP
https://i.ytimg.com/vi_webp/<YouTube_Video_ID_HERE>/hqdefault.webp
JPG
https://i.ytimg.com/vi/<YouTube_Video_ID_HERE>/hqdefault.jpg
Miniatuur van standaardkwaliteit (640×480)
WebP
https://i.ytimg.com/vi_webp/<YouTube_Video_ID_HERE>/sddefault.webp
JPG
https://i.ytimg.com/vi/<YouTube_Video_ID_HERE>/sddefault.jpg
Ongeschaalde miniatuurresolutie
WebP
https://i.ytimg.com/vi_webp/<YouTube_Video_ID_HERE>/maxresdefault.webp
JPG
https://i.ytimg.com/vi/<YouTube_Video_ID_HERE>/maxresdefault.jpg
Antwoord 23
Ik denk dat er veel antwoorden zijn op thumbnails, maar ik wil wat andere URL’s toevoegen om heel gemakkelijk YouTube-thumbnails te krijgen. Ik neem gewoon wat tekst uit Asaph’s antwoord. Hier zijn enkele URL’s om YouTube-thumbnails te krijgen:
https://ytimg.googleusercontent.com/vi/<insert-youtube-video-id-here>/default.jpg
Gebruik voor de hoogwaardige versie van de miniatuur een URL die lijkt op deze:
https://ytimg.googleusercontent.com/vi/<insert-youtube-video-id-here>/hqdefault.jpg
Er is ook een versie van gemiddelde kwaliteit van de miniatuur, met een URL die vergelijkbaar is met de hoge kwaliteit:
https://ytimg.googleusercontent.com/vi/<insert-youtube-video-id-here>/mqdefault.jpg
Gebruik voor de standaarddefinitieversie van de miniatuur een URL die lijkt op deze:
https://ytimg.googleusercontent.com/vi/<insert-youtube-video-id-here>/sddefault.jpg
Gebruik voor de maximale resolutieversie van de miniatuur een URL die lijkt op deze:
https://ytimg.googleusercontent.com/vi/<insert-youtube-video-id-here>/maxresdefault.jpg
Antwoord 24
Methode 1:
Je kunt alle informatie voor een YouTube-video vinden met een JSON-pagina die zelfs “thumbnail_url” heeft,
http://www.youtube.com/oembed?format=json&url={uw video-URL komt hier}
Zoals uiteindelijke URL-look + 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);
Uitvoer
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
Voor details kun je ook Hoe krijg een YouTube-videominiatuur met id
of https://www.youtube.com/watch?v=mXde7q59BI8 videozelfstudie 1
Methode 2:
Met de YouTube-afbeeldingslink,
https://img.youtube.com/vi/“insert-youtube-video-id- hier”/default.jpg
Methode 3:
Browserbroncode gebruiken voor het verkrijgen van thumbnails met de video-URL-link
-ga naar videobroncode en zoek naar thumbnailurl.
Nu kunt u deze URL gebruiken in
uw broncode:
{img src="https://img.youtube.com/vi/"insert-youtube-video-id-here"/default.jpg"}
Voor details kun je ook Hoe je een YouTube-videominiatuur met id
of
https://www.youtube.com/watch?v=9f6E8MeM6PI
instructievideo 2
Antwoord 25
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');
Antwoord 26
Hier is het beste antwoord geoptimaliseerd voor handmatig gebruik. Het video-ID-token zonder scheidingstekens maakt selecteren met een dubbelklik mogelijk.
Elke YouTube-video heeft vier gegenereerde afbeeldingen. Ze zijn voorspelbaar als volgt opgemaakt:
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
De eerste in de lijst is een afbeelding op volledige grootte en de andere zijn miniatuurafbeeldingen. De standaard miniatuurafbeelding (d.w.z. een van 1.jpg
, 2.jpg
, 3.jpg
) is:
https://img.youtube.com/vi/YOUTUBEVIDEOID/default.jpg
Gebruik voor de hoogwaardige versie van de miniatuur een URL die lijkt op deze:
https://img.youtube.com/vi/YOUTUBEVIDEOID/hqdefault.jpg
Er is ook een versie van gemiddelde kwaliteit van de miniatuur, met een URL die lijkt op het hoofdkantoor:
https://img.youtube.com/vi/YOUTUBEVIDEOID/mqdefault.jpg
Gebruik voor de standaarddefinitieversie van de miniatuur een URL die lijkt op deze:
https://img.youtube.com/vi/YOUTUBEVIDEOID/sddefault.jpg
Gebruik voor de maximale resolutieversie van de miniatuur een URL die lijkt op deze:
https://img.youtube.com/vi/YOUTUBEVIDEOID/maxresdefault.jpg
Alle bovenstaande URL’s zijn ook beschikbaar via HTTP. Bovendien werkt de iets kortere hostnaam i3.ytimg.com
in plaats van img.youtube.com
in de bovenstaande voorbeeld-URL’s.
Je kunt ook de YouTube Data API (v3) gebruiken om miniatuurafbeeldingen te krijgen .
Antwoord 27
Dit is mijn client-side-only oplossing zonder API-sleutels.
YouTube.parse('https://www.youtube.com/watch?v=P3DGwyl0mJQ').then(_ => console.log(_))
De 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`
Hulpprogramma 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
})
}
Hulpprogramma 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
},
{})
}
Antwoord 28
Gebruik img.youtube.com/vi/YouTubeID/ImageFormat.jpg
Hier zijn de afbeeldingsindelingen anders, zoals standaard, hqdefault,
maxresdefault.
Antwoord 29
Hier is een eenvoudige functie die ik heb gemaakt om de miniaturen te krijgen. Het is gemakkelijk te begrijpen en te gebruiken.
$link is de YouTube-link die precies zo is gekopieerd als in de browser, bijvoorbeeld 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;
}
Antwoord 30
Sla deze code op in een leeg .php-bestand en test het.
<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';
}
Bedankt.