รับภาพขนาดย่อ img จาก Vimeo หรือไม่


308

ฉันต้องการรับภาพขนาดย่อสำหรับวิดีโอจาก Vimeo

เมื่อรับภาพจาก Youtube ฉันทำแบบนี้:

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

มีความคิดวิธีทำอย่างไรสำหรับ Vimeo?

นี่คือคำถามเดียวกันโดยไม่มีคำตอบใด ๆ


3
คุณตรวจสอบว่ามันถูกกฎหมายหรือไม่ที่คุณจะนำภาพเหล่านี้ไปใช้บนเว็บไซต์ของคุณ? ถ้าไม่เช่นนั้นเป็นจุดที่สงสัยที่จะเริ่มต้น
lothar

12
ใช่มันถูกกฎหมาย - ทั้งสองเว็บไซต์ให้รายละเอียดเหล่านี้อย่างเปิดเผยเนื่องจากพวกเขาต้องการให้คุณใช้เนื้อหาของพวกเขา! ลิงก์วิดีโอแบบฝังทั้งหมดจะกลับไปยังไซต์โฮสต์หลังจากทั้งหมด
Magnus Smith

1
หากคุณต้องการให้แน่ใจว่าหน้าของคุณไม่ได้พึ่งพาเซิร์ฟเวอร์ vimeo และประสิทธิภาพได้รับการปรับให้เหมาะสมฉันขอแนะนำให้คุณทำในรูปแบบจาวาสคริปต์ ข้อเสียคือมันจะไม่แสดงนิ้วหัวแม่มือให้กับผู้ใช้ที่ไม่มี javascript แต่ตัวยึดตำแหน่งที่เหมาะสมพร้อมลิงก์ควรเป็นมิตรเพียงพอ (เปลี่ยน. xml เป็น. json ตามคำขอ API ของคุณเป็น vimeo)
Myster

ลองคำตอบนี้: stackoverflow.com/a/17156853/146602 - ทำให้ง่ายต่อการคว้าข้อมูล / ข้อมูลเกี่ยวกับวิดีโอ vimeo ใด ๆ ที่มี URL เท่านั้น
phirschybar

1
i.vimeocdn.com/video/528073804_200x200.webpด้วยวิธีนี้คุณสามารถรับภาพวิดีโอได้
Pus

คำตอบ:


361

จากเอกสารVimeo Simple 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'];  

ตกลงดี ฉันไม่คุ้นเคยกับxmlแม้ว่า ฉันจะไปthumbnail_smallกับได้phpอย่างไร
Johan

ในการรับกับ PHP ขั้นแรกให้ใช้ส่วนขยายของ php ใน URL เช่นvimeo.com/api/v2/video/6271487.phpคุณจะได้รับไฟล์ซึ่งเป็นบรรทัดแรกที่ดูเหมือนว่าเป็นแฮชของ php ที่ต่อเนื่องกันใช้ unserialize และจากนั้นเพียงแค่อ่านรายการที่คุณต้องการ
ปุย

1
ขอบคุณ URL ที่ใช้งานได้ดี นอกจากนี้ API ด้านบนใช้งานไม่ได้ให้ไปที่vimeo.com/apiเพื่ออ่านเกี่ยวกับมัน
fedmich

5
คุณสามารถเปลี่ยนขนาดภาพและประเภทไฟล์ภาพได้ ตัวอย่างเช่นคุณสามารถเปลี่ยนค่าเริ่มต้นthumbnail_largeจากi.vimeocdn.com/video/23566238_640.webpเป็นi.vimeocdn.com/video/23566238_640.pngหรือi.vimeocdn.com/video/23566238_320.jpg
Michael McGinnis

28
เนื่องจาก API ตายคำตอบนี้จึงไม่สามารถใช้งานได้อีกต่อไป
KnF

58

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

ขอบคุณมากสำหรับสิ่งนี้มีประโยชน์มาก ฉันคิดว่ามันมีตัวพิมพ์เล็กมากหนึ่งตัว คุณใช้ # ในตัวแปร id_img แต่ยังไม่มี # ใน img องค์ประกอบ id ตัวอย่างของคุณใช้ jQuery ด้วยหรือไม่ ฉันเลื่อนไปข้างหน้า$(id_img).beforeและ$(id_img).attrเพื่อcreateElementและขั้นพื้นฐานมากขึ้นgetElementById(id_img).srcแต่จะไม่ได้รับเลยถ้ามันไม่ได้เป็นตัวอย่างของคุณ
atomicules

