所以我正在尝试使用 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/