2016-04-28 26 views
3

我正在制作Ruby on Rails应用程序,并试图允许通过应用程序上传视频文件。使用paperclip-av-transcoder的回形针视频附件错误

我使用paperclip gem来处理文件,paperclip-av-transcoder gem(如建议)处理转码的附件。我还安装了aws-sdk gem,但目前这并不相关,因为我甚至无法在本地系统上运行上传。

我已经按照所有说明准备应用程序来处理视频上传:我安装了必要的宝石,为视频模型创建了实际的回形针(我命名回形针“电影”),进行迁移,并将该关联添加到我的视频模型本身。我还将视频控制器参数中的film属性列入了白名单,并且在我的新视频表单中有正确的字段:film。

当我运行我的本地服务器时,我会转到我的视频#新页面并填写表单,将文件附加到:film并提交表单。它需要大约10秒,直到它加载以下错误:

Av::UnableToDetect in VideosController#create 
Unable to detect any supported library 

Extracted source (around line #10): 
    @video = Video.new(video_params) 

我不知道这里发生了什么。当我看到其他人有完全相同的错误消息“无法检测到任何支持的库”的人时,他们总是忘记运行回形针迁移或类似的东西。我已经遵循了所有必要的步骤。

这里是我的:电影中我Video.rb模型相关的代码

has_attached_file :film, styles: { 
    :medium => { 
     :geometry => "640x480", 
     :format => 'mp4' 
    }, 
    :thumb => { :geometry => "160x120", :format => 'jpeg', :time => 10} 
}, :processors => [:transcoder] 
validates_attachment_content_type :film, content_type: /\Avideo\/.*\Z/ 

,这里是我的坚强参数在我videos_controller

def video_params 
    params.require(:video).permit(:title, :description, :film, :preview_image, 
          award_attributes: [:id, :title, :body, :award_image]) 
end 

这里是相关数据库架构,我的视频模式。预览图像是一个独立的回形针(它是一个图像),我已经有几个星期了,它工作得很好。

create_table "videos", force: :cascade do |t| 
    t.string "title" 
    t.string "description" 
    t.datetime "created_at",     null: false 
    t.datetime "updated_at",     null: false 
    t.string "preview_image_file_name" 
    t.string "preview_image_content_type" 
    t.integer "preview_image_file_size" 
    t.datetime "preview_image_updated_at" 
    t.string "film_file_name" 
    t.string "film_content_type" 
    t.integer "film_file_size" 
    t.datetime "film_updated_at" 
    end 

我也有一种感觉,它可能是与我的宝石,这是我的Gemfile:

gem 'paperclip', :git=> 'https://github.com/thoughtbot/paperclip', :ref => '523bd46c768226893f23889079a7aa9c73b57d68' 
gem 'aws-sdk' 
gem 'paperclip-av-transcoder' 

我已经只用简单的试了一下“曲别针”的宝石,用没有参考git。它仍然不起作用

在此先感谢您为我提供的任何帮助!

回答

0
Av::UnableToDetect in VideosController#create 
Unable to detect any supported library 

表示您没有安装ffmpeg。这个库被paperclip-av用来转码你的视频。 如果你在MACOS,去你的终端,并安装它(我使用homebrew):

brew install ffmpeg 

-

机会是部署到时候你会遇到同样的问题远程服务器,如Heroku ...如果是这样的话,那么你必须使用buildpack来添加ffmepg。请务必阅读如何操作in the Heroku Devcenter