Windowsでffmpegをビルドする【MSYS2/MinGW編】
- 2019.05.03
- 環境情報

概要
Windows 10 Homeで、ffmpegをソースからビルドする方法を、MSYS2とMinGWを使って挑戦してみます。
インストール
公式サイトから「msys2-x86_64_64-20180531.exe」を選択してインストールします。
設定はデフォルトのままでいいと思います。
パッケージの更新
スタートメニューの「MSYS2 64bit」→「MSYS2 MSYS」からシェルを起動して、以下のコマンドを実行します。
1 |
pacman -Syu |
確認ではエンターを押して、どんどん更新していきます。
Bash自体も更新されるため、「exit」コマンドが効かない事もあるので、ウィンドウのクローズボタンでシェルを閉じて、シェルを再起動して更新がなくなるまで繰り返してください。
開発環境のインストール
スタートメニューの「MSYS2 64bit」→「MSYS2 MinGW 64-bit」 で、MinGWのシェルを起動して、pacmanで必要なものをインストールします。
1 2 3 |
pacman -S \ gcc yasm pkg-config \ diffutils make git wget |
ffmpegのソースを取得
gitでリポジトリからクローンします。
1 2 3 |
git clone -c core.autocrlf=false https://github.com/FFmpeg/FFmpeg.git ffmpeg cd ffmpeg git checkout release/4.1 |
以下、ffmpegディレクトリで作業します。
configure
makeの事前準備でconfigureを実行しますが、makeに必要なパッケージをまとめてインストールします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
pacman -S \ mingw-w64-x86_64-SDL2 \ mingw-w64-x86_64-openjpeg2 \ mingw-w64-x86_64-libopusenc \ mingw-w64-x86_64-shine \ mingw-w64-x86_64-snappy \ mingw-w64-x86_64-libtheora \ mingw-w64-x86_64-twolame \ mingw-w64-x86_64-libvpx \ mingw-w64-x86_64-wavpack \ mingw-w64-x86_64-libwebp \ mingw-w64-x86_64-opencore-amr \ mingw-w64-x86_64-zlib \ mingw-w64-x86_64-gmp \ mingw-w64-x86_64-zimg \ mingw-w64-x86_64-xz \ mingw-w64-x86_64-libvorbis \ mingw-w64-x86_64-vo-amrwbenc \ mingw-w64-x86_64-libmysofa \ mingw-w64-x86_64-speex \ mingw-w64-x86_64-aom \ mingw-w64-x86_64-libmfx |
インストールが完了すれば、configureの実行です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
PKG_CONFIG_PATH="/mingw64/lib/pkgconfig" ./configure \ --prefix="/home/rochi/ffmpeg_build" \ --enable-gpl --enable-version3 --enable-sdl2 --enable-bzlib \ --enable-openssl --enable-iconv \ --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg \ --enable-libopus --enable-libshine --enable-libsnappy --enable-libtheora \ --enable-libtwolame --enable-libvpx --enable-libwavpack --enable-libwebp \ --enable-libx264 --enable-libzimg --enable-lzma \ --enable-zlib --enable-gmp --enable-libvorbis --enable-libvo-amrwbenc \ --enable-libmysofa --enable-libspeex --enable-libaom --enable-libmfx \ --enable-avisynth \ --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages \ --enable-librtmp --enable-libfdk-aac \ --enable-nonfree \ --enable-cross-compile --target-os="mingw32" --arch="x86_64" --enable-w32threads \ --enable-runtime-cpudetect \ --extra-cflags="-O3 -pipe -march=broadwell" \ --cc="x86_64-w64-mingw32-gcc" \ --pkg-config-flags="--static" \ --extra-ldflags="-static" \ --disable-shared |
結構時間がかかりますので、その間にオプションについてをご覧ください。
オプションについて
今回設定したオプションは、ffmpegが公式で配布しているWindows用バイナリに合わせるようにしていますが、パーケージがなかったり、ソースからのビルドが失敗したりして、以下のオプションを有効にできませんでした。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
--enable-gnutls ※GnuTLSは--enable-opensslで、OpenSSLに置き換えたため、同時指定できません。 --enable-libxml2 --enable-libx265 --enable-fontconfig --enable-libfreetype --enable-libsoxr --enable-libvidstab --enable-libxvid --enable-libass --enable-libbluray --enable-amf --enable-ffnvcodec --enable-cuvid --enable-d3d11va --enable-nvenc --enable-nvdec --enable-dxva2 |
make
configureが問題なく終われば、後はmakeして、インストールするだけです。
1 2 |
make make install |
インストールしたexeファイルは「C:\msys64\home\rochi\ffmpeg_build\bin」に生成されます。
あとがき
ここまでたどり着くために、GWの3日間を費やしました…
わかってみると簡単なことですが、初めてのMSYS2とMinGWに加えて、configureとパッケージの関係を調べるために、パッケージを1つインストールしては、configureと恐ろしく時間がかかることをやっていたためです(笑)
何のためにわざわざソースからビルドしたかって?
理由はこれを実現するためでした、合わせてご覧ください。
-
前の記事
工人舎 SA5にLinuxをインストールする 2019.04.29
-
次の記事
Windowsでffmpegをビルドする【オレ流編】 2019.05.03