3
# คำถามคือไวยากรณ์ JQuery ไม่ใช่ข้อผิดพลาด ใช่มันถือว่าการใช้ JQuery
Natim

อ่าโอเคแล้ว ขอขอบคุณสำหรับการชี้แจง. ฉันไม่ได้ใช้ JQuery บ่อยครั้ง แต่คำตอบก็ยังมีประโยชน์สำหรับฉันจริงๆ
atomicules

1
นี่คือ jsfiddle ที่ทดสอบได้สำหรับรหัสเดียวกัน: jsfiddle.net/archatas/Tv7GZ
Aidas Bendoraitis

ขอบคุณ @AidasBendoraitis
Natim

45

คุณควรวิเคราะห์คำตอบของ API ของ Vimeo ไม่มีวิธีในการโทรแบบ 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;
}

3
ขอบคุณสำหรับสิ่งนี้. นี่คือทางออกที่ฉันโปรดปราน
พาล

44

ใช้ 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>

1
ฉันต้องการใช้สิ่งนี้ ... แต่ถ้าฉันมีวิดีโอหลายรายการในหน้าเดียว มีวิธีใดบ้างที่จะส่งรหัสไปยังการโทร? เป็นการดีที่ฉันต้องการใช้สิ่งที่ชอบ<div id='12345678' class='vimeo_thumb'></div>- และนั่นจะเต็มไปด้วยภาพขนาดย่อ img
ด่าน

4
การเรียกใช้เมธอดนั้นสั้นลงเช่น$.getJSON('http://vimeo.com/api/v2/video/' + video_id + '.json?callback=?', function (data) {...
Sanghyun Lee

22

ด้วย Ruby คุณสามารถทำสิ่งต่อไปนี้ถ้าคุณมี:

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

2
หมายเหตุ: คุณอาจต้องrequire 'open-uri'อนุญาตให้เปิดเพื่อแยก URI รวมถึงไฟล์
กริช

ฉันต้องเพิ่ม url.scan (/vimeo.com \ / (\ d +) \ /? /) flatten.to_s.delete ("^ 0-9.") เพื่อรับรหัส vimeo #
Abram

21

นี่คือตัวอย่างของวิธีการทำสิ่งเดียวกันใน ASP.NET โดยใช้ C # อย่าลังเลที่จะใช้รูปจับข้อผิดพลาดอื่น :)

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


ดีมาก แต่ลิงก์ API เป็นvimeo.com/api/v2/video/video_id.xmlไม่ใช่ "วิดีโอ" ด้านหน้ารหัสวิดีโอ
Martin

ย่อโค้ดนี้ลงและเปลี่ยนพารามิเตอร์เพื่อรับรหัส vimeo แทน URL เต็ม (ไม่สามารถคิดออกวิธีการหลายบล็อกรหัส) 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; } }
elkaz

14

วิธี 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ด้วยรหัสวิดีโอและรับ XML ด้วยรายละเอียดวิดีโอ:

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

ตัวอย่าง:

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

แหล่ง


2
นี่เป็นคำตอบที่ดีที่สุดเพราะ Vimeo คัดค้าน v2 api oEmbed ไม่ต้องการการรับรองความถูกต้องและส่งกลับการตอบสนอง JSON / XML ที่มี URL รูปขนาดย่อ developer.vimeo.com/apis/oembed
joemaller

1
เราจะใช้การโทร ajax นี้อย่างไรเมื่อค้นหาวิดีโอตาม ID
klewis

@blackhawk ฉันไม่ได้ แต่ฉัน google ตอนนี้และพบบางสิ่งบางอย่างสำหรับคุณเพียงแค่แทนที่ video_id ด้วยของคุณ$idและคุณจะได้รับ XML ด้วยรายละเอียดวิดีโอ (รวมภาพขนาดย่อ) http://vimeo.com/api/v2/video/$id.xml. ตัวอย่างเช่น: http://vimeo.com/api/v2/video/198340486.xml. แหล่งที่มาอยู่ที่นี่: coderwall.com/p/fdrdmg/get-a-thumbnail-from-a-vimeo-video
Roy Shoa

@blackhawk ฉันแก้ไขคำตอบของฉันคุณสามารถดูได้ในขณะนี้ ขอบคุณ!
Roy Shoa

