Saya ingin mendapatkan gambar mini untuk video dari Vimeo.
Saat mendapatkan gambar dari Youtube, saya hanya melakukan ini:
http://img.youtube.com/vi/HwP5NG-3e8I/2.jpg
Adakah yang harus dilakukan untuk Vimeo?
Saya ingin mendapatkan gambar mini untuk video dari Vimeo.
Saat mendapatkan gambar dari Youtube, saya hanya melakukan ini:
http://img.youtube.com/vi/HwP5NG-3e8I/2.jpg
Adakah yang harus dilakukan untuk Vimeo?
Jawaban:
Dari dokumen Vimeo Simple API :
Membuat Permintaan Video
Untuk mendapatkan data tentang video tertentu, gunakan url berikut:
http://vimeo.com/api/v2/video/video_id.output
video_id ID video yang Anda inginkan informasinya.
output Tentukan tipe output. Kami saat ini menawarkan format JSON, PHP, dan XML.
Jadi, dapatkan URL ini 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>
Parsing ini untuk setiap video untuk mendapatkan thumbnail
Berikut ini perkiraan kode dalam PHP
<?php
$imgid = 6271487;
$hash = unserialize(file_get_contents("http://vimeo.com/api/v2/video/$imgid.php"));
echo $hash[0]['thumbnail_medium'];
xml
. Bagaimana saya bisa mendapatkan thumbnail_small
dengan php
?
thumbnail_large
dari i.vimeocdn.com/video/23566238_640.webp menjadi i.vimeocdn.com/video/23566238_640.png atau i.vimeocdn.com/video/23566238_320.jpg
Dalam javascript (menggunakan 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);
}
Untuk menampilkannya:
<img id="vimeo-{{ video.id_video }}" src="" alt="{{ video.title }}" />
<script type="text/javascript">
vimeoLoadingThumb({{ video.id_video }});
</script>
$(id_img).before
dan $(id_img).attr
untuk createElement
dan yang lebih mendasar getElementById(id_img).src
, tetapi tidak akan mendapatkannya sama sekali jika bukan untuk contoh Anda.
Anda harus menguraikan respons API Vimeo. Tidak ada cara untuk itu dengan panggilan URL (seperti dailymotion atau youtube).
Inilah solusi PHP saya:
/**
* 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;
}
Menggunakan jQuery jsonp request:
<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>
<div id='12345678' class='vimeo_thumb'></div>
- dan itu akan diisi dengan thumbnail img.
$.getJSON('http://vimeo.com/api/v2/video/' + video_id + '.json?callback=?', function (data) {...
Dengan Ruby, Anda dapat melakukan hal berikut jika Anda memiliki, katakan:
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
require 'open-uri'
membolehkan file URI dan parse terbuka untuk diurai.
Berikut adalah contoh cara melakukan hal yang sama di ASP.NET menggunakan C #. Jangan ragu untuk menggunakan gambar hasil tangkapan yang berbeda :)
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";
}
}
CATATAN: Permintaan API Anda harus seperti ini ketika diminta: http://vimeo.com/api/v2/video/32660708.xml
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; } }
Cara JavaScript termudah yang saya temukan untuk mendapatkan thumbnail, tanpa mencari id video menggunakan:
//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);
}
});
Catatan: Jika seseorang perlu mendapatkan thumbnail video yang terkait dengan id video, ia dapat mengganti $id
dengan id video dan mendapatkan XML dengan detail video:
http://vimeo.com/api/v2/video/$id.xml
Contoh:
http://vimeo.com/api/v2/video/198340486.xml
$id
dan Anda akan mendapatkan XML dengan detail video (termasuk thumbnail). http://vimeo.com/api/v2/video/$id.xml
. misalnya: http://vimeo.com/api/v2/video/198340486.xml
. Sumber ada di sini: coderwall.com/p/fdrdmg/get-a-thumbnail-dari-a-vimeo-video
Jika Anda ingin menggunakan thumbnail melalui js / jquery no api murni, Anda dapat menggunakan alat ini untuk mengambil bingkai dari video dan voila! Masukkan jempol url di sumber yang Anda sukai.
Berikut ini adalah kode pena:
<img src="https://i.vimeocdn.com/video/531141496_640.jpg"` alt="" />
Inilah situs untuk mendapatkan thumbnail:
Menggunakan url Vimeo ( https://player.vimeo.com/video/30572181 ), berikut adalah contoh saya
<!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>
Sepertinya api / v2 sudah mati.
Untuk menggunakan API baru, Anda harus mendaftarkan aplikasi Anda , dan base64 menyandikan client_id
dan client_secret
sebagai header Otorisasi.
$.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);
}
});
Untuk keamanan, Anda dapat mengembalikan client_id
dan client_secret
sudah dikodekan dari server.
Ini adalah cara licik yang cepat untuk melakukannya, dan juga cara untuk memilih ukuran khusus.
Saya pergi ke sini:
http://vimeo.com/api/v2/video/[VIDEO ID].php
Unduh file, buka, dan temukan thumbnail lebar 640 piksel, itu akan memiliki format seperti:
https://i.vimeocdn.com/video/[LONG NUMBER HERE]_640.jpg
Anda mengambil tautan, ubah 640 untuk - misalnya - 1400, dan Anda berakhir dengan sesuatu seperti ini:
https://i.vimeocdn.com/video/[LONG NUMBER HERE]_1400.jpg
Rekatkan di bilah pencarian browser Anda dan nikmatilah.
Bersulang,
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);
});
}
}
Sebenarnya pria yang menanyakan pertanyaan itu memposting jawabannya sendiri.
"Vimeo sepertinya ingin aku membuat permintaan HTTP, dan mengekstrak URL thumbnail dari XML yang mereka kembalikan ..."
Dokumen Vimeo API ada di sini: http://vimeo.com/api/docs/simple-api
Singkatnya, aplikasi Anda perlu membuat permintaan GET ke URL seperti berikut ini:
http://vimeo.com/api/v2/video/video_id.output
dan parsing data yang dikembalikan untuk mendapatkan URL thumbnail yang Anda butuhkan, kemudian unduh file di URL itu.
Saya menulis fungsi dalam PHP untuk membiarkan saya melakukan ini, saya harap ini berguna bagi seseorang. Jalur ke thumbnail terdapat di dalam tag tautan di halaman video. Ini sepertinya melakukan trik untuk saya.
$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;
Semoga ini bisa membantu siapa saja.
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;
}`
// pada fungsi di bawah ini, lewati url thumbnail.
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;
}
Menguraikan jawaban Karthikeyan P sehingga dapat digunakan dalam berbagai skenario:
// 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;
};
Dapatkan Id Vimeo dari URL video Vimeo:
var vimeoId = parseVimeoIdFromUrl(vimeoUrl);
Dapatkan URL gambar mini vimeo dari Vimeo Id:
getVimeoThumbUrl(vimeoIds[0])
.done(function(img) {
$('div').append('<img src="' + img + '"/>');
});
UPDATE: Solusi ini berhenti berfungsi pada Desember 2018.
Saya sedang mencari hal yang sama dan sepertinya sebagian besar jawaban di sini sudah usang karena Vimeo API v2 sudah usang.
php 2 ¢ saya:
$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;
dengan di atas Anda akan mendapatkan tautan ke gambar mini default Vimeo.
Jika Anda ingin menggunakan gambar dengan ukuran berbeda, Anda dapat menambahkan sesuatu seperti:
$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';
Jika Anda tidak memerlukan solusi otomatis, Anda dapat menemukan URL thumbnail dengan memasukkan ID vimeo di sini: http://video.depone.eu/
Saya membuat CodePen yang mengambil gambar untuk Anda.
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);
}
});
Jika Anda mencari solusi alternatif dan dapat mengelola akun vimeo ada cara lain, Anda cukup menambahkan setiap video yang ingin Anda tampilkan ke dalam album dan kemudian menggunakan API untuk meminta detail album - itu kemudian menampilkan semua thumbnail dan tautan . Ini tidak ideal tetapi mungkin membantu.
Twitter obrolan dengan @vimeoapi
Anda mungkin ingin melihat permata dari Matt Hooks. https://github.com/matthooks/vimeo
Ini memberikan pembungkus vimeo sederhana untuk api.
Yang Anda perlukan hanyalah menyimpan video_id (dan penyedia jika Anda juga melakukan situs video lainnya)
Anda dapat mengekstrak id video vimeo seperti itu
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
dan jika Anda membutuhkan tabung Anda mungkin menemukan ini berguna
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
Bagi mereka yang masih menginginkan cara untuk mendapatkan thumbnail melalui URL saja, sama seperti Youtube, sebuah aplikasi kecil yang dibuat hanya dengan Vimeo ID.
https://vumbnail.com/358629078.jpg
Cukup sambungkan ID video Anda dan itu akan menariknya dan menyimpannya selama 24 jam sehingga berfungsi cepat.
Jika Anda ingin memutar sendiri, Anda dapat melakukannya di sini .
Untuk seseorang seperti saya yang mencoba mencari tahu ini baru-baru ini,
https://i.vimeocdn.com/video/[video_id]_[dimension].webp
bekerja untukku.
(di mana dimension
= 200x150 | 640)