5832


現在ローカルPCにはGnuTLSとx264を付けてmakeしたffmpegがインストールされております。

[code]

    % ffmpeg -version
    ffmpeg version 2.5.3 Copyright (c) 2000-2015 the FFmpeg developers
    built on Jan 23 2015 09:43:11 with Apple LLVM version 6.0 (clang-600.0.56) (based on LLVM 3.5svn)
    configuration: --prefix=/Volumes/ffmpeg_gnutls/sw --libdir=/Volumes/ffmpeg_gnutls/sw/lib --enable-gpl --enable-nonfree --enable-libfaac --enable-pthreads --enable-libmp3lame --enable-libvorbis --enable-gnutls --enable-libx264 --pkg-config-flags=--static --disable-shared --enable-static --arch=x86_64
    libavutil      54. 15.100 / 54. 15.100
    libavcodec     56. 13.100 / 56. 13.100
    libavformat    56. 15.102 / 56. 15.102
    libavdevice    56.  3.100 / 56.  3.100
    libavfilter     5.  2.103 /  5.  2.103
    libswscale      3.  1.101 /  3.  1.101
    libswresample   1.  1.100 /  1.  1.100
    libpostproc    53.  3.100 / 53.  3.100
    
[/code]

しかしHeroku上に同じものをインストールさせたいと思った場合  
(同じものでなくても期待する動作ができれば構いませんが)

[code]

    https://github.com/shunjikonishi/heroku-buildpack-ffmpeg
    https://github.com/HYPERHYPER/heroku-buildpack-ffmpeg
    
[/code]

これらのbuildpackを使わせていただくと、libtheoraやlibvorbisは入っておりますがGnuTLSやx264は入っておりません。

普通にherokuにインストールしたところこのような感じです。

[code]

    % heroku run "ffmpeg -version" 
    Running `ffmpeg -version` attached to terminal... up, run.8784
    ffmpeg version 2.5.2 Copyright (c) 2000-2014 the FFmpeg developers
    built on Jan 14 2015 21:42:21 with gcc 4.8 (Ubuntu 4.8.2-19ubuntu1)
    configuration: --enable-libtheora --enable-libvorbis --prefix=/app/vendor/ffmpeg
    libavutil      54. 15.100 / 54. 15.100
    libavcodec     56. 13.100 / 56. 13.100
    libavformat    56. 15.102 / 56. 15.102
    libavdevice    56.  3.100 / 56.  3.100
    libavfilter     5.  2.103 /  5.  2.103
    libswscale      3.  1.101 /  3.  1.101
    libswresample   1.  1.100 /  1.  1.100
    
[/code]

自分がローカルでmakeしたffmpegをtaz.gzに圧縮してネット上にアップロードしてそちらを使うようにしてみたのですが、  
エラーは起きず無事にデプロイは終わるものの `heroku run ffmpeg -version`
で確認してもffmpeg自体がインストールされておりませんでした。

フォルダの構成はbin,include,lib,shareと同じにはなっているのですが、中身はかなり違います。  
他の方はどのようにしてHerokuでffmpegを利用されているのでしょうか？

なお、この質問に至った経緯としましては、ローカルでは問題なく行われていたエンコードが、  
Heroku上だと音声のみで映像の無いmp4ファイルが出来上がってしまうため、  
表題の違いが原因なのではないかと思った次第です。

ここまで読んでいただきありがとうございます。

* * *

（2/3追記）  
ありがとうございます。

> 「ローカルの ffmpeg をネット上に」をもう少し詳しく書いてください。  
>  ①ローカルの OSX で作った ffmpeg ですか？ Linux 環境で作った ffmpeg ですか？

ローカルのOSXで作ったffmpegです。

作り方はほぼ @riocampos さんが書いてくださった

