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?
Vom Vimeo Simple API-Dokumentation:
Eine Videoanfrage erstellen
Um Daten über ein bestimmtes Video zu erhalten, verwenden Sie die folgende URL:
http://vimeo.com/api/v2/video/video_id.output
video_id Die ID des Videos, für das Sie Informationen wünschen.
output Geben Sie den Ausgabetyp an. Wir bieten derzeit JSON, PHP und XML-Formate an.
Also, um diese URL zu erhalten http://vimeo.com/api/v2/video/6271487.xml
[übersprungen]
http://ts.vimeo.com.s3.amazonaws.com/235/662/23566238_100.jpg
http://ts.vimeo.com.s3.amazonaws.com/235/662/23566238_200.jpg
http://ts.vimeo.com.s3.amazonaws.com/235/662/23566238_640.jpg
[übersprungen]
Analysieren Sie dies für jedes Video, um das Vorschaubild zu erhalten
Hier ist ungefährer Code in PHP
OK, schön. Ich bin jedoch nicht vertraut mit xml
. Wie kann ich thumbnail_small
mit php
erhalten?
Um es mit PHP zu erhalten, verwenden Sie zunächst die PHP-Erweiterung in der URL wie vimeo.com/api/v2/video/6271487.php, Sie erhalten eine Datei, deren erste Zeile anscheinend ein serialisierter PHP-Hash ist, verwenden Sie unserialize und lesen Sie dann einfach die Einträge, die Sie möchten.
Für diejenigen, die immer noch einen Weg suchen, das Miniaturbild nur über die URL zu erhalten, ähnlich wie bei Youtube, habe ich eine kleine Anwendung gebaut, die es nur mit der Vimeo-ID abruft.
https://vumbnail.com/358629078.jpg
Stecken Sie einfach Ihre Video-ID ein und es wird es ziehen und für 28 Tage zwischenspeichern, damit es schnell geliefert wird.
Hier sind ein paar Beispiele in HTML:
Einfaches Bildbeispiel
Modernes responsives Bildbeispiel
Wenn Sie Ihre eigene Instanz starten möchten, können Sie dies hier tun.
Im JavaScript (verwendet jQuery):
function vimeoLoadingThumb(id){
var url = "http://vimeo.com/api/v2/video/" + id + ".json?callback=showThumb";
var id_img = "#vimeo-" + id;
var script = document.createElement( 'script' );
script.src = url;
$(id_img).before(script);
}
function showThumb(data){
var id_img = "#vimeo-" + data[0].id;
$(id_img).attr('src',data[0].thumbnail_medium);
}
Um es anzuzeigen :
vimeoLoadingThumb({{ video.id_video }});
Vielen Dank dafür, sehr hilfreich. Ich glaube, es gibt einen sehr kleinen Tippfehler. Sie verwenden # in den id_img Variablen, haben aber das # im img-Element id nicht. Geht Ihr Beispiel auch von der Verwendung von jQuery aus? Ich habe $(id_img) .before
und $(id_img) .attr
gegen createElement
und ein grundlegenderes getElementById(id_img) .src
ausgetauscht, hätte es aber überhaupt nicht verstanden, wenn es nicht Ihr Beispiel gewesen wäre.
Die # Frage ist die JQuery-Syntax, kein Fehler. Ja, es geht von der Verwendung von JQuery aus.
Ah, gut dann. Danke für die Klarstellung. Ich benutze nicht oft JQuery, aber die Antwort war trotzdem sehr nützlich für mich.
Sie sollten die API-Antwort von Vimeo analysieren. Es gibt keinen Weg, dies mit URL-Aufrufen zu tun (wie bei Dailymotion oder Youtube).
Hier ist meine PHP-Lösung:
/**
* Ruft eine Vorschaubild-URL von Vimeo ab
* @param mixed $id Eine Vimeo-ID (z. B. 1185346)
* @return Vorschaubild-URL
*/
function getVimeoThumb($id) {
$data = file_get_contents("http://vimeo.com/api/v2/video/$id.json");
$data = json_decode($data);
return $data[0]->thumbnail_medium;
}
Verwendung der jQuery jsonp-Anforderung:
$.ajax({
type:'GET',
url: 'http://vimeo.com/api/v2/video/' + video_id + '.json',
jsonp: 'callback',
dataType: 'jsonp',
success: function(data){
var thumbnail_src = data[0].thumbnail_large;
$('#thumb_wrapper').append('<img src="' + thumbnail_src + '"/>');
}
});
Ich würde dies gerne verwenden ... aber was ist, wenn ich mehrere Videos auf einer Seite habe? Gibt es eine Möglichkeit, die ID an den Aufruf zu übergeben? Am besten würde ich gerne etwas wieverwenden - und das würde mit dem Thumbnail-Bild gefüllt werden.
Die Methodenaufruf kann verkürzt werden wie $.getJSON('http://vimeo.com/api/v2/video/' + video_id + '.json?callback=?', function (data) {...
Funktioniert diese Methode noch? Wir haben Probleme damit im Jahr 2021. siehe stackoverflow.com/questions/66053587/vimeo-api-jsonp-issue
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.