忘れないようにメモします。
私はとりあえず動けばOKという感じでビルドするので警告とか無視していきます。
この記事の手順でビルドして問題が起きても私は責任を負いません。自己責任でお願いします。
ffmpegをビルドしようということでWSLでビルドすることにしました。
専用のツールが用意されているのでとっても楽です。
WSLの設定
WSLの起動方法については検索してください。検索したほうが詳しい情報が出ると思います。
WSLはUbuntuを使います。たぶんCentOSでも大丈夫です。
ツールのダウンロード
ディレクトリはhomeディレクトリ以下ならどこでもいいです。
git clone https://github.com/rdp/ffmpeg-windows-build-helpers.git
cd ffmpeg-windows-build-helpers
必要パッケージのダウンロード
とりあえず実行します。
./cross_compile_ffmpeg.sh
するとログの中にsudo apt install 〇〇みたいなコマンドが出るのでそれをコピーして実行します。
次にその他に必要なものをインストールします。
sudo apt install python3-pip
pip3 install ninja meson
nasmのインストール
#好きなディレクトリに移動
cd ~
wget https://www.nasm.us/pub/nasm/releasebuilds/2.13.03/nasm-2.13.03.tar.bz2
tar xjvf nasm-2.13.03.tar.bz2
cd nasm-2.13.03
./autogen.sh
./configure --prefix=/usr/local
make
sudo make install
バージョンは必要に応じて変えたほうがいいかもしれないです。
もっと新しいバージョンを求められたときは変えてください。
ffmpegのビルド
./cross_compile_ffmpeg.sh --build-ffmpeg-shared=y --build-intel-qsv=y --build-amd-amf=y --ffmpeg-git-checkout-version=n4.2.2 --enable-gpl=n
私はこんな感じで実行しました。
数時間かかります。
ターゲットには32bit、64bit一緒にビルド、もしくは片方だけを選びましょう。
dllがほしかったので--build-ffmpeg-shared=yでdllを生成するようにしました。不要であれば--build-ffmpeg-static=yです。
--build-intel-qsv=y --build-amd-amf=y
ここでIntel QSV、AMD amfをオプションで有効にします。
NVENC、NVDECは自動で有効になるようです。
--enable-gpl=nにするとlibx264が無効になります。--enable-gpl=yだとlibx264がインストールされます。
どうやら標準でOpenH264が使われるようです。
--ffmpeg-git-checkout-version=n4.2.2でffmpegのバージョンを指定します。指定しなかったら最新のファイルを落としてくるようです。
こちらのツールは最新版用に作られているようなので、最新版を指定しないとエラーが出る可能性があります。
その他詳しい設定についてはshファイルの中を覗くのがいいかもしれません。
詳細に変更したいなら直接書き換えたほうがいいと思います。
ビルド完了ログ
Compressing COPYING.GPLv3.txt
Compressing ffmpeg.exe
Compressing ffplay.exe
Compressing ffprobe.exe
Compressing avcodec-58.dll
Compressing avdevice-58.dll
Compressing avfilter-7.dll
Compressing avformat-58.dll
Compressing avresample-4.dll
Compressing avutil-56.dll
Compressing swresample-3.dll
Compressing swscale-5.dll
Everything is Ok
完成したファイルの場所
私の場合だとここにありました。
ffmpeg-windows-build-helpers/sandbox/win64/ffmpeg_git_lgpl_n4.2.2_shared/bin/
最後のログに出てるのでそこを読めばわかります。
エラー解決
とりあえずもう一回ビルドする
これで通ることが多いです。
Unknown option "--enable-libdav1d".
ffmpeg4.2からlibdav1dが利用可能になりました。cross_compile_ffmpeg.shの中から--enable-libdav1dを消すかビルドするffmpegのバージョンを上げましょう。
最後に
ffmpegを使うときはライセンスに気をつけましょう。ライセンス料とか色々考えなければなりません。