视频上传与轨道4

时间:2014-03-11 09:11:24

标签: ruby-on-rails

您好我已经到处搜索,为我的应用用户找到一个有效的解决方案,将视频从youtube,vimeo和他们的电脑上传到我的导轨网站,因为我没有#nob。但是,正确的方向上的一点会膨胀,欢呼。

2 个答案:

答案 0 :(得分:5)

对于上传视频的人,您应该从播放器向后工作:例如,如果您希望人们在iPad / iPhone上查看它们,那么您应该使用mp4作为标准格式,然后他们可以在这些平台上使用原生视频播放器。对于普通计算机用户来说,有很多免费的基于JavaScript的mp4播放器,有谷歌和尝试一对。

因此,下一个问题是“如何将视频转换为mp4格式”(假设您不希望在上传之前强制所有用户转换为mp4)。我建议使用Handbrake CLI,或者ffmpeg。转换是一个缓慢的过程,因此您不希望Web请求等待它:您需要保存上传的文件,然后A)启动后台作业,例如Resque转换它,或者有一个预定的转换脚本,每小时运行一次(例如),查找未转换的视频,将它们转换为mp4,并将结果保存在“公共”文件夹中的适当位置。

要处理文件上传,您可以使用Paperclip之类的东西 - 这将为您提供所有的部分内容,以便轻松处理文件上传并保存到您的文件系统。

对于实际想要上传YouTube视频的用户,您可以在上面进行更简单(但是单独)的任务。您需要保存的只是youtube网址(实际上只是youtube id,即youtube上保存在“v”参数中的数字字符串),然后您可以使用标准的youtube嵌入iframe来显示视频你的网站。

答案 1 :(得分:1)

由于here

,视频上传(您可以看到演示Paperclip gem)在Rails上相对简单

这是关于如何使用它的great Railscast

enter image description here


<强>代码

为了给你一些有用的代码,这是我们在HPVideos应用程序中使用的代码:

#GemFile
gem 'paperclip-ffmpeg', '~> 1.0.0'

#app/models/attachment.rb
Class Attachment < ActiveRecord::Base
    has_attached_file :attachment,
          styles: lambda { |a| a.instance.is_image? ? {:small => "x200>", :medium => "x300>", :large => "x400>"}  : {:thumb => { :geometry => "100x100#", :format => 'jpg', :time => 10}, :medium => { :geometry => "300x300#", :format => 'jpg', :time => 10}}},
          :processors => lambda { |a| a.is_video? ? [ :ffmpeg ] : [ :thumbnail ] }
    validates_attachment_content_type :video, content_type: /\Avideo\/.*\Z/ 
end

#app/controllers/attachments_controller.rb
Class Attachment < ActionController::Base
   def new
       @attachment = Attachment.new
   end

   def create
       @attachment = Attachment.new(attachment_params)
       @attachment.save
   end

   private
   def attachment_params
       params.require(:attachment).permit(:attachment)
   end
end 

这样您就可以将视频上传到自己的应用中了。请记住执行ActiveRecord迁移以在db

中启用附件存储