Railsの画像アップロードライブラリとして有名な carrierwave は,音声ファイルでもアップロードできる.
設定方法は画像と同じ
Gemfile
gem 'carrierwave'
アップローダーを生成.
$ bundle exec rails g uploader AudioFile
file
カラムにアップローダーを適用.
app/models/audio.rb
class Audio < ApplicationRecord
mount_uploader :file, AudioFileUploader
validates :title, presence: true
validates :file, presence: true
end
ファイル形式を変換 (.mp3)
.mp3
に変換したい場合は,carrierwave-audio が使える.
app/uploader/audio_file_uploader.rb
class AudioFileUploader < CarrierWave::Uploader::Base
# 追記
include CarrierWave::Audio
# 追記
version :mp3 do
process :convert => [{output_format: :mp3}]
def full_filename(for_file)
"#{super.chomp(File.extname(super))}.mp3"
end
end
end
audio = Audio.find(1)
audio.file.mp3.url # /uploads/audio/file/1/sample1.mp3
ファイル形式を変換 (.wav)
上記ライブラリは .mp3
のみ対応だったので,forkで.wav変換を実装した.
Gemfile
gem 'carrierwave-audio', git: 'git@github.com:tanakaworld/carrierwave-audio.git'
app/uploader/audio_file_uploader.rb
class AudioFileUploader < CarrierWave::Uploader::Base
# 追記
version :wav do
process :convert => [{output_format: :wav}]
def full_filename(for_file)
"#{super.chomp(File.extname(super))}.wav"
end
end
end
audio = Audio.find(1)
audio.file.wav.url # /uploads/audio/file/1/sample1.wav