前回「ffmpeg-windows-build-helpers」を利用したビルドがうまくいかなかったので
最小限のライブラリを1つずつコンパイルしながらとりあえずffmpeg.exeが作成されることを目指す。

今回は以下のサイトを参考にした。
Ubuntu 上で Windows 用の FFmpeg を作る

既にインストール済みのパッケージもあるがとりあえず
$ sudo apt install autoconf automake build-essential libass-dev libfreetype6-dev libsdl2-dev libtheora-dev libtool libva-dev libvdpau-dev libvorbis-dev libxcb1-dev libxcb-shm0-dev libxcb-xfixes0-dev pkg-config texinfo zlib1g-dev

$ sudo apt install git yasm mingw-w64 mingw-w64-tools

64bit版のffmpegをビルドするために以下の流れで作業を行う。
x264、 fdk_aac、 QSV をgitからダウンロード、コンパイル。
ffmpegをgitからダウンロード先にコンパイルしたライブラリを加えてビルド。

まず、x264のコンパイルに「nasm-2.13」以上が必要なので
適当にディレクトリを作成してnasmのソースをダウンロード→インストール
$ cd ~
$ mkdir work_nasm
$ cd work_nasm
$ wget http://www.nasm.us/pub/nasm/releasebuilds/2.13.01/nasm-2.13.01.tar.bz2
$ tar xjvf nasm-2.13.01.tar.bz2
$ cd nasm-2.13.01
$ ./autogen.sh
$ ./configure
$ make
$ sudo make install
$cd ~
$ nasm -v
   NASM version 2.13.01と表示されることを確認

ホームディレクトリに作業用ディレクトリを作成
$ cd ~
$ mkdir x86_64
$ cd x86_64

x264をコンパイル
$ git clone http://git.videolan.org/git/x264.git
$ cd x264
$ ./configure --host=x86_64-w64-mingw32 --cross-prefix=x86_64-w64-mingw32- --prefix=/home/ユーザID/x86_64/tmp --enable-static --disable-opencl
$ make && sudo make install
$ cd ..

FDK-AACをコンパイル
$ git clone https://github.com/mstorsjo/fdk-aac
$ cd fdk-aac
$ autoreconf -fiv
$ ./configure --host=x86_64-w64-mingw32 --prefix=/home/ユーザID/x86_64/tmp --disable-shared
$ make && sudo make install
$ cd ..

QSVのコンパイル
$ git clone https://github.com/lu-zero/mfx_dispatch
$ cd mfx_dispatch
$ autoreconf -i
$ ./configure --host=x86_64-w64-mingw32 --prefix=/home/ユーザID/x86_64/tmp
$ make && sudo make install

別途「libstdc++.a」ファイルが必要になるとのことなので
以下コマンドでコピーしておく
sudo cp /usr/lib/gcc/x86_64-w64-mingw32/5.3-win32/libstdc++.a /home/ユーザID/x86_64/tmp/lib/libstdc++.a

$ cd ~/x86_64

FFmpegのビルド
$ git clone https://git.ffmpeg.org/ffmpeg.git
$ cd ffmpeg

$ PKG_CONFIG_PATH=/home/[userid]/x86_64/tmp/lib/pkgconfig ./configure --arch=x86_64 --cpu=x86_64 --target-os=mingw64 --cross-prefix=x86_64-w64-mingw32- --enable-gpl --enable-nonfree --enable-version3 --enable-cuda --enable-cuvid --enable-dxva2 --enable-nvenc --enable-avisynth --enable-libx264 --enable-libfdk-aac --enable-libmfx --disable-ffplay --disable-ffprobe --disable-ffserver --disable-doc

上記PKG_CONFIG_PATHの記述では複数のエラーが起きてconfigureがうまくいかないので
いくつかのオプションを削除した。
具体的には
--disable-ffserver:現在のバージョンでは廃止?

以下Nvidiaのハードウェアエンコード関係も
not all dependencies are satisfied: ffnvcodecと表示されてエラーになる。
--enable-cuda --enable-nvenc --enable-cuvid

結果、以下の記述に変更した。
$ PKG_CONFIG_PATH=/home/ユーザ名/x86_64/tmp/lib/pkgconfig ./configure --arch=x86_64 --cpu=x86_64 --target-os=mingw64 --cross-prefix=x86_64-w64-mingw32- --enable-gpl --enable-nonfree --enable-version3 --enable-dxva2 --enable-avisynth --enable-libx264 --enable-libfdk-aac --enable-libmfx  --disable-ffplay --disable-ffprobe --disable-doc
$ make

成功していればx86_64/ffmpegディレクトリに「ffmpeg.exe」が作成されている。