[GnuTLSライブラリを使ったスタティックなFFmpegの作り方＠Mac - 別館
子子子子子子（ねこのここねこ）](http://d.hatena.ne.jp/riocampos+tech/20141013/how_to_install_static_ffmpeg_with_gnutls_on_os_x)  
の通りです。  
ほぼと書いたのは、これにlibx264を加えているからです。

[code]

    http://download.videolan.org/x264/snapshots/
    
[/code]

の  
`last_stable_x264.tar.bz2`  
です。  
それ以外は全く同じ方法で作りました。

最終的なmakeコマンドは

[code]

    % ./configure --prefix=${TARGET} --libdir=${TARGET}/lib --enable-gpl --enable-nonfree --enable-libfaac --enable-pthreads --enable-libmp3lame --enable-libvorbis --enable-gnutls --enable-libx264 --pkg-config-flags=--static --disable-shared --enable-static --arch=x86_64 && make -j 4 && make install
    
[/code]

となります。

> ②ネットとは？ heroku 以外ですよね？

はい、S3です。  
DLは問題なく行えます。  
heroku push時にエラーメッセージや警告もありません。

* * *

（2/4追記）  
ありがとうございます、Vulcan、Anvilは可能性ありそうですね。  
使ってみましたが、今の所私ではうまくいきませんでした。

VPSでやるべきか、それとも  
Ubuntuでmakeすればいけるのか？などとも考えておりました。

GnuTLS、OpenSSLが使えるものが中々見当たらないのですが、  
x264だけならbuildpackがいくつかあるようです。  
buildpackのforkの中に、素晴らしいものがありました。

[code]

    https://github.com/markaschneider/heroku-buildpack-ruby-ffmpeg-sox
    
[/code]

このbuildpackを使わさせていただいた結果が、以下になります

[code]

    % heroku run "ffmpeg -version"
    Running `ffmpeg -version` attached to terminal... up, run.3469
    ffmpeg version N-51358-ge234daa
    built on Mar 28 2013 05:11:41 with gcc 4.6 (Debian 4.6.3-1)
    configuration: --prefix=/root/ffmpeg-static/32bit --arch=x86_32 --extra-cflags='-m32 -I/root/ffmpeg-static/32bit/include -static' --extra-ldflags='-m32 -L/root/ffmpeg-static/32bit/lib -static' --extra-libs='-lxml2 -lexpat -lfreetype' --enable-static --disable-shared --disable-ffserver --disable-doc --enable-bzlib --enable-zlib --enable-postproc --enable-runtime-cpudetect --enable-libx264 --enable-gpl --enable-libtheora --enable-libvorbis --enable-libmp3lame --enable-gray --enable-libass --enable-libfreetype --enable-libopenjpeg --enable-libspeex --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-version3 --enable-libvpx
    libavutil      52. 22.101 / 52. 22.101
    libavcodec     55.  2.100 / 55.  2.100
    libavformat    55.  0.100 / 55.  0.100
    libavdevice    55.  0.100 / 55.  0.100
    libavfilter     3. 48.105 /  3. 48.105
    libswscale      2.  2.100 /  2.  2.100
    libswresample   0. 17.102 /  0. 17.102
    libpostproc    52.  2.100 / 52.  2.100
    
[/code]

--enable-libx264が入っています。このffmpegを用いて動画と音声も問題なくエンコードされました。  
短期間で答えが出る保証がありませんので一旦返答させていただきます。  
よりよい回答がありましたらまた加筆いたします。


CC BY-SA 3.0
2015-02-02T05:12:31.850
5748
2015-02-04T12:56:26.770
2015-02-04T12:56:26.770
7668
7668
question
ffmpeg heroku
HerokuにGnuTLSやx264などを付加したffmpegをインストールしたい


heroku は Mac で動作しているわけではないので、ローカルで作成された ffmpeg バイナリは動かないはずです。

で、 heroku で動作するバイナリを作る方法を検索してみたところ、

  * [Herokuにバイナリを組み込むbuildpackを作成する - フレクトのHeroku Lab](http://blog.flect.co.jp/labo/2013/06/herokubuildpack-c488.html)

という記事が見つかりました。しかも ffmpeg のビルドをしています。  
概要としては

  * Vulcan という heroku 上で動くビルドサーバを使う
  * heroku でビルドする
  * できたバイナリをどこかへ置く

となるようです。

気になるのは、

> Vulcan [DEPRECATED]  
>  A build server in the cloud.  
>  NOTE: The Vulcan build service is no longer maintained or supported, and
> it's no longer recommended for building binaries. Use heroku run instead.

  * [heroku/vulcan/README.md](https://github.com/heroku/vulcan)

と書いてあったことです。つまり、もう古い、と。

Vulcan 以外のビルド手段としては

  * [heroku-anvil](https://github.com/ddollar/heroku-anvil)

というのがあるようです。中で [Anvil](https://github.com/ddollar/anvil) というビルドサーバが動作しており、
`heroku build` というコマンドでビルドができるようになる、みたいです。

いずれにせよ、 GnuTLS と x264 とを組み込むには、やはりそれぞれのライブラリを heroku
上でコンパイルする必要があると思うのですが、そのやり方までは分からないです。

もし上手く行けば、私も知りたいので、追記をお願いします（人任せで申し訳ないです）。


CC BY-SA 3.0
2015-02-03T06:21:10.907
5832
2015-02-03T06:21:10.907
4114
5748
answer