【ffmpeg】 fdk-aac と aacplus を同梱する

基本的なことは以下の記事を参照
HE-AAC が使える ffmpeg をつくる方法
【ffmpeg】 fdk-aac をffmpeg に組み込む

今までの記事通りに ffmpeg をビルドすると static ビルドになって他の AACエンコーダーが共存できなかったが、AACエンコーダーを shared ビルドにして別途 dll にすることで fdk-aac と aacplus の両方が使える ffmpeg をビルドすることができる。

必要な物は最初の記事を参考にする。

  • libaacplusをインストールする
    $ tar xzf libaacplus-2.0.2.tar.gz
    $ cd libaacplus-2.0.2
    $ ./autogen.sh --prefix="/mingw/i686-w64-mingw32" --build="i686-w64-mingw32" --host="i686-w64-mingw32" --enable-fast-install
    $ make clean && make && make install-strip
    $ cd


    ここの make clean でエラーがでる場合には
    libaacplus-2.0.2\src\ フォルダの
    Makefile を以下のように書き換える。

    ツールテスト-ニコニコミュニティ で配布しているMakefileReadme.zipより

    ・Mekefileの修正
    771~772行を置き換えてください。
    [変更前]
    sed -e 's/SQRT\ *([0-9\ ]*)\ *;//g;' | \
    sed -e 's/TRANS\ *([0-9\ ]*)\ *;//g;' | \

    [変更後]
    sed -e 's/SQRT\ *([0-9\ ]*)\ *;//g;' > $${source#*/}.new; \
    mv $${source#*/}.new $${source#*/}; \
    sed -e 's/TRANS\ *([0-9\ ]*)\ *;//g;' $$source | \



  • fdk-aac のインストール
    $ tar xzf fdk-aac-0.1.1.tar.gz
    $ cd fdk-aac-0.1.1
    $ autoreconf -i
    $ ./configure --prefix="/mingw/i686-w64-mingw32" --build="i686-w64-mingw32" -host="i686-w64-mingw32" --enable-fast-install
    $ make clean && make && make install-strip
    $ cd


  • x264をインストールする
    $ tar xjf last_x264.tar.bz2
    $ cd x264-snapshot-******-****
    $ ./configure --enable-win32thread --prefix="/mingw/i686-w64-mingw32"
    $ make fprofiled VIDS="akiyo_qcif.y4m"
    $ make install && make install-lib-static
    $ cd


  • polarsslをインストールする
    $ tar xzf polarssl-***-gpl.tgz
    $ cd polarssl-***/library
    $ make CC=gcc OFLAGS="-O2 -fomit-frame-pointer"
    $ cd ..
    $ cp -r include/polarssl /mingw/i686-w64-mingw32/include/
    $ cp library/libpolarssl.a /mingw/i686-w64-mingw32/lib/
    $ cd


  • rtmpdumpをインストールする
    $ tar xzf rtmpdump-2.4-20121110.tgz
    $ cd rtmpdump-2.4
    $ make SYS=mingw CRYPTO=POLARSSL CC=gcc AR=ar SHARED=no XLDFLAGS=-s
    $ cd librtmp
    $ make install prefix="/mingw/i686-w64-mingw32" SHARED=no
    $ cd


  • 最後にffmpegにパッチを当ててビルドする
    ffmpegのmakeの部分が一番時間がかかる

    補足

    --extra-cflags の部分を使っているPCに合わせて書き換える。
    最適化無し版
    --extra-cflags="-march=i686 -mtune=generic"
    Pentium4最適化版
    --extra-cflags="-mtune=pentium4 -mfpmath=sse -msse" --cpu=pentium4
    Core2最適化版 core i シリーズはこちら
    --extra-cflags="-mtune=core2 -mfpmath=sse -msse" --cpu=i686
    Athlon64最適化版
    --extra-cflags="-mtune=athlon64 -mfpmath=sse -msse" --cpu=i686
    Phenom最適化版
    --extra-cflags="-mtune=amdfam10 -mfpmath=sse -msse" --cpu=i686

    $ make -j
    として最後に -j を指定するとCPUとメモリをフルに使ってビルドできる。-j 3 として論理コア数指定も可能。ここでエラーがでる場合は -j を指定せずに make してみる。


    $ tar xzf ffmpeg-HEAD-*******.tar.gz
    $ cd ffmpeg-HEAD-*******
    $ patch -p1 < ffmpeg-configure-fix.diff
    $ PKG_CONFIG_PATH="/mingw/i686-w64-mingw32/lib/pkgconfig" ./configure --prefix="/mingw/i686-w64-mingw32" --enable-version3 --enable-gpl --enable-nonfree --enable-avisynth --enable-libfdk-aac --enable-libaacplus --enable-libx264 --enable-librtmp --disable-ffplay --disable-ffprobe --disable-ffserver --enable-cross-compile --target-os="mingw32" --arch=x86 --enable-w32threads --extra-cflags="-mtune=core2 -mfpmath=sse -msse" --cpu=i686 --optflags="-O2 -finline-functions"
    $ make


    ここまでうまくいくと ffmpegのフォルダ内に ffmpeg.exe と ffmpeg_g.exe が出来上がる。ffmpeg の AACエンコーダーは configure のときに何も指定しないと shared になる。Cドライブに msysフォルダを展開した場合には

    C:\msys\mingw\i686-w64-mingw32\bin

    に出来上がった ffmpeg.exe を移動させると ffmpeg が実行できる状態になる。他の場所に ffmpeg を移動させる場合には、そのフォルダ内にある、libfdk-aac-0.dll と libaacplus-2.dll も一緒に移動させる

Mac はこちらを参照
tmkk/XLDFdkAacOutput ・ GitHub
関連記事

この記事へのコメント

X5-452(Sada_Maru)2012/07/24 (火) 02:26:49

ビルド・スクリプト
ffmpeg-build-lib(static版)libaacplus無し
ffmpeg-build-dll(shared版)fdk-aacとlibaacplus混在
共通library:
libfdk-aac, libaacplus(shared版), speex, libmp3lame, librtmp(polarssl), libx264

DL:
http://sada5.sakura.ne.jp/452/

注意:
あべちんさんのpatchを使ってませんので、正規コマンド(ffmpeg公式の新コマンド)になります。
旧コマンドは使えません。

XhmikosR's builds GCC 4.7.1用です。
http://xhmikosr.1f0.de/

X5-452(Sada_Maru)2012/07/24 (火) 02:55:56

付け足し
GCC最適化オプションは自分の環境(OS:win7,CPU:i7)で微妙ながら一番早かったものを使用。
-O3 -march=i686 -mtune=generic -mfpmath=sse -msse2 ...省略
CPU制限はないけどsse2は必須だお。

X5-452(Sada_Maru)2012/07/24 (火) 17:13:54

お詫びと修正
ビルド・スクリプト
library-build-dll.sh & library-build-lib.sh
・ffplay.exeを出力する為にはSDLが必要だったのでSDLのインストールを追加。
・ffmpegビルドに必要だったlibrtmp修正パッチ(ffmpeg-configure-fix.diff)を使わずに済むよう修正した。

ffmpeg-build.sh
・パッチング(ffmpeg-configure-fix.diff)を削除。

DL:
http://sada5.sakura.ne.jp/452/

2012/07/24 (16:57) にUPさせて頂きました。
ffmpeg-configure-fix.diffは使わないので同梱せず、個別UPしました。

少佐2012/07/24 (火) 23:08:40

To:X5-452(Sada_Maru)様
今まで、ffplay.exe が出力されない状態でしたが、ビルドには、
SDL(Simple DirectMedia Layer)が必要だったのですね。
公開されたスクリプトの中身を見てそこだけ手動で追加しました。
おかげさまで、ffplay.exe もビルド出来るようになりました。
情報、どうもありがとうございます。

X5-452(Sada_Maru)2012/07/24 (火) 23:12:47

時間が取れたらfaacとvo-aacencも追加予定。

個別ライブラリーUPDATEスクリプトは面倒なので作らない...(汗)
library-build-***.shでFullインストールしてね。
UPDATEする時はuninstall-library.shで綺麗にしてからもよし、
uninstall-library.sh使わず上書きしてもよし。

ロベルト2012/07/25 (水) 00:14:08

Sada_Maru さんこんばんは

configure オプションについては後日追記します。報告ありがとうございました。

X5-452(Sada_Maru)2012/07/25 (水) 01:15:22

ビルド・スクリプト
faacとvo-aacenc追加。

>>ffmpegビルドに必要だったlibrtmp修正パッチ(ffmpeg-configure-fix.diff)を使わずに済むよう修正した。

librtmpのビルド時、rtmpdump-polarssl-1.1.4.diffで修正できるようにしました。
簡単に言うとPKG_CONFIGで参照されるlibrtmp.pcの修正です。
あべちんさんはPKG_CONFIGを使わない方なのでconfigure修正で対応させてるようです。

僕は、libraryが追加されるたびにconfigureパッチを修正するのが面倒だから、あまりconfigureに手を付けたくない(汗)

ロベルトさん
色んな所に小出しで書いて申し訳ありません。

管理人のみ通知 :

トラックバック


ニコニコチャンネル始めました
ニコラボチャンネル
スポンサード リンク
THE IDOLM@STER THE@TER ACTIVITIES 03
THE IDOLM@STER THE@TER ACTIVITIES 03

Fate/EXTELLA REGALIA BOX for PlayStation (R) 4 【初回限定特典】ネロ・クラウディウス、アルトリア・ペンドラゴン衣装「純真のナイトドレス」プロダクトコード付+【Amazon.co.jp限定特典】アルテラ衣装「スイートデビル」プロダクトコード配信 - PS4
Fate/EXTELLA REGALIA BOX for PlayStation (R) 4 【初回限定特典】ネロ・クラウディウス、アルトリア・ペンドラゴン衣装「純真のナイトドレス」プロダクトコード付+【Amazon.co.jp限定特典】アルテラ衣装「スイートデビル」プロダクトコード配信 - PS4

妖怪ウォッチ くったりぬいぐるみだニャン ジバニャン
妖怪ウォッチ くったりぬいぐるみだニャン ジバニャン

Fate/EXTELLA VELBER BOX 【初回限定特典】ネロ・クラウディウス、アルトリア・ペンドラゴン衣装「純真のナイトドレス」プロダクトコード付+【Amazon.co.jp限定特典】アルテラ衣装「スイートデビル」プロダクトコード配信 - PS4
Fate/EXTELLA VELBER BOX 【初回限定特典】ネロ・クラウディウス、アルトリア・ペンドラゴン衣装「純真のナイトドレス」プロダクトコード付+【Amazon.co.jp限定特典】アルテラ衣装「スイートデビル」プロダクトコード配信 - PS4

Fate/EXTELLA REGALIA BOX for PlayStation (R) Vita 【初回限定特典】ネロ・クラウディウス、アルトリア・ペンドラゴン衣装「純真のナイトドレス」プロダクトコード付+【Amazon.co.jp限定特典】アルテラ衣装「スイートデビル」プロダクトコード配信 - PS Vita
Fate/EXTELLA REGALIA BOX for PlayStation (R) Vita 【初回限定特典】ネロ・クラウディウス、アルトリア・ペンドラゴン衣装「純真のナイトドレス」プロダクトコード付+【Amazon.co.jp限定特典】アルテラ衣装「スイートデビル」プロダクトコード配信 - PS Vita

【早期購入特典あり】初音ミクシンフォニー~Miku Symphony 2016~オーケストラ ライブ CD(初音ミクシンフォニー描き下ろしクリアファイル付き(ランダム配布))
【早期購入特典あり】初音ミクシンフォニー~Miku Symphony 2016~オーケストラ ライブ CD(初音ミクシンフォニー描き下ろしクリアファイル付き(ランダム配布))

「うたわれるもの 偽りの仮面&二人の白皇」歌集(初回限定盤)
「うたわれるもの 偽りの仮面&二人の白皇」歌集(初回限定盤)

TVアニメ『ラブライブ!サンシャイン!!』挿入歌シングル「想いよひとつになれ/MIRAI TICKET」
TVアニメ『ラブライブ!サンシャイン!!』挿入歌シングル「想いよひとつになれ/MIRAI TICKET」

『刀剣乱舞-花丸-』 歌詠集 其の三 特装盤
『刀剣乱舞-花丸-』 歌詠集 其の三 特装盤

本好きの下剋上~司書になるためには手段を選んでいられません~第一部 「本がないなら作ればいい3」
本好きの下剋上~司書になるためには手段を選んでいられません~第一部 「本がないなら作ればいい3」

新着記事と追記・編集記事
スポンサード リンク
ブログ内検索
プロフィール

Author:ロベルト
お問い合わせはこちらまで
robelt2525[at]gmail.com

中の人 @nico_lab
ブログ更新用 @blo_nico_lab

詳しいプロフィールはこちら

カテゴリ
アクセスの多い記事
記事アーカイブ

最新コメント
リンク
ニコニコ静画
アニメカテゴリ毎時ランキング
免責事項
当ブログはリンクフリーです。記事によりトラブルが生じた場合でも、当ブログ管理人は一切の責任を負いません。 当ブログに記載されている情報の正誤や利用は、ご自身の判断でお願いします。 紹介したアプリケーションに関する問い合わせは作者に問い合わせてください。ニコニコ動画に関する質問はまずは公式掲示板、2ch、各Q&Aサイトを参照ください。
ブログの読者になる(RSS)
アクセス数