我有带有这些 gem 的 Rails 3.0.3:
(这种组合非常特殊。一些较新的 gem 不能与其他 gem 一起使用。)
这是我的视频模型:
class Video < Upload
has_attached_file :file, :default_style => :view, :processors => [:ffmpeg],
:url => '/system/:class/:attachment/:id/:style/:basename.:extension',
:path => ':rails_root/public/system/:class/:attachment/:id/:style' \
+ '/:basename.:extension',
:default_url => '/images/en/processing.png',
:styles => {
:mp4video => { :geometry => '520x390', :format => 'mp4',
:convert_options => { :output => { :vcodec => 'libx264',
:vpre => 'ipod640', :b => '250k', :bt => '50k',
:acodec => 'libfaac', :ab => '56k', :ac => 2 } } },
:oggvideo => { :geometry => '520x390', :format => 'ogg',
:convert_options => { :output => { :vcodec => 'libtheora',
:b => '250k', :bt => '50k', :acodec => 'libvorbis',
:ab => '56k', :ac => 2 } } },
:view => { :geometry => '520x390', :format => 'jpg', :time => 1 },
:preview => { :geometry => '160x120', :format => 'jpg', :time => 1 }
}
validates_attachment_content_type :file, :content_type => VIDEOTYPES,
:if => Proc.new { |upload| upload.file.file? }
process_in_background :file
end
创建带有附件的新 Video 对象时,将保存原始对象,但不会进行任何转换。除了返回
Video.last.file.reprocess!
之外,即使调用 true
也不会。 (不确定在这种情况下“真实”是什么意思,因为它不起作用。)我尝试在
Paperclip::options[:command_path]
中硬编码到 ffmpeg 的路径。我什至尝试删除 paperclip-ffmpeg.rb 文件并将其替换为空白文件。真的以为我会通过稍后得到一个异常(exception),相反,我只是再次得到“真实”。感觉就像正在加载 paperclip-ffmpeg.rb 一样,因为
config/application.rb
需要它,但是在尝试生成缩略图或转换视频时没有调用它。谁能帮我这个?提前致谢!
最佳答案
看来我自己解决了这个问题,它是由我做的事情引起的。
我编写了自己的脚本来将文件和数据库从较旧的应用程序导入到 Rails。文件已经就位,但有人我用错误的文件扩展名更新了数据库(在这种情况下,“.jpg”而不是“.MOV”)。
Paperclip 将根据存储在数据库中的文件名,在调用任何处理器之前首先验证原始文件是否存在。事实并非如此,Paperclip 只是什么也没做。一旦我纠正了数据,一切都按预期运行。 (我在使用 FFMPEG 时遇到了问题,但这是一个不同的问题。)
如果我浪费了任何人的时间,我深表歉意。希望这对某人有帮助。
关于ruby-on-rails-3 - Rails 3 : How can I make Paperclip-FFMPEG work?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8045077/