ruby-on-rails - 如何使用 Paperclip 在 Ruby on Rails(5) 中为音频文件创建自定义处理器

标签 ruby-on-rails ffmpeg paperclip

所以我正在尝试使用 Paperclip 自定义处理器和 ffmpeg 将 mp3 文件转换为 .flac。以下代码运行 ffmpeg 命令并创建一个临时 flac 文件。然而,这不是得救了吗?目前只保存原始文件。我在这里想念什么?

class AudioFile < ApplicationRecord
  has_attached_file :raw_audio, processors: [:custom], styles: { original: {}}

定制处理器
module Paperclip
 class Custom < Processor

  def initialize(file, options = {}, attachment = nil)
    super
    @file = file
    @basename = File.basename(@file.path)
    @format = options[:format] || 'flac'
    @params = options[:params] || '-y -i' 
  end

  def make
    source = @file
    output = Tempfile.new([@basename, ".#{@format}"])
    begin
      parameters = [@params, ':source',':dest'].join(' ')
      Paperclip.run('ffmpeg', parameters, :source => File.expand_path(source.path), :dest => File.expand_path(output.path), :sample_rate => @sample_rate, :bit_rate => @bit_rate)
    end
   output
  end

 end
end

最佳答案

遇到完全相同的问题。

您可以直接使用 ffmpeg(注意反引号)

`ffmpeg -i <original_file_path.mp3> <new_file_path.flac>`

您还可以做很多其他事情(在 Google Speech API 的情况下需要做)。

例如如果您有立体声 mp3 文件,您将需要

压缩成单声道:
`ffmpeg -i file.mp3 -ac 1 file_mono.flac`

或拆分 channel :
`ffmpeg -i file.mp3 -map_channel 0.0.0 left_file.flac -map_channel 0.0.1 right_file.flac`

否则 API 将不接受它。

关于ruby-on-rails - 如何使用 Paperclip 在 Ruby on Rails(5) 中为音频文件创建自定义处理器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40547429/

相关文章:

ruby-on-rails - 启动瘦服务器时加载 bootstrap-sass 时出现问题,rails

ruby-on-rails - JSON 请求的强参数

winapi - 如何在win32窗口中播放H.264视频?

php - 如何使用 ffmpeg/php 在按钮单击时将 mp4 文件转换为 mp3?

ruby-on-rails - Ruby on Rails 功能未按预期工作

ruby-on-rails - Rails Controller 中的参数数量错误(1 对 2)

linux - ffmpeg 和 grep 无法提取 mean_volume 值

ruby-on-rails - NoMethodError(私有(private)方法 `gets' 调用 #<Paperclip::UploadedFileAdapter:0xdbc7624>)

ruby-on-rails - 使用 Paperclip/Fog 将文件保存到 RackSpace CloudFiles 时,连接到奇数 IP 地址时会发生超时

ruby-on-rails - Rails 使用嵌套表单和回形针 gem 不允许的参数