因此,我正在尝试使用Paperclip自定义处理器和FMPEG.将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发布于 2017-07-18 04:58:34
遇到了完全相同的问题。
你可以直接使用ffmpeg (注意反引号)
`ffmpeg -i <original_file_path.mp3> <new_file_path.flac>`您还可以做其他各种事情(对于Google Speech API,也需要这样做)。
例如,如果你有一个立体声格式的mp3文件,你需要
压缩为单声道:
`ffmpeg -i file.mp3 -ac 1 file_mono.flac`或者拆分通道:
`ffmpeg -i file.mp3 -map_channel 0.0.0 left_file.flac -map_channel 0.0.1 right_file.flac`否则API不会接受它。
https://stackoverflow.com/questions/40547429
复制相似问题