我已在我的网站中嵌入了 youtube 和 vimeo 链接,并尝试将视频的缩略图显示为点击时播放的链接。
我尝试了 gem“has_vimeo_video”,但它只接受 vimeo 视频。所以我想显示两个视频的缩略图,即 youtube 和 vimeo。
请需要解决方案。
谢谢
我已在我的网站中嵌入了 youtube 和 vimeo 链接,并尝试将视频的缩略图显示为点击时播放的链接。
我尝试了 gem“has_vimeo_video”,但它只接受 vimeo 视频。所以我想显示两个视频的缩略图,即 youtube 和 vimeo。
请需要解决方案。
谢谢
video_info gem 非常适合获取缩略图:
我昨天发现有很酷的carrierwave-video-thumbnailer 。它基本上可以满足您的需求
Carrierwave 的缩略图插件。它混合到您的上传器设置中,并可以轻松地为您上传的视频制作缩略图。这个软件现在是一个相当大的 alpha 版本,所以欢迎任何类型的开源合作。
但是您当然需要在您的应用程序中包含载波。希望这会有所帮助
Carreierwave 是一个上传器,它使用户能够在他们的应用程序中上传内容,我认为
更新
或者,您可以使用embedly,它允许您将嵌入式媒体添加到您的应用程序中。API 提供了很多响应选项,如这里所示。在这样做时,您可以执行以下操作:
$.embedly('http://www.youtube.com/watch?v=_FE194VN6c4',
{maxWidth: 600,
elems: $('#element'),
success: function(oembed, dict){
alert(oembed.title);
});
elems 属性是您希望嵌入视频的位置,以便在粘贴链接时应该嵌入视频。您需要传递视频 url 并使用 jQuery 选择器从您将 url 放在 html 中的任何位置获取它。
您的另一种选择是查看以下auto_html gem
在“/app/helper”中添加一个新文件“thumbnail_helper.rb”。将以下代码复制并粘贴到该文件中:
module ThumbnailHelper
# Regex to find YouTube's and Vimeo's video ID
YOUTUBE_REGEX = %r(^(http[s]*:\/\/)?(www.)?(youtube.com|youtu.be)\/(watch\?v=){0,1}([a-zA-Z0-9_-]{11}))
VIMEO_REGEX = %r(^https?:\/\/(?:.*?)\.?(vimeo)\.com\/(\d+).*$)
# Finds YouTube's video ID from given URL or [nil] if URL is invalid
# The video ID matches the RegEx \[a-zA-Z0-9_-]{11}\
def find_youtube_id url
url = sanitize url
matches = YOUTUBE_REGEX.match url.to_str
if matches
matches[6] || matches[5]
end
end
# Finds youtube video thumbnail
def get_youtube_thumbnail url
youtube_id = find_youtube_id url
result = "http://img.youtube.com/vi/#{youtube_id}/0.jpg"
end
# Finds Vimeo's video ID from given URL or [nil] if URL is invalid
def find_vimeo_id url
url = sanitize url
matches = VIMEO_REGEX.match url.to_str
matches[2] if matches
end
# Finds vimeo video thumbnail
def get_vimeo_thumbnail url
vimeo_id = find_vimeo_id url
result = URI.open("http://vimeo.com/api/v2/video/#{vimeo_id}.json").read
begin
JSON.parse(result).first['thumbnail_large']
rescue StandardError
nil
end
end
# Main function
# Return a video thumbnail
# If the url provided is not a valid YouTube or Vimeo url it returns [nil]
def get_video_thumbnail(url)
if find_vimeo_id(url)
get_vimeo_thumbnail(url)
elsif find_youtube_id(url)
get_youtube_thumbnail(url)
end
end
end
现在从您的视图中调用 get_video_thumbnail('video_url')。它将返回给定视频的缩略图。
您不需要任何宝石来完成如此简单的任务
url = 'https://vimeo.com/126100721'
id = url.partition('vimeo.com/').last
result = URI.open("http://vimeo.com/api/v2/video/#{id}.json").read
begin
JSON.parse(result).first['thumbnail_large']
rescue StandardError
nil
end