【问题标题】:CarrierWave didn't save version with custom processorCarrierWave 未使用自定义处理器保存版本
【发布时间】:2013-03-28 16:50:19
【问题描述】:

我有带有 CarrierWave 上传器的模型:

# app/models/video.rb

class Video < ActiveRecord::Base

  mount_uploader :the_video, VideoUploader

end

上传器如下所示:

# app/uploaders/video_uploader.rb

class VideoUploader < CarrierWave::Uploader::Base
  include CarrierWave::FLV

  storage :file

  def move_to_cache
    true
  end

  def move_to_store
    true
  end

  def store_dir
    "uploads/#{model.class.to_s.underscore}/#{model.id}"
  end

  def extension_white_list
    %w(avi mp4 mpg flv)
  end

  version :flv do
    process :put_to => 'flv'
  end

end

还有最有趣的部分——自定义处理器:

# lib/carrier_wave/flv.rb

require 'streamio-ffmpeg'

module CarrierWave
  module FLV
    extend ActiveSupport::Concern

    module ClassMethods
      def put_to(format)
        process :put_to => format
      end
    end

    def put_to(format = 'flv')
      directory = File.dirname(current_path)
      tmp_path  = File.join(directory, "tmpfile")

      File.rename current_path, tmp_path

      file = ::FFMPEG::Movie.new(tmp_path)
      file.transcode(current_path, {audio_codec: 'copy', video_codec: 'copy'})

      File.delete tmp_path
    end

  end
end

我要做的下一步:

irb(main):005:0> v = Video.new
irb(main):005:0> v.the_video = File.open('/path/to/video.mp4')
irb(main):005:0> v.save
irb(main):005:0> v.the_video.size
=> 0
irb(main):005:0> v.the_video.flv.size
=> 0

为什么 CarrierWave 没有保存原始版本和 flv 版本?

还有一件事,当我在 video_uploader.rb 中评论版本块时 - 一切正常。

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-3 carrierwave


    【解决方案1】:

    我认为version 块不会起作用,因为转换视频不像转换图像那么容易。您需要解决用于进行该转换的不同类型的编解码器。

    如果您真的想修改/操作视频,请查看此链接它描述了一个名为:zencoder

    的 gem

    http://www.nickdesteffen.com/blog/video-encoding-with-uploadify-carrierwave-and-zencoder

    希望对你有帮助。

    【讨论】:

    • 我的问题不在于转换部分。例如,如果我们删除 put_to 方法的内容,它将无法按预期工作。
    • 是的,在这种情况下原始文件没有保存:( video.rb 中的版本块默默地破坏了原始文件的保存。
    猜你喜欢
    • 2012-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多