使用carrierwave上传到S3时获取mp3持续时间

Pet*_*kou 5 ruby ruby-on-rails amazon-s3 ruby-on-rails-4

我正在编写一个应用程序,它基本上是一个音乐平台。我想通过其元数据获取 mp3 的持续时间并将其保存在表格中,然后再将其上传到 S3。

我正在使用载波和雾宝石的组合来上传。提取 mp3 元数据以保存到数据库的推荐方法是什么?

ret*_*oat 2

有一个用于此类操作的 gem taglib-ruby

这是一个例子

  def set_duration
    # :duration is an integer
    # t.integer  "duration",                  :default => 0
    TagLib::FileRef.open(file.file.path) do |file|
      update_column(:duration, file.audio_properties.length) unless file.null?
    end
  end 
Run Code Online (Sandbox Code Playgroud)

当然,您将有自己的属性名称,但一般来说应该可以。