使用paperclip-av-transcoder进行回形针视频附件错误

时间:2016-04-28 13:30:39

标签: ruby-on-rails ruby ruby-on-rails-4 rubygems paperclip

我正在制作Ruby on Rails应用程序,并试图允许通过应用程序上传视频文件。

我正在使用paperclip gem来处理文件的附件,paperclip-av-transcoder gem(如建议的那样)来处理转码。我也安装了aws-sdk gem,但目前这是无关紧要的,因为我甚至无法上传到我的本地系统上工作。

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

当我运行本地服务器时,我会转到我的视频#new page并填写表格,附上文件: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

我也觉得它可能与我的宝石有关,这是我的宝石文件:

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

我已经尝试过只使用简单的'paperclip'宝石,没有引用git。它仍然不起作用

提前感谢你们所有人给我的任何帮助!

1 个答案:

答案 0 :(得分:0)

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

表示您没有安装ffmpeg。 paperclip-av使用此库对您的视频进行转码。 如果您使用 macOS ,请转到您的终端并安装它(我正在使用homebrew):

brew install ffmpeg

-

在部署到远程服务器(例如Heroku)时,您可能会遇到同样的问题......如果是这种情况,那么您必须使用buildpacks添加ffmepg。请务必阅读如何执行此操作in the Heroku Devcenter