문제

Vimeo의 비디오에 대한 축소판 이미지를 얻고 싶습니다.

YouTube에서 이미지를 얻을 때는 다음과 같습니다.

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

Vimeo를 위해 어떻게 해야하는지 아십니까?

답이없는 것과 같은 질문이 있습니다.

도움이 되었습니까?

해결책

로부터 Vimeo 간단한 API 문서:

비디오 요청 만들기

특정 비디오에 대한 데이터를 얻으려면 다음 URL을 사용하십시오.

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

video_id 정보를 원하는 비디오의 ID.

산출 출력 유형을 지정합니다. 현재 JSON, PHP 및 XML 형식을 제공합니다.

그래서이 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>

모든 비디오가 썸네일을 얻으려면 이것을 구문 분석하십시오

다음은 PHP의 대략적인 코드입니다

<?php

$imgid = 6271487;

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

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

다른 팁

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

표시하려면 :

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

JQuery JSONP 요청 사용 :

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

Vimeo의 API의 응답을 구문 분석해야합니다. URL 호출 (Dailymotion 또는 YouTube와 같은)이있는 방법은 없습니다.

내 PHP 솔루션은 다음과 같습니다.

/**
 * 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;
}

루비를 사용하면 다음과 같이 다음과 같이 할 수 있습니다.

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

다음은 C#을 사용하여 ASP.NET에서 동일한 작업을 수행하는 방법의 예입니다. 다른 오류 캐치 이미지를 자유롭게 사용하십시오 :)

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

참고 : 요청 된 경우 API 요청이 마음에 드져야합니다. http://vimeo.com/api/v2/video/32660708.xml

비디오 ID를 검색하지 않고 썸네일을 얻는 가장 쉬운 JavaScript 방법은 다음을 사용합니다.

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

참고 : 누군가 비디오 ID와 관련된 비디오 썸네일을 가져와야하는 경우 $id 비디오 ID를 사용하여 비디오 세부 정보가 포함 된 XML을받습니다.

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

예시:

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

원천

Pure JS/JQuery No API를 통해 썸네일을 사용하려면이 도구를 사용하여 비디오와 Voila에서 프레임을 캡처 할 수 있습니다! 원하는 소스를 삽입하십시오.

코드 펜은 다음과 같습니다.

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

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

다음은 축소판을 얻는 사이트입니다.

http://video.depone.eu/

Vimeo URL 사용 (https://player.vimeo.com/video/30572181), 여기 내 예입니다

<!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>

API/V2가 죽은 것 같습니다.
새 API를 사용하려면 신청서를 등록하십시오, 및 Base64는 client_id 그리고 client_secret 승인 헤더로.

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

보안을 위해서는 반품 할 수 있습니다 client_id 그리고 client_secret 서버에서 이미 인코딩되었습니다.

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

실제로 그 질문을 한 사람은 자신의 대답을 게시했습니다.

"Vimeo는 HTTP 요청을하고 XML에서 썸네일 URL을 추출하기를 원합니다 ..."

Vimeo API 문서는 여기에 있습니다. http://vimeo.com/api/docs/simple-api

요컨대, 앱은 다음과 같이 URL에 대한 요청을해야합니다.

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

반환 된 데이터를 구문 분석하여 필요한 썸네일 URL을 얻은 다음 해당 URL에서 파일을 다운로드하십시오.

나는 PHP에 이것을 허용하기 위해 함수를 썼다. 나는 그것이 누군가에게 유용하기를 바랍니다. 축소판으로가는 경로는 비디오 페이지의 링크 태그 내에 포함되어 있습니다. 이것은 나를 위해 트릭을하는 것 같습니다.

    $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;

그것이 누군가를 돕기를 바랍니다.

포그 슨

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

// 아래 함수에서 썸네일 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;
    }

Karthikeyan P의 답변을 분해하여 다양한 시나리오에서 사용할 수 있습니다.

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

용법

Vimeo 비디오 URL에서 Vimeo ID를 받으십시오.

var vimeoId = parseVimeoIdFromUrl(vimeoUrl);

Vimeo ID에서 vimeo 썸네일 URL을 받으십시오.

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

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

이것은 빠르게 교묘 한 방법이며 사용자 정의 크기를 선택하는 방법입니다.

나는 여기에 간다 :

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

파일을 다운로드하고 열고 640 픽셀의 넓은 썸네일을 찾으면 다음과 같은 형식이 있습니다.

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

링크를 가져 가서 640을 - 예를 들어 -1400으로 변경하면 다음과 같은 것으로 끝납니다.

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

브라우저 검색 창에 붙여 넣고 즐기십시오.

건배,

자동화 된 솔루션이 필요하지 않은 경우 여기에 Vimeo ID를 입력하여 축소판 URL을 찾을 수 있습니다. http://video.depone.eu/

업데이트: 이 솔루션은 2018 년 12 월 현재 작동이 중단되었습니다.

나는 똑같은 것을 찾고 있었고 Vimeo API V2가 감가 상승했기 때문에 여기서 대부분의 답변이 구식 인 것처럼 보입니다.

내 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;

위의 경우 Vimeo 기본 썸네일 이미지에 대한 링크가 표시됩니다.

다른 크기 이미지를 사용하려면 다음과 같은 것을 추가 할 수 있습니다.

$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';

대체 솔루션을 찾고 Vimeo 계정을 관리 할 수있는 경우 다른 방법이 있습니다. 앨범에 표시하려는 모든 비디오를 추가 한 다음 API를 사용하여 앨범 세부 사항을 요청한 다음 모든 썸네일과 링크를 표시합니다. . 이상적이지는 않지만 도움이 될 수 있습니다.

API 엔드 포인트 (놀이터)

트위터 Convo와 @vimeoapi

Matt Hooks의 보석을보고 싶을 수도 있습니다. https://github.com/matthooks/vimeo

API에 대한 간단한 Vimeo 래퍼를 제공합니다.

video_id (및 다른 비디오 사이트를 수행하는 경우 제공자)를 저장하는 것만으로도 필요한 것은

Vimeo 비디오 ID와 같은 Vimeo 비디오 ID를 추출 할 수 있습니다

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

그리고 튜브가 필요하면이 유용한 것을 찾을 수 있습니다.

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

최근에 이것을 알아 내려고하는 나 같은 사람에게

https://i.vimeocdn.com/video/[video_id]_[dimension].webp 나를 위해 일합니다.

(어디 dimension = 200x150 | 640)

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top