如何使用carrierwave在ffmpeg处理后将文件保存到s3

时间:2013-09-23 07:18:09

标签: ruby-on-rails-3 amazon-s3 ffmpeg carrierwave

我试图在上传到S3之前转换Mp3文件的比特率,我可以为mp3文件创建版本,但版本不保存在s3而不是原始文件上传到s3。

  version :bitrate_96k do
    process :resample => "96"
  end

def resample(bitrate)
    tmp_path   = File.join( File.basename(current_path), "tmpfile" )
    File.rename current_path, tmp_path
    audio_details  = `ffmpeg -i '#{tmp_path}' 2>&1`.split(",").split("\n").flatten
    file_bitrate =  audio_details.grep(/bitrate/).grep(/bitrate/).join.split("bitrate: ").last.split("\s").first
    unless file_bitrate == bitrate
      `ffmpeg -i #{tmp_path.shellescape}  -acodec libmp3lame -y -ab 96k #{current_path.path}`
      File.unlink(current_path)
     FileUtils.mv(temp_path, current_path)
    end
  end

1 个答案:

答案 0 :(得分:0)

单步浏览resample,看起来你是File.unlink 96k输出而不是输入,然后你将未转换的tmp_file复制回current_path。尝试更改:

  File.unlink(current_path)
  FileUtils.mv(tmp_path, current_path)

  File.unlink(tmp_path)
else
  FileUtils.mv(tmp_path, current_path)