2016-11-11 14 views
2

私はMP3ファイルをPaperclipのカスタムプロセッサとffmpegで.flacに変換しようとしています。次のコードは、ffmpegコマンドを実行し、一時的なflacファイルを作成します。しかし、それは保存されていませんか?現在、元のファイルのみが保存されます。私はここで何が欠けていますか?Ruby on Rails(5)でカスタムファイルを作成する方法

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 
+0

「mp3 into .flac」 - 損失性から可逆性に移行しようとする=不可能。いいえ。これは100 x 100ピクセルの画像を1000 x 1000にリサイズするのと同じようになります。 –

+0

これはオーディオの品質よりも拡張に関するものです。私はflacまたは生のオーディオのみを受け入れるGoogleのスピーチAPIを使用しています –

+0

あなたはあなたのPaperclip設定で 'log_command:true'を持っていますか?そうでない場合でも、ログにエラーがないかチェックしてください。 – Eric

答えて

0

は正確に同じ問題に遭遇しました。

あなたは(バッククォートの点に注意してください)

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

あなたが(とGoogle音声APIの場合に必要)することができ、様々な他のものがありますが、直接のffmpegを使用することができます。

`ffmpeg -i file.mp3 -ac 1 file_mono.flac` 

またはチャネルを分割する:あなたはステレオでmp3ファイルを持っている場合は、モノにどちらか

圧縮する必要になるだろう

`ffmpeg -i file.mp3 -map_channel 0.0.0 left_file.flac -map_channel 0.0.1 right_file.flac` 

そうAPIはしません受け入れ。

関連する問題