340 Stimmen

Bekommen Sie Miniaturansichten von Vimeo?

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?

Hier ist dieselbe Frage, ohne Antwort.

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.

5voto

hlorand Punkte 672

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");

4voto

Shalev Levi Punkte 91

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);
});

3voto

Shahidul Islam Punkte 35

Hier ist die perfekte Lösung -

   URL Beispiel : https://vumbnail.com/226020936.jpg
   URL Methode :  https://vumbnail.com/{video_id}.jpg

Es hat für mich funktioniert.

2voto

sidonaldson Punkte 22410

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.

API-Endpunkt (Spielplatz)

Twitter-Gespräch mit @vimeoapi

0 Stimmen

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.

0 Stimmen

@blackhawk du hast meinen Punkt verpasst. Es ist eine Alternative. Wenn du das machst, hast du alle deine Videos in einem einzigen API-Aufruf. Du kannst das beispielsweise serverseitig zwischenspeichern.

2voto

Agustin Punkte 1254

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.com

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.

Powered by:

X