本当に「遊び」です。公式でナイトリービルドまでありますからね。どうもばりっぴです。
ということでffmpegをLinuxディストリビューションであるところのUbuntuでWindowsで動く実行ファイルにクロスビルドしてみました。
クロスビルドってなんだって話ですが、プログラムソースを用いてとあるOSから他のOSの実行形式(Windowsならexeファイルなど)を作る行為を指します。今回であればLinuxからWindows版のファイルを作るのでクロスビルドなわけです。クロスビルドはCPUのアーキテクチャも超えられて、IntelのCPUでラズベリーパイで動く実行形式を作ったりもできます。ラズベリーパイが非力だったころはよくIntelやらAMDのCPUを使ったパソコン上でクロスビルドをやっていたらしいです。今はだいぶラズベリーパイもCPUが強くなったので通常のビルドであればラズベリーパイ上で行います。
ffmpegもなんだって方もいらっしゃるかもしれません。ffmpegは、フリーソフト(最近は自由ソフトと呼ばれることも多くなりました)のメディアデコーダー、エンコーダーです。昔、CDをリッピングして「午後のこ~だ」とか「LAME」でmp3にしてた人もいるかと思うのですが、それがmp3エンコーダーで、ffmpegにもLAMEが取り込まれています。また、mp4動画を作る際に必要なエンコーダもffmpegに取り込まれています。世の中に存在する、メディアデコーダーとかメディアエンコーダーはこのffmpegの中に取り込まれていると言っても過言ではありません(公式で配布している全部入りのffmpegだと)。ということで依存関係がかなり複雑なので普通にコンパイルするだけでもかなりめんどうです。
そんなわけで、今回はffmpeg-windows-build-helpersというものを用いてクロスビルドを行いました。
こちらです。こういう便利スクリプトなどは、私が知る頃には古くて動かないことが多いのですが、多分に漏れずこれもうまく動きませんでした。えー…。
具体的に書くと、vamp-sdkとかいうのとかがリンク切れを起こし、libblurayがビルドできなくなっていました。全部入りのffmpegを作らなければこれらを踏むことはない、とはおもうのですが、全部入りのを作りたかったので踏みまくってトライアンドエラーでやってみました。やって、シェルスクリプトを少し書き換えたのが、
になります。nonfree、use-gplのフラグがたっている64bit版ffmpegを作るだけならこれで完走すると思います。だめならプルリクを出して欲しいです。と、forkしてみましたが、ほかにもforkしている人はいるので、全部がビルドできるforkもあるかもしれません。
見識を広めるためだけにやってみましたが、なかなか面白かったです。ばりっぴでした。

