taglib-rubyを使用してオーディオファイルの長さを取得する方法

2019年11月28日 14:52
    Rubyでオーディオファイルを扱うGemはたくさんありますが、今回はmp3とwavの両方を扱う必要があったのでtaglib-rubyを使うことにしました。
    ひとつのGemでmp3とwavの両方を使えるのは大変ありがたいです。
    最後にHerokuにデプロイする方法とConoHa VPS (CentOS 7.7)にデプロイする方法も記載します。

    インストール

    まずはtaglibをインストールします。ターミナルで以下を実行します。
    $ brew install taglib
    HomeBrew以外でもインストールできます。詳しくは公式サイトを参照してください。

    続いて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で以下のビルドパックを追加します。
    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++

    関連記事

    関連記事はありません。