herokuにffmpegを導入した時の話

herokuにffmpegを使ってアップロードした動画ファイルのキャプチャを一緒に上げるようなサービスを作っていました。開発環境では動作確認できたのですが、heroku上で動きませんでした…

その時の対応です。railsで構築しています。

僕はmacを使っているのですが、そもそもmacでbuildしたffmpegはherokuでは動作しません。(そりゃそうだ…)

なのでheroku環境用のffmpegバイナリを用意する必要があります。

1. heroku環境用のffmpegのバイナリを用意する

こちらのサイトで生成方法を紹介しています。

フレクトのHeroku Lab

 

僕の場合はbuildするのも面倒だったので、上記のサイトのバイナリを使わせていただきました。

上記のサイトを辿って行きくとこちらのgithubにたどり着きます。

https://github.com/shunjikonishi/heroku-buildpack-ffmpeg/blob/master/bin/compile#L10

 

ここでffmpeg.tar.gzをダウンロードしました。

そしてこれをアプリケーションディレクトリの”vendor/”以下に展開します。

これをcommitしてherokuにdeployして下さい。

 

2. herokuにpathの設定をする

herokuにffmpegのpathを通します。

‘app-name’のところはご自分のapp nameを入れて下さい。 また、rubyのバージョンも気をつけて下さい。

[dosukoi] % heroku config:set PATH=bin:/app/vendor/ffmpeg/bin:/app/vendor/bundle/ruby/2.1.0/bin:/usr/local/bin:/usr/bin:/bin -a 'app-name'

 

 

[dosukoi] % heroku config:set LD_LIBRARY_PATH=vendor/ffmpeg/lib:/usr/local/lib -a 'app-name'

 

 

3. 動作確認

これで準備完了です。

以下のコマンドで動作確認できます

[dosukoi] % heroku run "ffmpeg -version" --app 'app-name'                                                                                                                                           (git)-[master]
Running ffmpeg -version on 'app-name'... up, run.4429
ffmpeg version git-2013-06-02-5711e4f
built on Jun  2 2013 07:38:40 with gcc 4.4.3 (Ubuntu 4.4.3-4ubuntu5.1)
configuration: --enable-shared --disable-asm --prefix=/app/vendor/ffmpeg
libavutil      52. 34.100 / 52. 34.100
libavcodec     55. 13.100 / 55. 13.100
libavformat    55.  8.102 / 55.  8.102
libavdevice    55.  2.100 / 55.  2.100
libavfilter     3. 74.101 /  3. 74.101
libswscale      2.  3.100 /  2.  3.100
libswresample   0. 17.102 /  0. 17.102

 

以上です