0

我正在尝试使用 Voyeur gem 将视频从 .mp4 转换为 .webm 然后上传。这是我的代码:app/uploads/video_uploader.rb

class VideoUploader < CarrierWave::Uploader::Base include CarrierWave::VideoConverter def store_dir "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}" end version :mp4 do process :encode_video => [:mp4] def full_filename(for_file) "#{File.basename(for_file, File.extname(for_file))}.mp4" end end version :webm do process :encode_video => [:webm] def full_filename(for_file) "#{File.basename(for_file, File.extname(for_file))}.webm" end end end

video_converter.rb 模块已放置在 /lib/carrierwave/processing/

autoload :VideoConverter, 'carrierwave/processing/video_converter'已添加到 /lib/carrierwave.rb

我的模型:

class Uploader < ActiveRecord::Base require 'Voyeur' attr_accessible :user_id,:attach_file belongs_to :user mount_uploader :attach_file, VideoUploader end

但是我不能上传视频,控制台报错: Errno::ENOENT: No such file or directory - ffmpeg -i /home/------/______/public/uploads/tmp/20121211-0943-7368-8271/tmpfile

有什么建议吗?

我在控制台中使用的最简单的命令:Voyeur::Media.new( filename: path_to_file ).convert( to: :mp4 )仍然失败并出现类似错误。

4

1 回答 1

0

我让这两个宝石一起工作的过程有点不同,也许它会帮助处于相同情况的其他人。

步骤 1.) 按照carrierwave 和voyeur github 上的说明进行操作。

步骤 2.) 安装 ffmpeg 及其依赖项。我在 ubuntu 上执行此操作,并且在我执行安装之前收到错误 no such file or directory

步骤 3.) 该网站较旧,有一些需要更改的地方。

  • 将 video_converter.rb 文件放在目录carrierwave-0.8.0/lib/carrierwave/processing
  • 更改此文件中的第 22 行

    Voyeur::Video.new( filename: tmp_path ).convert( to: format.to_sym, output_filename: current_path )
    

    Voyeur::Media.new( filename: tmp_path ).convert( to: format.to_sym, output_filename: current_path )
    

    将以下行添加到carrierwave-0.8.0/lib/carrierwave/processing.rb

    require "carrierwave/processing/video_converter"
    
  • 在您为 carrierwave 创建的上传器目录中,编辑您的 app/uploaders/avatar_uploader.rb 文件以匹配 video_uploader.rb

希望这可以帮助

于 2013-02-06T22:29:07.350 回答