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 パッケージグループの一覧