Frage

Ich mag für Videos von Vimeo ein Thumbnail-Bild erhalten.

Wenn Sie Bilder von Youtube ich immer tun wie folgt aus:

http://img.youtube.com/vi/HwP5NG-3e8I/2.jpg

Jede Idee, wie für Vimeo zu tun?

Hier ist die gleiche Frage, ohne Antwort.

War es hilfreich?

Lösung

Von der Vimeo Simple API-Dokumentation :

Einen Video anfordern

  

Um Daten zu einem bestimmten Video zu bekommen,   Verwenden Sie die folgende URL:

     

http://vimeo.com/api/v2/video/video_id.output

     

video_id Die ID des Videos wünschen Sie Informationen zu.

     

Ausgang Geben Sie die   Ausgabetyp. Zur Zeit bieten wir JSON,   PHP und XML-Formate.

Also das bekommen URL http://vimeo.com/api/v2/video/ 6271487.xml

    <videos> 
      <video> 
        [skipped]
        <thumbnail_small>http://ts.vimeo.com.s3.amazonaws.com/235/662/23566238_100.jpg</thumbnail_small> 
        <thumbnail_medium>http://ts.vimeo.com.s3.amazonaws.com/235/662/23566238_200.jpg</thumbnail_medium> 
        <thumbnail_large>http://ts.vimeo.com.s3.amazonaws.com/235/662/23566238_640.jpg</thumbnail_large> 
        [skipped]
    </videos>

Parse dies für jedes Video die Vorschau

bekommen

Hier ist ungefährer Code in PHP

<?php

$imgid = 6271487;

$hash = unserialize(file_get_contents("http://vimeo.com/api/v2/video/$imgid.php"));

echo $hash[0]['thumbnail_medium'];  

Andere Tipps

In Javascript (jQuery Anwendungen):

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

es anzuzeigen:

<img id="vimeo-{{ video.id_video }}" src="" alt="{{ video.title }}" />
<script type="text/javascript">
  vimeoLoadingThumb({{ video.id_video }});
</script>

Mit jQuery JSONP Anfrage:

<script type="text/javascript">
    $.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 + '"/>');
        }
    });
</script>

<div id="thumb_wrapper"></div>

Sie sollten Vimeos API Antwort analysieren. Es gibt keinen Weg, um es mit URL-Aufrufe (wie MyVideo, YouTube).

Hier ist meine PHP-Lösung:

