首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Paperclip在Ruby on Rails(5)中创建自定义音频文件处理器

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

Stack Overflow用户
提问于 2016-11-11 19:51:02
回答 1查看 342关注 0票数 2

因此,我正在尝试使用Paperclip自定义处理器和FMPEG.将mp3文件转换为.flac。以下代码运行ffmpeg命令并创建一个临时flac文件。但是,它是不是保存了?当前仅保存原始文件。这里我漏掉了什么?

代码语言:javascript
复制
class AudioFile < ApplicationRecord
  has_attached_file :raw_audio, processors: [:custom], styles: { original: {}}

自定义处理器

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

发布于 2017-07-18 04:58:34

遇到了完全相同的问题。

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

代码语言:javascript
复制
`ffmpeg -i <original_file_path.mp3> <new_file_path.flac>`

您还可以做其他各种事情(对于Google Speech API,也需要这样做)。

例如,如果你有一个立体声格式的mp3文件,你需要

压缩为单声道:

代码语言:javascript
复制
`ffmpeg -i file.mp3 -ac 1 file_mono.flac`

或者拆分通道:

代码语言:javascript
复制
`ffmpeg -i file.mp3 -map_channel 0.0.0 left_file.flac -map_channel 0.0.1 right_file.flac`

否则API不会接受它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40547429

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档