Rubyでオーディオファイルを扱うGemはたくさんありますが、今回はmp3とwavの両方を扱う必要があったのでtaglib-rubyを使うことにしました。
ひとつのGemでmp3とwavの両方を使えるのは大変ありがたいです。
最後にHerokuにデプロイする方法とConoHa VPS (CentOS 7.7)にデプロイする方法も記載します。
ひとつのGemでmp3とwavの両方を使えるのは大変ありがたいです。
最後にHerokuにデプロイする方法とConoHa VPS (CentOS 7.7)にデプロイする方法も記載します。
インストール
まずはtaglibをインストールします。ターミナルで以下を実行します。
$ brew install taglib
HomeBrew以外でもインストールできます。詳しくは公式サイトを参照してください。
続いてGemfileにGemを追加し、bundle installします。
続いてGemfileにGemを追加し、bundle installします。
... gem 'taglib-ruby'
オーディオファイルの長さを取得する
オーディオファイルはViewから渡されてくることとします。
def create ... # .path をつけるのを忘れずに! length = get_length(params[:file].path) ... end private def get_length(file_path) require 'taglib' TagLib::FileRef.open(file_path) do |file| unless file.nil? properties = file.audio_properties # 秒数→分秒(00:00)の形式に変換 length = Time.at(properties.length).utc.strftime('%M:%S') end end end
Herokuへのデプロイ
Herokuにログインし、対象アプリのダッシュボードを表示します。
Settingsメニューを表示し、Buildpacksで以下のビルドパックを追加します。
Settingsメニューを表示し、Buildpacksで以下のビルドパックを追加します。
https://github.com/mrrad/heroku-buildpack-taglib
追加したビルドパックの左にある「≡」をドラッグして一番上に移動します。
ここまで完了したらいつもどおりプッシュします。
ここまで完了したらいつもどおりプッシュします。
$ git push heroku master
ConoHa VPS (CentOS 7.7)へのデプロイ
yumを使ってtaglibをインストールします。
$ sudo yum install taglib-devel
また、ConoHa VPS (CentOS 7.7)にはC++コンパイラも入っていないのでインストールします。
$ sudo yum -y install gcc-c++