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

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

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

这样的操作有一个gemtaglib-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 

当然你会拥有自己的attr名称,但一般来说应该有效。