Ich möchte ein Vorschaubild für Videos von Vimeo erhalten.
Wenn ich Bilder von Youtube bekomme, mache ich einfach folgendes:
http://img.youtube.com/vi/HwP5NG-3e8I/2.jpg
Irgendwelche Ideen, wie man das für Vimeo macht?
Ich möchte ein Vorschaubild für Videos von Vimeo erhalten.
Wenn ich Bilder von Youtube bekomme, mache ich einfach folgendes:
http://img.youtube.com/vi/HwP5NG-3e8I/2.jpg
Irgendwelche Ideen, wie man das für Vimeo macht?
2020 Lösung:
Ich habe eine PHP-Funktion geschrieben, die die Vimeo Oembed API verwendet.
/**
* Vimeo.com Video Thumbnail-URL abrufen
*
* Setzen Sie den Referer-Parameter, wenn Ihr Video domänenbeschränkt ist.
*
* @param int $videoid Video-ID
* @param URL $referer Ihre Website-Domäne
* @return bool/string Thumbnail-URL oder false, wenn auf das Video nicht zugegriffen werden kann
*/
function get_vimeo_thumbnail_url( $videoid, $referer=null ){
// Falls Referer gesetzt ist, erstelle Kontext
$ctx = null;
if( isset($referer) ){
$ctxa = array(
'http' => array(
'header' => array("Referer: $referer\r\n"),
'request_fulluri' => true,
),
);
$ctx = stream_context_create($ctxa);
}
$resp = @file_get_contents("https://vimeo.com/api/oembed.json?url=https://vimeo.com/$videoid", False, $ctx);
$resp = json_decode($resp, true);
return $resp["thumbnail_url"]??false;
}
Verwendung:
echo get_vimeo_thumbnail_url("1084537");
Es scheint wie eine alte Frage, aber ich hatte mehrere Projekte im Zusammenhang mit Vimeo-Vorschaubildern, daher war es in den letzten Monaten sehr relevant für mich. Alle API V2 hat bei mir nicht funktioniert, und die i.vimeocdn.com-Links wurden jeden Monat veraltet. Ich brauchte diese nachhaltige Lösung, und dafür habe ich die oEmbed-API verwendet: https://developer.vimeo.com/api/oembed
Hinweis: Sie erhalten einen 403-Fehler, wenn Sie von einer verbotenen Domain auf zugreifen. Verwenden Sie nur die Ziel-Domain oder fügen Sie Ihre Test-/lokale Domain zur Whitelist hinzu.
So habe ich Bilder mit JS bekommen:
async function getThumb (videoId) {
var url = 'https://vimeo.com/api/oembed.json?url=https%3A//vimeo.com/'+videoId+'&width=480&height=360';
try {
let res = await fetch(url);
return await res.json();
} catch (error) {
console.log(error);
}
Die Ergebnisvariable wird ein JSON von der oEmbed-API erhalten.
Anschließend brauchte ich sie in meinem eigenen Anwendungsfall als Vorschaubild für ein Videoarchiv. Ich fügte für jeden Vorschaubild-Wrapper-DIV eine ID hinzu, mit einer ID namens "thumbnail-{{ID}}" (zum Beispiel "thumbnail-123456789"), und fügte ein Bild in das DIV ein.
getThumb(videoId).then(function(result) {
var img = document.createElement('img');
img.src = result.thumbnail_url;
document.getElementById('thumbnail-'+videoId).appendChild(img);
});
Wenn Sie nach einer alternativen Lösung suchen und das Vimeo-Konto verwalten können, gibt es einen anderen Weg. Fügen Sie einfach jedes Video, das Sie anzeigen möchten, in ein Album ein und verwenden Sie dann die API, um die Albendetails abzurufen - dann werden alle Miniaturansichten und Links angezeigt. Es ist nicht ideal, aber könnte helfen.
Twitter-Gespräch mit @vimeoapi
Dies ist vielleicht nicht der effizienteste Weg, besonders wenn (1) der Rest Ihres Codes nicht von der Vimeo-API abhängt und (2) Sie das Gefühl haben, dass Ihre API-Aufrufe über das hinausgehen könnten, was Vimeo als Limit festgelegt hat.
Sie sollten sich vielleicht das Juwel von Matt Hooks ansehen. https://github.com/matthooks/vimeo
Es bietet einen einfachen Vimeo-Wrapper für die API.
Alles, was Sie brauchen, ist die Video-ID zu speichern (und den Anbieter, wenn Sie auch andere Videosites verwenden).
Sie können die Vimeo-Video-ID folgendermaßen extrahieren
def
get_vimeo_video_id (link)
vimeo_video_id = nil
vimeo_regex = /http:\/\/(www\.)?vimeo.com\/(\d+)($|\/)/
vimeo_match = vimeo_regex.match(link)
if vimeo_match.nil?
vimeo_regex = /http:\/\/player.vimeo.com\/video\/([a-z0-9-]+)/
vimeo_match = vimeo_regex.match(link)
end
vimeo_video_id = vimeo_match[2] unless vimeo_match.nil?
return vimeo_video_id
end
und falls Sie YouTube benötigen, finden Sie dies vielleicht nützlich
def
get_youtube_video_id (link)
youtube_video_id = nil
youtube_regex = /^(https?:\/\/)?(www\.)?youtu.be\/([A-Za-z0-9._%-]*)(\&\S+)?/
youtube_match = youtube_regex.match(link)
if youtube_match.nil?
youtubecom_regex = /^(https?:\/\/)?(www\.)?youtube.com\/watch\?v=([A-Za-z0-9._%-]*)(\&\S+)?/
youtube_match = youtubecom_regex.match(link)
end
youtube_video_id = youtube_match[3] unless youtube_match.nil?
return youtube_video_id
end
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.
16 Stimmen
Ja, es ist legal - beide Websites stellen diese Details auf sehr öffentliche Weise zur Verfügung, weil sie möchten, dass Sie ihren Inhalt verwenden! Alle eingebetteten Videos verlinken schließlich auf die Hosting-Site zurück.
1 Stimmen
Wenn Sie sicherstellen möchten, dass Ihre Seite nicht auf den Vimeo-Server angewiesen ist und die Leistung optimiert ist, schlage ich vor, dies in JavaScript zu tun. Der Nachteil ist, dass der Daumen für Benutzer ohne JavaScript nicht angezeigt wird, aber ein geeigneter Platzhalter mit dem Link sollte freundlich genug sein. (Ändern Sie .xml in .json in Ihrer API-Anfrage an Vimeo)
1 Stimmen
Versuche diese Antwort: stackoverflow.com/a/17156853/146602 - macht es sehr einfach, Informationen/Daten über ein beliebiges Vimeo-Video nur mit der URL zu erhalten.
2 Stimmen
i.vimeocdn.com/video/528073804_200x200.webp auf diese Weise können Sie das Video-Bild erhalten
0 Stimmen
@Pus ist es möglich, dass wir ohne den Aufruf der API das Vorschaubild des Vimeo-Videos erhalten können? Bedeutet das, dass wir eine URL haben können, an die wir nur die ID übergeben und es wird ein .jpg Thumbnail zurückgeben. Wenn ich das so mache
http://i.vimeocdn.com/video/201990344.webp
, dann wird ein falsches Thumbnail zurückgegeben. Das ist der Link zu meinem Testvideohttps://vimeo.com/201990344
0 Stimmen
@shaileshs Lösung funktioniert nicht mehr.