11

หากคุณต้องการใช้รูปขนาดย่อผ่านบริสุทธิ์ js / jquery no api คุณสามารถใช้เครื่องมือนี้เพื่อจับภาพเฟรมจากวิดีโอและ voila! แทรกนิ้วหัวแม่มือ URL ที่คุณต้องการแหล่งที่มา

นี่คือปากการหัส:

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

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

นี่คือเว็บไซต์ที่จะได้รับรูปขนาดย่อ:

http://video.depone.eu/


1
@blackhawk site สำรองแล้ว
alphapilgrim

ดูเหมือนว่าจะเป็นเฟรมแบบสุ่มไม่ใช่ภาพปก / ภาพย่ออย่างเป็นทางการที่ผู้สร้างวิดีโอเลือกไว้ ดีใจที่ได้ทราบว่ามีอยู่แล้ว แต่ฉันคิดว่าฉันจะใช้วิธีการแยกวิเคราะห์ json API เพราะไม่มีการควบคุมปกจากด้าน vimeo ของสิ่งต่าง ๆ ด้วยสิ่งนี้
squarecandy

9

ใช้ 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>


คุณคือสุดยอด
Alexandr Kazakov

7

ดูเหมือนว่า 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เข้ารหัสจากเซิร์ฟเวอร์แล้ว


1
base64 ไม่ใช่แฮช ไม่มีอะไร "ปลอดภัย" เกี่ยวกับการเข้ารหัส base64 ข้อมูลของคุณบนเซิร์ฟเวอร์มากกว่าการเข้ารหัสบนฝั่งไคลเอ็นต์ ที่กล่าวว่าน่าจะค่อนข้างเร็ว
Sumurai8

7

นี่เป็นวิธีที่มีฝีมืออย่างรวดเร็วในการทำมันและวิธีเลือกขนาดที่กำหนดเอง

ฉันไปที่นี่:

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

วางลงบนแถบค้นหาเบราว์เซอร์ของคุณและเพลิดเพลิน

ไชโย


วิธีนี้ใช้ไม่ได้ผล ส่งคืนไฟล์ php ที่ไม่พบ VIDEO_ID
stldoug

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

4

จริงๆแล้วคนที่ถามคำถามนั้นโพสต์คำตอบของเขาเอง

"Vimeo ต้องการให้ฉันส่งคำขอ HTTP และดึง URL ภาพขนาดย่อจาก XML ที่ส่งคืน ... "

เอกสาร Vimeo API อยู่ที่นี่: http://vimeo.com/api/docs/simple-api

กล่าวโดยย่อแอปของคุณจำเป็นต้องส่งคำขอ GET ไปยัง URL ดังนี้:

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

และแยกวิเคราะห์ข้อมูลที่ส่งคืนเพื่อรับ URL ภาพขนาดย่อที่คุณต้องการจากนั้นดาวน์โหลดไฟล์ที่ URL นั้น


4

ฉันเขียนฟังก์ชันใน 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;

หวังว่ามันจะช่วยให้ทุกคน

Foggson


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

4

การสลายคำตอบของ 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:

var vimeoId = parseVimeoIdFromUrl(vimeoUrl);

รับ URL รูปขนาดย่อ vimeo จากรหัส Vimeo:

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

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


4

UPDATE:โซลูชันนี้หยุดทำงานตั้งแต่ธันวาคม 2561

ฉันกำลังมองหาสิ่งเดียวกันและดูเหมือนว่าคำตอบส่วนใหญ่ที่นี่ล้าสมัยเนื่องจาก 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';

โปรดช่วยฉันด้วยลิงค์ประกาศอย่างเป็นทางการที่มีการกล่าวถึงว่า v2 vimeo เลิกใช้แล้ว
Deepak Yadav

3

หากคุณไม่ต้องการโซลูชันอัตโนมัติคุณสามารถค้นหา URL รูปขนาดย่อได้โดยป้อนรหัส vimeo ที่นี่: http://video.depone.eu/


มีคำตอบอื่นเช่นนี้ในหน้านี้ด้านบน
alphapilgrim

2

ฉันสร้าง CodePen ที่ดึงภาพให้คุณ

https://codepen.io/isramv/pen/gOpabXg

HTML

