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?
Mit Ruby kannst du Folgendes tun, wenn du z.B. hast:
url = "http://www.vimeo.com/7592893"
vimeo_video_id = url.scan(/vimeo.com\/(\d+)\/?/).flatten.to_s # extrahiere die Video-ID
vimeo_video_json_url = "http://vimeo.com/api/v2/video/%s.json" % vimeo_video_id # API-Aufruf
# Analysiere das JSON und extrahiere die URL des großen Thumbnails
thumbnail_image_location = JSON.parse(open(vimeo_video_json_url).read).first['thumbnail_large'] rescue nil
Hinweis: Möglicherweise benötigen Sie require 'open-uri'
, um open zu ermöglichen, URIs sowie Dateien zu analysieren.
Ich musste url.scan(/vimeo.com\/(\d+)\/?/).flatten.to_s.delete("^0-9.") hinzufügen, um die Vimeo-ID zu erhalten.
Require "open-uri" require 'json' thumbnail_image_location = JSON.parse(URI.open("vimeo.com/api/v2/video/…
Hier ist ein Beispiel, wie man dasselbe in ASP.NET mit C# machen kann. Fühlen Sie sich frei, ein anderes Fehlerbild zu verwenden :)
public string GetVimeoPreviewImage(string vimeoURL)
{
try
{
string vimeoUrl = System.Web.HttpContext.Current.Server.HtmlEncode(vimeoURL);
int pos = vimeoUrl.LastIndexOf(".com");
string videoID = vimeoUrl.Substring(pos + 4, 8);
XmlDocument doc = new XmlDocument();
doc.Load("http://vimeo.com/api/v2/video/" + videoID + ".xml");
XmlElement root = doc.DocumentElement;
string vimeoThumb = root.FirstChild.SelectSingleNode("thumbnail_medium").ChildNodes[0].Value;
string imageURL = vimeoThumb;
return imageURL;
}
catch
{
//Katze mit Käse im Gesicht scheitern
return "http://bestofepicfail.com/wp-content/uploads/2008/08/cheese_fail.jpg";
}
}
HINWEIS: Ihre API-Anfrage sollte so aussehen, wenn sie angefordert wird: http://vimeo.com/api/v2/video/32660708.xml
Schön, aber der API-Link ist nur vimeo.com/api/v2/video/video_id.xml und nicht "video" vor der Video-ID.
Kürzte diesen Code ab und änderte den Parameter so, dass er eine Vimeo-ID anstatt der vollständigen URL akzeptiert. (kann nicht herausfinden, wie der Codeblock mehrzeilig wird) public static string GetVimeoPreviewImage(string id) { try { XmlDocument doc = new XmlDocument(); doc.Load("http://vimeo.com/api/v2/video/" + id + ".xml"); return doc.DocumentElement.FirstChild.SelectSingleNode("thumbnail_medium").ChildNodes[0].Value; } catch { return string.Empty; } }
Der einfachste Weg in JavaScript, den ich gefunden habe, um das Vorschaubild ohne die Suche nach der Video-ID zu erhalten, ist folgender:
//Holen Sie das Video-Vorschaubild über Ajax
$.ajax({
type:'GET',
url: 'https://vimeo.com/api/oembed.json?url=' + encodeURIComponent(url),
dataType: 'json',
success: function(data) {
console.log(data.thumbnail_url);
}
});
Hinweis: Wenn jemand das Vorschaubild des Videos anhand der Video-ID erhalten möchte, kann er das $id
durch die Video-ID ersetzen und eine XML-Datei mit den Videodetails erhalten:
http://vimeo.com/api/v2/video/$id.xml
Beispiel:
http://vimeo.com/api/v2/video/198340486.xml
Dies ist wirklich die beste Antwort, da Vimeo die v2 API eingestellt hat. oEmbed erfordert keine Authentifizierung und liefert eine JSON/XML-Antwort mit Thumbnail-Urls zurück. developer.vimeo.com/apis/oembed
Roy, wie verwenden wir diesen AJAX-Aufruf, wenn wir nach einem bestimmten Video nach seiner ID suchen?
@blackhawk Ich nicht, aber ich google es jetzt und habe etwas für dich gefunden, ersetze einfach die video_id durch dein $id
und du erhältst ein XML mit den Video-Details (einschließlich Thumbnails). http://vimeo.com/api/v2/video/$id.xml
. zum Beispiel: http://vimeo.com/api/v2/video/198340486.xml
. Die Quelle ist hier: coderwall.com/p/fdrdmg/get-a-thumbnail-from-a-vimeo-video
Ich habe einen CodePen erstellt, der die Bilder für dich abruft.
HTML
Video abrufen
JavaScript:
const videoIdInput = document.getElementById('vimeoid');
const getVideo = document.getElementById('getVideo');
const output = document.getElementById('output');
function getVideoThumbnails(videoid) {
fetch(`https://vimeo.com/api/v2/video/${videoid}.json`)
.then(response => {
return response.text();
})
.then(data => {
const { thumbnail_large, thumbnail_medium, thumbnail_small } = JSON.parse(data)[0];
const small = ``;
const medium = ``;
const large = ``;
output.innerHTML = small + medium + large;
})
.catch(error => {
console.log(error);
});
}
getVideo.addEventListener('click', e => {
if (!isNaN(videoIdInput.value)) {
getVideoThumbnails(videoIdInput.value);
}
});
Wenn Sie Miniaturbilder durch reinen JS/jQuery ohne API verwenden möchten, können Sie dieses Tool verwenden, um einen Frame aus dem Video zu erfassen und voilà! Fügen Sie die URL des Miniaturbilds in die gewünschte Quelle ein.
Hier ist ein Code-Pen:
Hier ist die Website, um ein Miniaturbild zu erhalten:
Es sieht so aus, als würde dies einen zufälligen Rahmen anzeigen und nicht das offizielle Cover/Thumbnail, das der Videokreator ausgewählt hat. Gut zu wissen, dass dies existiert, aber ich glaube, ich werde die API-JSON-Analysemethode verwenden, da es keine Kontrolle über das Coverbild von der Vimeo-Seite aus gibt.
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.