您好我已经到处搜索,为我的应用用户找到一个有效的解决方案,将视频从youtube,vimeo和他们的电脑上传到我的导轨网站,因为我没有#nob。但是,正确的方向上的一点会膨胀,欢呼。
答案 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:
<强>代码强>
为了给你一些有用的代码,这是我们在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
中启用附件存储