NVENCとfdk-aacが使えるffmpegをビルドする
最新の開発環境である MSYS2 を使って 64bit版 をビルドする。(x264 も入れる)
fdk-aac のバイナリは配布禁止なので自分でコンパイルする必要がある。(ffmpeg の aac は音質が悪い)
必要なファイルをダウンロード
MSYS2 のインストーラをダウンロード(msys2-x86_64-20200629.exe)
FFmpegnv-codec-headers のダウンロード(nv-codec-headers-n9.0.18.3.zip)
nasm のバイナリをダウンロード、2.13以上が必要(nasm-2.15.01-win64.zip)
ffmpeg のダウンロード(ffmpeg-4.3.1.tar.bz2 2020.07.11)
fdk-aac のダウンロード(fdk-aac-2.0.1.tar.gz)
x264 のダウンロード(x264-stable.zip x264 core 160 2020.07.02)
それぞれを展開する(7-Zip などを使って)
MSYS2のインストール gcc 10.1.0
・MSYS2のインストーラを実行
デフォルトのインストール場所は C:\msys64
・プログラムメニューから MSYS2 の MSYS2 MSYS を起動しコマンド実行
pacman -Syuu
メッセージが出て一旦閉じて、再度 MSYS2 MSYS を開きもう一度コマンド実行
・MinGW-w64 (64bit) の開発環境をインストール
pacman -S base-devel
pacman -S mingw-w64-x86_64-toolchain
選択肢が出るがデフォルトの all にする
MinGW-w64 (32bit) をインストールする場合は
pacman -S mingw-w64-i686-toolchain
・ダウンロードした nasm.exe を C:\msys64\mingw64\bin にコピーする
ffmpegのビルド
MSYS2 MinGW 64-bit を開きソースコードを展開したディレクトリに移動
各ディレクトリは /fdk-aac /x264 /ffmpeg とする
・FFmpegnv-codec-headers のインストール
FFmpegnv-codec-headers のディレクトリに移動
make install PREFIX=/mingw64
・fdk-aac のコンパイル
cd ../fdk-aac
./configure --prefix=/mingw64/x86_64-w64-mingw32
make -j3
make install
--prefix= は install する場所、MSYSのディレクトリ構成に合わせる
-j3 はスレッド数、CPUに合わせて設定、デフォルトは1(遅い)
・x264 のコンパイル
cd ../x264
./configure --prefix=/mingw64/x86_64-w64-mingw32 --enable-static --enable-strip
make -j3
make install
サンプル動画による最適化(fprofiled)はしない(効果が見えないので)
・ffmpeg のビルド
cd ../ffmpeg
./configure --enable-gpl --enable-version3 --enable-nonfree --enable-libfdk-aac --enable-libx264 --enable-nvenc --extra-ldflags=-static --optflags=-O2
make -j3
staticの指定は --extra-libs=-static でもOK
お手軽ビルド
MSYS2 でパッケージをインストールして ffmpeg のみビルドする。
欠点は、インストールするバージョンが選べない、余計なものが入る。(x264 は依存パッケージ多数)
組み込むものが多い場合はこの方法が簡単。
パッケージのインストール
MSYS2 MSYS を開き
pacman -Ss でパッケージを検索
インストール
pacman -S nasm mingw-w64-x86_64-x264-git mingw-w64-x86_64-fdk-aac
FFmpegnv-codec-headers のインストール
MSYS2 MinGW 64-bit を開き
FFmpegnv-codec-headers のディレクトリに移動
make install PREFIX=/mingw64
ffmpeg のビルド
ffmpeg のディレクトリに移動
./configure --enable-gpl --enable-version3 --enable-nonfree --enable-libfdk-aac --enable-libx264 --enable-nvenc --extra-ldflags=-static --optflags=-O2
make -j3
32bit版をビルドする場合 (Windows10 32bit 用)
最後の32bitドライバ 391.35 と nv-codec-headers-n8.1.24.11 で動作OK
MinGW-w64 (32bit) をインストール
pacman -S mingw-w64-i686-toolchain
32bitのパッケージをインストール
pacman -S mingw-w64-i686-x264-git mingw-w64-i686-fdk-aac
nv-codec-headers をインストール
make install PREFIX=/mingw32
ffmpeg のビルド
pacman -Rs [package] パッケージのアンインストール
pacman -Qqe インストール済みのパッケージ一覧
pacman -Sg パッケージグループの一覧