3

我已在我的网站中嵌入了 youtube 和 vimeo 链接,并尝试将视频的缩略图显示为点击时播放的链接。

我尝试了 gem“has_vimeo_video”,但它只接受 vimeo 视频。所以我想显示两个视频的缩略图,即 youtube 和 vimeo。

请需要解决方案。

谢谢

4

4 回答 4

4

video_info gem 非常适合获取缩略图:

https://github.com/thibaudgg/video_info

于 2013-09-27T21:16:26.640 回答
2

我昨天发现有很酷的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

于 2013-07-02T15:40:10.033 回答
1

在“/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')。它将返回给定视频的缩略图。

于 2020-05-19T15:15:41.947 回答
0

您不需要任何宝石来完成如此简单的任务

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
于 2019-05-14T11:45:46.863 回答