FFMpegをライセンスに気を付けながら再コンパイルとコーデックのインストール
コーデックのバージョンが上がっているのでFFMpegを再コンパイルしてみた。
環境はCentOS 5.4
今回使用したコーデックは以下
コーデック | ライセンス | ダウンロード |
faac-1.28 | LGPL | |
faad2-2.7 | GPLv2 | |
lame-3.98.4 | LGPL | LAME Project |
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.
と怒られる。
ここで気づいた。GPLv2とApache 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
<関連記事>
<外部リンク>