FFMpegをライセンスに気を付けながら再コンパイルとコーデックのインストール

コーデックのバージョンが上がっているのでFFMpegを再コンパイルしてみた。

環境はCentOS 5.4

今回使用したコーデックは以下

コーデック ライセンス ダウンロード
faac-1.28 LGPL AudioCoding.com
faad2-2.7 GPLv2 AudioCoding.com
lame-3.98.4 LGPL LAME Project
opencore-amr-0.1.2 Apache License V2.0 Opencore-amr
x264 GPLv2 VideoLAN

コーデックのコンパイルは前の記事を参考に。x264はこっち

最初は前と同じようにAMR-NBとAMR-WBを使おうとしたけど、FFMpegのConfigureオプションから無くなっている(これらを使うとライセンス的に再配布できない)。代わりに

--enable-libopencore-amrnb
--enable-libopencore-amrwb

を使う。freeのopencore-amrを使うようになったらしい。これを指定してconfigureすると、

libopencore_amrnb is version3 and --enable-version3 is not specified.

と怒られる。

ここで気づいた。GPLv2Apache License V2.0は共存できないらしい(GPLv3は共存できる)。詳細はこちら

どうやらopencore-amrがApache License V2.0なため、わざわざffmpegのconfigureオプションで指定するようにしたらしい。

コンパイルしたFFMpegをGPLv3として使用するためにはGPLv2 onlyのライブラリを含んではダメらしい。詳細はGPLのホームページで(英語)。

GPLv2のライブラリがonlyなのかlaterなのか分からないけど、取りあえずamrを使うのをやめた。

これでversion3とnonfreeのオプションを付けなくても大丈夫だろうと思ったけど、FAACにLGPLでないコードが見つかってnonfreeを付けないとコンパイルできなくなっていた。詳細はFFMpegのリリースノート参照。

  • enable-gplとenable-nonfreeは一緒に指定できる。nonfreeの場合再配布できないだけ
  • libfaacを使わないくてもFFMpeg標準のコーデックでaacに変換できるけど品質がよくないらしい。
  • ライセンスの解釈が違っている場合は誰か指摘してください。

最終的にffmpegのconfigureは次のようにした。

# ./configure --enable-libmp3lame --enable-libfaad --enable-libfaac --enable-libx264 --enable-gpl --enable-nonfree --enable-shared
# make
# make install

一応動画配信で使うソフトもメモ

ソフト ライセンス ダウンロード インストール方法
ffmpeg-php-0.6.2 GPL 本家 2008/07/07の記事
gpac-0.4.5 LGPL 本家 2008/06/20の記事

FFMpegのコーデック一覧は次のコマンドで確認(-helpで使用可能なオプションを確認できる)

# ffmpeg -codecs > /tmp/codecs.txt

 

<関連記事>

 

<外部リンク>