この記事は間違ってる
というかスマートじゃない可能性が高いです。
No need to build libav from source if you can use packages from trusty
というわけで普通にaptからinstallしても大丈夫らしい。
以下どうしてもffmpegをビルドして使いたい人向け。
ubuntu環境にessentiaをインストールした時のメモ。
optionalな機能に注意
公式のインストールドキュメントを読むと一部オプショナルで、環境の準備はドキュメント外で自分でやる必要があるのが分かる。
とくにlibavcodec
はサンプルを動かしたり、音声ファイルの出力するためには必須になってくるので、オプショナルといえども入れといたほうが良いことが多い。
libavcodecのインストール
さてこのlibavcodec
だが、apt-getなんかでインストールしようとすると、PICオプション無しでコンパイルされているのかessentia自身のコンパイル時に怒られてしまう。
/usr/bin/ld: /usr/local/lib/libavcodec.a(vc1dsp_mmx.o): 再配置 R_X86_64_PC32 (シンボル `ff_pw_9' に対する) は共有オブジェクト作成時には使用出来ません。 -fPIC を付けて再コンパイルしてください。
というわけで気合でソースからコンパイルすることに。
ffmpegのインストール
libavcodecはffmpegのライブラリなのでffmpegをインストールすれば一緒に入る。もちろんapt経由でインストールしたffmpegではだめ(そもそもubuntu14系ではapt-getでffmpegがインストール出来ない。)なのでffmpegと周辺ライブラリも全部自力でコンパイルする。
幸い先人が通った道なので真似すれば良い。
ただ、essentiaで利用できるようにするには、上記のエントリに一工夫必要になる。
追記 2015/02/26
ffmpegのビルド時に必ず libavresample を有効にして下さい。
libswresampleでもessentiaはサポートしてくれているのですが、あまりテストされていないようで、libavresample使うほうが安定です
./configure 〜 --enable-pic
そもそもpicオプション無しでコンパイルされているのが問題なので、makeするときに-fPICが着くようにconfigureする必要がある。コレをちゃんとやらないと自力でやっても何の意味もないので注意。
各ライブラリのconfigureにかならず--enable-pic
をつけることを忘れずに。
lameの追加configureオプション
特に前述の記事のlameのconfigureは--disable-shared
が付いていてそもそもsoファイルを作ってくれないのでlameだけは以下のように変えて実行する必要がある。
./configure --enable-nasm --enable-pic
ffmpegの追加configureオプション
上述しましたが必ずlibavresampleを有効にしておきましょう
./configure --enable-shared --enable-gpl --enable-version3 --enable-nonfree --enable-postproc --enable-libfaac --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libtheora --enable-libvorbis --enable-libx264 --enable-libxvid --enable-x11grab --enable-libmp3lame --enable-libvpx --enable-pic --enable-avresample
まとめ
- ubuntuでessentiaを入れるためにはffmpegの自力コンパイルが必要
- 共有ライブラリとして使うのでconfigureで
--enable-pic
を指定する - 参考文献のlameのconfigureの--disable-sharedは外す
- ffmpegのlibavresampleは有効にする