Vimeo'dan videolar için küçük resim almak istiyorum.
Youtube'dan görüntü alırken sadece şunu yapıyorum:
http://img.youtube.com/vi/HwP5NG-3e8I/2.jpg
Vimeo için nasıl yapılacağına dair bir fikrin var mı?
Vimeo'dan videolar için küçük resim almak istiyorum.
Youtube'dan görüntü alırken sadece şunu yapıyorum:
http://img.youtube.com/vi/HwP5NG-3e8I/2.jpg
Vimeo için nasıl yapılacağına dair bir fikrin var mı?
Yanıtlar:
Gönderen Vimeo Basit API docs :
Video İsteğinde Bulunma
Belirli bir video hakkında veri almak için aşağıdaki URL'yi kullanın:
http://vimeo.com/api/v2/video/video_id.output
video_id Bilgi almak istediğiniz videonun kimliği.
output Çıktı türünü belirleyin. Şu anda JSON, PHP ve XML formatları sunuyoruz.
Bu URL'yi almak 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>
Küçük resmi almak için her video için ayrıştırın
İşte PHP'de yaklaşık kod
<?php
$imgid = 6271487;
$hash = unserialize(file_get_contents("http://vimeo.com/api/v2/video/$imgid.php"));
echo $hash[0]['thumbnail_medium'];
xml
Yine de aşina değilim . Nasıl alabilirim thumbnail_small
ile php
?
thumbnail_large
gelen i.vimeocdn.com/video/23566238_640.webp için i.vimeocdn.com/video/23566238_640.png veya i.vimeocdn.com/video/23566238_320.jpg
Javascript'te (jQuery kullanır):
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);
}
Görüntülemek için:
<img id="vimeo-{{ video.id_video }}" src="" alt="{{ video.title }}" />
<script type="text/javascript">
vimeoLoadingThumb({{ video.id_video }});
</script>
$(id_img).before
ve $(id_img).attr
için createElement
ve daha temel getElementById(id_img).src
, ama senin örneğin olmasaydı hiç got it olmazdı.
Vimeo'nun API'sının yanıtını ayrıştırmalısınız. URL çağrılarıyla (dailymotion veya youtube gibi) bunun bir yolu yoktur.
İşte benim PHP çözümü:
/**
* 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;
}
JQuery jsonp isteğini kullanma:
<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>
- gibi bir şey kullanmak istiyorum ve bu img küçük resim ile dolu olur.
$.getJSON('http://vimeo.com/api/v2/video/' + video_id + '.json?callback=?', function (data) {...
Ruby ile, varsa şunları yapabilirsiniz:
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'
açık dosyaları URI'ların yanı sıra ayrıştırmaya da izin vermeniz gerekebilir .
Aynı şeyi ASP.NET'te C # kullanarak nasıl yapacağınıza bir örnek. Farklı bir hata yakalama resmi kullanmaktan çekinmeyin :)
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";
}
}
NOT: API isteğiniz istendiğinde şu şekilde olmalıdır: 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; } }
Video kimliğini aramadan küçük resmi almak için bulduğum en kolay JavaScript yolu kullanıyor:
//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);
}
});
Not: Birinin video kimliğiyle ilgili video küçük resmini alması gerekiyorsa, video kimliğiyle değiştirebilir $id
ve video ayrıntılarını içeren bir XML alabilir:
http://vimeo.com/api/v2/video/$id.xml
Misal:
http://vimeo.com/api/v2/video/198340486.xml
$id
ve video ayrıntılarını içeren bir XML alacaksınız (küçük resimler dahil). http://vimeo.com/api/v2/video/$id.xml
. örneğin: http://vimeo.com/api/v2/video/198340486.xml
. Kaynak burada: coderwall.com/p/fdrdmg/get-a-thumbnail-from-a-vimeo-video
Saf js / jquery no api aracılığıyla küçük resim kullanmak isterseniz, video ve voila'dan bir kare yakalamak için bu aracı kullanabilirsiniz! İstediğiniz kaynağı URL başlığını ekleyin.
İşte bir kod kalemi:
<img src="https://i.vimeocdn.com/video/531141496_640.jpg"` alt="" />
Küçük resim alacak site:
Vimeo url'sini ( https://player.vimeo.com/video/30572181 ) kullanarak , işte benim örneğim
<!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>
Görünüşe göre api / v2 öldü.
Yeni API'yı kullanabilmek için uygulamanızı kaydettirmeniz ve base64 client_id
ve client_secret
bir Yetkilendirme başlığı olarak kodlamanız gerekir .
$.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);
}
});
Güvenlik için, sunucudan zaten kodlanmış client_id
ve client_secret
şifrelenmiş olarak geri dönebilirsiniz .
Bu, bunu yapmanın hızlı bir kurnaz yolu ve ayrıca özel bir boyut seçmenin bir yoludur.
Buraya gidiyorum:
http://vimeo.com/api/v2/video/[VIDEO ID].php
Dosyayı indirin, açın ve 640 piksel genişliğindeki küçük resmi bulun, şöyle bir biçime sahip olacaktır:
https://i.vimeocdn.com/video/[LONG NUMBER HERE]_640.jpg
Bağlantıyı alırsınız, 640'ı değiştirin - örneğin - 1400 ve bunun gibi bir şeyle sonuçlanırsınız:
https://i.vimeocdn.com/video/[LONG NUMBER HERE]_1400.jpg
Tarayıcı arama çubuğunuza yapıştırın ve keyfini çıkarın.
Alkış,
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);
});
}
}
Aslında bu soruyu soran adam kendi cevabını gönderdi.
"Vimeo bir HTTP isteği yapmamı ve döndürdüğü XML'den küçük resim URL'sini çıkarmamı istiyor gibi görünüyor ..."
Vimeo API dokümanları burada: http://vimeo.com/api/docs/simple-api
Kısacası, uygulamanızın aşağıdaki gibi bir URL'ye GET isteği yapması gerekir:
http://vimeo.com/api/v2/video/video_id.output
ve istediğiniz küçük resim URL'sini almak için döndürülen verileri ayrıştırın, ardından dosyayı bu URL'den indirin.
PHP bunu bana izin bir işlev yazdı, umarım birisi için yararlıdır. Küçük resmin yolu video sayfasındaki bir bağlantı etiketinde bulunur. Bu benim için hile yapıyor gibi görünüyor.
$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;
Umarım herkese yardımcı olur.
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;
}`
// aşağıdaki işlevde küçük resim URL'sini iletin.
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'nin cevabını daha geniş bir dizi senaryoda kullanılabilmesi için ayrıştırmak:
// 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;
};
Bir Vimeo video URL'sinden Vimeo Kimliği alın:
var vimeoId = parseVimeoIdFromUrl(vimeoUrl);
Bir Vimeo Kimliğinden bir vimeo küçük resim URL'si alın:
getVimeoThumbUrl(vimeoIds[0])
.done(function(img) {
$('div').append('<img src="' + img + '"/>');
});
GÜNCELLEME: Bu çözüm Aralık 2018 itibariyle çalışmayı durdurdu.
Aynı şeyi arıyordum ve çoğu cevap burada Vimeo API v2 kullanımdan kaldırıldığı için modası geçmiş gibi görünüyor.
benim 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;
yukarıdaki ile Vimeo varsayılan küçük resim bağlantısını alacaksınız.
Farklı boyutta görüntü kullanmak istiyorsanız, aşağıdakine benzer bir şey ekleyebilirsiniz:
$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';
Otomatik bir çözüme ihtiyacınız yoksa, vimeo kimliğini buraya girerek küçük resim URL'sini bulabilirsiniz: http://video.depone.eu/
Görüntüleri sizin için alan bir CodePen oluşturdum.
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);
}
});
Alternatif bir çözüm arıyorsanız ve vimeo hesabını yönetmenin başka bir yolu varsa, sadece bir albüme göstermek istediğiniz her videoyu ekleyin ve ardından albüm ayrıntılarını istemek için API'yi kullanın - daha sonra tüm küçük resimleri ve bağlantıları gösterir . İdeal değil ama yardımcı olabilir.
API bitiş noktası (oyun alanı)
@Vimeoapi ile Twitter convo
Matt Hooks'tan gemiye bir göz atmak isteyebilirsiniz. https://github.com/matthooks/vimeo
API için basit bir vimeo sarıcı sağlar.
Tek ihtiyacınız olan video_id'i (ve başka video siteleri de kullanıyorsanız sağlayıcıyı) saklamaktır.
Vimeo video kimliğini bu şekilde çıkarabilirsiniz
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
ve eğer tüp gerekiyorsa bu yararlı bulabilirsiniz
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
Küçük resmi yalnızca URL yoluyla almanın bir yolunu isteyenler için, tıpkı Youtube gibi, sadece Vimeo ID ile getiren küçük bir uygulama oluşturdu.
https://vumbnail.com/358629078.jpg
Video kimliğinizi takmanız yeterlidir, çeker ve 24 saat önbelleğe alır, böylece hızlı hizmet eder.
Kendinizinkini çevirmek istiyorsanız, bunu burada yapabilirsiniz .
Son zamanlarda bunu anlamaya çalışan benim gibi biri için,
https://i.vimeocdn.com/video/[video_id]_[dimension].webp
benim için çalışıyor.
(burada dimension
= 200x150 | 640)