<input type="text" id="vimeoid" placeholder="257314493" value="257314493">
<button id="getVideo">Get Video</button>
<div id="output"></div>

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 = `<img src="${thumbnail_small}"/>`;
    const medium = `<img src="${thumbnail_medium}"/>`;
    const large = `<img src="${thumbnail_large}"/>`;
    output.innerHTML = small + medium + large;
  })
  .catch(error => {
    console.log(error);
  });
}

getVideo.addEventListener('click', e => {
  if (!isNaN(videoIdInput.value)) {
    getVideoThumbnails(videoIdInput.value);
  }
});

ป้อนคำอธิบายรูปภาพที่นี่


1

หากคุณกำลังมองหาโซลูชันทางเลือกและสามารถจัดการบัญชี vimeo ได้อีกวิธีหนึ่งคุณเพียงเพิ่มวิดีโอทุกรายการที่คุณต้องการแสดงลงในอัลบั้มจากนั้นใช้ API เพื่อขอรายละเอียดอัลบั้มจากนั้นแสดงรูปขนาดย่อและลิงก์ทั้งหมด . มันไม่เหมาะ แต่อาจช่วยได้

จุดสิ้นสุดของ API (สนามเด็กเล่น)

พูดเบาและรวดเร็วกับ@vimeoapi


นี่อาจไม่ใช่วิธีที่มีประสิทธิภาพที่สุดในการดำเนินการโดยเฉพาะอย่างยิ่งหาก (1) ส่วนที่เหลือของรหัสของคุณไม่ได้ขึ้นอยู่กับ Vimeo API และ (2) คุณรู้สึกดีที่การเรียก API ของคุณอาจเหนือกว่าสิ่งที่ Vimeo มี กำหนดเป็นวงเงิน
klewis

@ blackhawk คุณพลาดจุดของฉัน มันเป็นทางเลือก หากคุณทำสิ่งนี้คุณจะมีวิดีโอทั้งหมดของคุณในการเรียก API เดียว คุณสามารถแคชฝั่งเซิร์ฟเวอร์นั้นเช่น
sidonaldson

1

คุณอาจต้องการดูอัญมณีจาก Matt Hooks https://github.com/matthooks/vimeo

มันให้เสื้อคลุม vimeo ง่าย ๆ สำหรับ API

สิ่งที่คุณต้องมีก็คือการจัดเก็บ video_id (และผู้ให้บริการหากคุณกำลังทำเว็บไซต์วิดีโออื่น ๆ ด้วย)

คุณสามารถแยกรหัสวิดีโอ vimeo ได้

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

0

สำหรับผู้ที่ยังต้องการวิธีรับภาพขนาดย่อผ่าน URL เท่านั้นเช่นเดียวกับ Youtube แอปพลิเคชั่นขนาดเล็กที่สร้างขึ้นมาพร้อมกับรหัส Vimeo

https://vumbnail.com/358629078.jpg

เพียงแค่เสียบ ID วิดีโอของคุณและมันจะดึงมันและแคชเป็นเวลา 24 ชั่วโมงเพื่อให้บริการได้อย่างรวดเร็ว

หากคุณต้องการในการหมุนของคุณเองคุณสามารถทำได้ที่นี่

repo


-3

สำหรับใครบางคนเช่นฉันที่กำลังพยายามคิดเรื่องนี้เมื่อเร็ว ๆ นี้

https://i.vimeocdn.com/video/[video_id]_[dimension].webp ทำงานได้สำหรับฉัน

(โดยdimension= 200x150 | 640)


1
ยินดีที่ได้พบ นี่สะอาดจริงๆ
Ben Harrison

เยี่ยมมากยกเว้นซาฟารีบน iOS ไม่แสดงหน้าเว็บ
Gregory Magarshak

9
นี่ดูเหมือนจะผิด - ฉันได้ภาพที่ไม่มีส่วนเกี่ยวข้องกับวิดีโอจริง ID ที่ใช้ใน thumb url นั้นแตกต่างจาก id ของวิดีโอ - ถ้าคุณเรียก api คุณจะได้ URL นี้ที่มีรหัสที่แตกต่างกัน ไม่มีทางลัดจากการเรียก api
Morten Holmgaard

12
ไม่ทำงาน video_id และ image_id ไม่เหมือนกัน ดังนั้นคุณจะได้รับภาพที่ไม่ได้เป็นของวิดีโอที่คุณขอ
Nicolas Azrak

รหัสวิดีโอและรหัสในรูปขนาดย่อแตกต่างกัน
Muhammad Hassaan
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.