Rails视频上传

Spe*_*ire 3 ruby-on-rails paperclip

我一直在寻找有关rails和视频的不同上传选项,Paperclip看起来相当不错,但是有没有其他人会推荐,它应该有很好的教程和文档,因为我无法找到任何涉及上传的好的回形针文档视频内容.

Ric*_*eck 18

我们让Paperclip暂时处理视频


系统

无论您使用CarrierWave还是Paperclip(Rails的两个主要"附件"处理程序),您都会有同样的歧义

任何上传系统只处理您的PC,Rails应用程序和数据库之间的文件数据传输.他们每个人(根据我的理解).EG Paperclip仅从ActiveRecord您的文件创建对象,将数据保存到服务器的public目录并在数据库中创建记录


视频的问题是使用正确的处理器而不是正确的上传器:

#app/models/attachment.rb
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 ] }
Run Code Online (Sandbox Code Playgroud)

额外

您需要为Paperclip使用ffmpeg等视频处理器:

#GemFile
gem "paperclip-ffmpeg", "~> 1.0.1"
Run Code Online (Sandbox Code Playgroud)

您可能必须在系统上安装ffmpeg以使处理器在本地工作(Heroku有ffmpeg).这将允许您使用video_tag帮助程序:

<%= video_tag(@model.attachment.url) %>
Run Code Online (Sandbox Code Playgroud)

有一个很好的教程,关于在这里使用带有Paperclip的ffmpeg另一个教程

  • Paperclip的Gem ffmpeg已弃用.同样用途的新宝石:https://github.com/ruby-av/paperclip-av-transcoder (4认同)