LoginSignup
4
3

More than 3 years have passed since last update.

今更ながらWindows版FFmpegをクロスコンパイル&カスタムビルド

Last updated at Posted at 2020-10-25

注意

書きなぐりメモ、かつ2020年10月27日現在の情報になりますことをご了承ください。

WSL(Windows Subsystem for Linux)の準備

正確にはWSL2です。
Windows上でビルドしようとするとMSYSやらと面倒だったのでWSLを使うことに。

ハマった時は、Windows Updateを手動更新するのを忘れずに。

今回はUbuntu 20.04を使いました。

下準備(1)

ここからは公式ガイドを参考にしました。

$ sudo apt update && sudo apt install git autoconf automake build-essential cmake git-core libass-dev libfreetype6-dev libgnutls28-dev libtool libvorbis-dev pkg-config texinfo wget yasm zlib1g-dev mingw-w64

今回は一切ライブラリを入れずにビルドします。
ライブラリを入れる場合、後に説明する一部引数を変える必要があるかもしれません。

下準備(2)

公式のGitHubからクローンしてきます。
最新バージョンの確認は公式HPから。記事執筆時点での最新安定版は4.3.1でした。

$ git clone -b release/4.3 https://git.ffmpeg.org/ffmpeg.git ffmpeg && cd ffmpeg

ビルド

まずはコマンドをバッと。

改行なし
$ PKG_CONFIG_PATH=/usr/lib/pkgconfig ./configure --arch=x86_64 --target-os=mingw64 --cross-prefix=x86_64-w64-mingw32- --disable-shared --enable-static --pkg-config-flags=--static --enable-w32threads --extra-cflags=-O2 --enable-optimizations --disable-gpl --enable-version3 --disable-doc --disable-htmlpages --disable-manpages --disable-podpages --disable-txtpages --disable-debug && make
改行あり
$ PKG_CONFIG_PATH=/usr/lib/pkgconfig ./configure \
  --arch=x86_64 \
  --target-os=mingw64 \
  --cross-prefix=x86_64-w64-mingw32- \
  --disable-shared \
  --enable-static \
  --pkg-config-flags=--static \
  --enable-w32threads \
  --extra-cflags=-O2 \
  --enable-optimizations \
  --disable-gpl \
  --enable-version3 \
  --disable-doc \
  --disable-htmlpages \
  --disable-manpages \
  --disable-podpages \
  --disable-txtpages \
  --disable-debug \
  && make

解説

完全に理解して指定しているわけでないために、解説が雑なのが申し訳ないです…。

Mingw-w64でビルドする際に必要となる環境変数、configureの指定
PKG_CONFIG_PATH=/usr/lib/pkgconfig ./configure
Windows向け64bitバイナリをビルドさせる
--arch=x86_64
--target-os=mingw64
--cross-prefix=x86_64-w64-mingw32-
1つのexeファイルにまとめさせる
--disable-shared
--enable-static
--pkg-config-flags=--static
最適化引数。1行目はWindows向け
--enable-w32threads
--extra-cflags=-O2
--enable-optimizations
LGPL3.0でビルドさせる
--disable-gpl
--enable-version3
exeファイルのサイズを削るため、ドキュメント類や開発者向け機能をカット。こちらはお好みで
--disable-doc
--disable-htmlpages
--disable-manpages
--disable-podpages
--disable-txtpages
--disable-debug
上記で作成したmakefileに基づきコンパイル。十数~数十分かかります
make

--enable-small は実行速度を犠牲にバイナリサイズを小さくする引数ですが、今回は指定していません。
(私の環境の場合、実行速度が約5%遅くなったかわりにサイズは約27%小さくなりました。)

まとめ

書きなぐってすまんかった。

おまけ

この記事を書くきっかけになった私の開発するソフト、m3u8ToMP4をよろしくお願いします。
HTTP Live Streaming(HLS)で配信される動画・生放送をmp4などに変換するWindows向けソフトです。(保存した動画・音声が著作権法に抵触しないよう十分に注意してご利用ください。

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3