/**
 * Gets a vimeo thumbnail url
 * @param mixed $id A vimeo id (ie. 1185346)
 * @return thumbnail's 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;
}

Mit Ruby Sie können Folgendes tun, wenn Sie, sagen:

url                      = "http://www.vimeo.com/7592893"
vimeo_video_id           = url.scan(/vimeo.com\/(\d+)\/?/).flatten.to_s               # extract the video id
vimeo_video_json_url     = "http://vimeo.com/api/v2/video/%s.json" % vimeo_video_id   # API call

# Parse the JSON and extract the thumbnail_large url
thumbnail_image_location = JSON.parse(open(vimeo_video_json_url).read).first['thumbnail_large'] rescue nil

Hier ist ein Beispiel dafür, wie die gleiche Sache in ASP.NET zu tun mit C #. Fühlen Sie sich frei eine andere Fehler fängt Bild 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
    {
        //cat with cheese on it's face fail
        return "http://bestofepicfail.com/wp-content/uploads/2008/08/cheese_fail.jpg";
    }
}

Hinweis: Ihre API-Anforderung sollte dies, wie wenn angefordert: http://vimeo.com /api/v2/video/32660708.xml

Die einfachste Art und Weise, dass JavaScript Ich fand das Bild um es zu bekommen, ohne die Video-ID zu suchen, verwendet:

//Get the video thumbnail via 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 Notwendigkeit, die Video-Thumbnail, um die Video-ID im Zusammenhang mit bekommt er die $id mit der Video-ID ersetzen kann und eine XML mit den Video-Informationen erhalten:

http://vimeo.com/api/v2/video/$id.xml

Beispiel:

http://vimeo.com/api/v2/video/198340486.xml

Quelle

Wenn Sie Miniatur durch reine js / jquery ohne api verwenden möchten, können Sie dieses Tool verwenden, um ein Bild aus dem Video und voila zu erfassen! Einfügen url Daumen, in denen immer Sie mögen beziehen.

Hier ist ein Code, Stift:

  

http://codepen.io/alphalink/pen/epwZpJ

<img src="https://i.vimeocdn.com/video/531141496_640.jpg"` alt="" />

Hier ist die Site Thumbnail-zu bekommen:

http://video.depone.eu/

Mit der Vimeo url ( https://player.vimeo.com/video/30572181 ), hier ist mein Beispiel

<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta charset="utf-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <script src="http://code.jquery.com/jquery-latest.min.js" type="text/javascript"></script>
    <title>Vimeo</title>
</head>
<body>
    <div>
        <img src="" id="thumbImg">
    </div>
    <script>
        $(document).ready(function () {
            var vimeoVideoUrl = 'https://player.vimeo.com/video/30572181';
            var match = /vimeo.*\/(\d+)/i.exec(vimeoVideoUrl);
            if (match) {
                var vimeoVideoID = match[1];
                $.getJSON('http://www.vimeo.com/api/v2/video/' + vimeoVideoID + '.json?callback=?', { format: "json" }, function (data) {
                    featuredImg = data[0].thumbnail_large;
                    $('#thumbImg').attr("src", featuredImg);
                });
            }
        });
    </script>
</body>
</html>

Es scheint, wie api / v2 ist tot.
Um die neue API zu verwenden, müssen Sie Ihre Anwendung registrieren und base64 kodieren die client_id und client_secret als ein Authorization-Header.

$.ajax({
    type:'GET',
    url: 'https://api.vimeo.com/videos/' + video_id,
    dataType: 'json',
    headers: {
        'Authorization': 'Basic ' + window.btoa(client_id + ":" + client_secret);
    },
    success: function(data) {
        var thumbnail_src = data.pictures.sizes[2].link;
        $('#thumbImg').attr('src', thumbnail_src);
    }
});

Für mehr Sicherheit können Sie die client_id und client_secret zurückkehren bereits vom Server verschlüsselt.

function parseVideo(url) {
    // - Supported YouTube URL formats:
    //   - http://www.youtube.com/watch?v=My2FRPA3Gf8
    //   - http://youtu.be/My2FRPA3Gf8
    //   - https://youtube.googleapis.com/v/My2FRPA3Gf8
    // - Supported Vimeo URL formats:
    //   - http://vimeo.com/25451551
    //   - http://player.vimeo.com/video/25451551
    // - Also supports relative URLs:
    //   - //player.vimeo.com/video/25451551

    url.match(/(http:|https:|)\/\/(player.|www.)?(vimeo\.com|youtu(be\.com|\.be|be\.googleapis\.com))\/(video\/|embed\/|watch\?v=|v\/)?([A-Za-z0-9._%-]*)(\&\S+)?/);

    if (RegExp.$3.indexOf('youtu') > -1) {
        var type = 'youtube';
    } else if (RegExp.$3.indexOf('vimeo') > -1) {
        var type = 'vimeo';
    }

    return {
        type: type,
        id: RegExp.$6
    };
}

function getVideoThumbnail(url, cb) {
    var videoObj = parseVideo(url);
    if (videoObj.type == 'youtube') {
        cb('//img.youtube.com/vi/' + videoObj.id + '/maxresdefault.jpg');
    } else if (videoObj.type == 'vimeo') {
        $.get('http://vimeo.com/api/v2/video/' + videoObj.id + '.json', function(data) {
            cb(data[0].thumbnail_large);
        });
    }
}

Tatsächlich ist der Mann, der diese Frage gestellt veröffentlichte seine eigene Antwort.

„Vimeo scheinen mich zu wollen eine HTTP-Anforderung machen, und extrahieren Sie die Thumbnail-URL aus der XML sie zurückkehren ...“

Die Vimeo API-Dokumentation sind hier: http://vimeo.com/api/docs/ simple-api

Kurz gesagt, Ihre App Bedürfnisse eine GET-Anforderung wie die folgenden zu einer URL machen:

http://vimeo.com/api/v2/video/video_id.output

und analysiert die zurückgegebenen Daten die Vorschau-URL zu erhalten, die Sie benötigen, dann laden Sie die Datei unter dieser URL.

schrieb ich eine Funktion in PHP mich, dies zu lassen, ich hoffe, seine nützlich jemand. Der Weg zur Thumbnail innerhalb eines Link-Tag auf der Video-Seite. Dies scheint für mich, den Trick zu tun.

    $video_url = "http://vimeo.com/7811853"  
    $file = fopen($video_url, "r");
    $filedata = stream_get_contents($file);
    $html_content = strpos($filedata,"<link rel=\"videothumbnail");
    $link_string = substr($filedata, $html_content, 128);
    $video_id_array = explode("\"", $link_string);
    $thumbnail_url = $video_id_array[3];
    echo $thumbnail_url;

Hope es hilft niemandem.

Foggson

function getVimeoInfo($link)
 {
    if (preg_match('~^http://(?:www\.)?vimeo\.com/(?:clip:)?(\d+)~', $link, $match)) 
    {
        $id = $match[1];
    }
    else
    {
        $id = substr($link,10,strlen($link));
    }

    if (!function_exists('curl_init')) die('CURL is not installed!');
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, "http://vimeo.com/api/v2/video/$id.php");
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_TIMEOUT, 10);
    $output = unserialize(curl_exec($ch));
    $output = $output[0];
    curl_close($ch);
    return $output;
}`

// unterhalb Funktion übergibt die Vorschau-URL.

function save_image_local($thumbnail_url)
    {

         //for save image at local server
         $filename = time().'_hbk.jpg';
         $fullpath = '../../app/webroot/img/videos/image/'.$filename;

         file_put_contents ($fullpath,file_get_contents($thumbnail_url));

        return $filename;
    }

Decomposing Karthikeyan P Antwort, so dass es in einer breiteren Palette von Szenarien verwendet werden kann:

// Requires jQuery

function parseVimeoIdFromUrl(vimeoUrl) {
  var match = /vimeo.*\/(\d+)/i.exec(vimeoUrl);
  if (match)
    return match[1];

  return null;
};

function getVimeoThumbUrl(vimeoId) {
  var deferred = $.Deferred();
  $.ajax(
    '//www.vimeo.com/api/v2/video/' + vimeoId + '.json',
    {
        dataType: 'jsonp',
        cache: true
    }
  )
  .done(function (data) {
    // .thumbnail_small 100x75
    // .thumbnail_medium 200x150
    // 640 wide
        var img = data[0].thumbnail_large;
        deferred.resolve(img);  
    })
  .fail(function(a, b, c) {
    deferred.reject(a, b, c);
  });
  return deferred;
};

Verwendung

Hier finden Sie eine Vimeo Id von einer Vimeo Video URL:

var vimeoId = parseVimeoIdFromUrl(vimeoUrl);

Get a vimeo Thumbnail-URL von einem Vimeo Id:

getVimeoThumbUrl(vimeoIds[0])
.done(function(img) {
    $('div').append('<img src="' + img + '"/>');
});

https://jsfiddle.net/b9chris/nm8L8cc8/1/

Dies ist eine kurze listige Art und Weise, es zu tun, und auch eine Möglichkeit, eine benutzerdefinierte Größe zu wählen.

Ich gehe hier:

http://vimeo.com/api/v2/video/[VIDEO ID].php

Laden Sie die Datei, öffnen Sie sie und finden Sie die 640 Pixel breit Thumbnail, wird es ein Format haben wie folgt:

https://i.vimeocdn.com/video/[LONG NUMBER HERE]_640.jpg

Sie den Link nehmen, die 640 für ändern - zum Beispiel - 1400, und Sie mit etwas am Ende wie folgt:

https://i.vimeocdn.com/video/[LONG NUMBER HERE]_1400.jpg

Fügen Sie ihn auf Ihrer Browser-Suchleiste und genießen.

Cheers,

Wenn Sie eine automatisierte Lösung nicht benötigen, können Sie die Thumbnail-URL durch Eingabe der Vimeo-ID finden Sie hier: http: //video.depone.eu/

UPDATE: Diese Lösung funktioniert nicht ab Dezember 2018

.

Ich war für die gleiche Sache suchen und es sieht aus wie die meisten Antworten hier veraltet sind aufgrund Vimeo API v2 veraltet ist.

meine php 2 ¢:

$vidID     = 12345 // Vimeo Video ID
$tnLink = json_decode(file_get_contents('https://vimeo.com/api/oembed.json?url=https%3A//vimeo.com/' . $vidID))->thumbnail_url;

mit der oben Sie den Link zu Vimeo Standard-Miniaturbild erhalten.

Wenn Sie unterschiedliche Größe Bild verwenden möchten, können Sie so etwas wie hinzufügen:

$tnLink = substr($tnLink, strrpos($tnLink, '/') + 1);
$tnLink = substr($tnLink, 0, strrpos($tnLink, '_')); // You now have the thumbnail ID, which is different from Video ID

// And you can use it with link to one of the sizes of crunched by Vimeo thumbnail image, for example:
$tnLink = 'https://i.vimeocdn.com/filter/overlay?src0=https%3A%2F%2Fi.vimeocdn.com%2Fvideo%2F' . $tnLink    . '_1280x720.jpg&src1=https%3A%2F%2Ff.vimeocdn.com%2Fimages_v6%2Fshare%2Fplay_icon_overlay.png';

Wenn Sie nach einer alternativen Lösung suchen und können die Vimeo-Account verwalten es eine andere Möglichkeit ist, sie einfach jedes Video, das Sie in ein Album angezeigt werden soll hinzufügen und dann das API verwenden, um die Albumdetails zu verlangen - es zeigt dann alle Thumbnails und Links. Es ist nicht ideal, aber helfen könnte.

API Endpunkt (Spielplatz)

Twitter convo mit @vimeoapi

Sie können einen Blick auf das Juwel von Matt Haken zu nehmen. https://github.com/matthooks/vimeo

Es bietet eine einfache vimeo Wrapper für die api.

Alle müssten Sie ist die video_id zu speichern (und den Anbieter, wenn Sie auch andere Video-Websites tun werden)

Sie können die Vimeo-Video-ID extrahieren wie so

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 wenn Sie Sie Schlauch benötigen Sie diese nützlich finden

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

Für jemanden wie mich, der versucht, diese vor kurzem, um herauszufinden,

https://i.vimeocdn.com/video/[video_id]_[dimension].webp funktioniert für mich.

(wobei dimension = 200x150 | 640)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top