我正在制作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。它仍然不起作用
提前感谢你们所有人给我的任何帮助!
答案 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