目次 >> ffmpeg >> Windowsでのコンパイル方法
ここでは、Visual Studio Community 2013を使って、ffmpegをソースコードからコンパイルする方法を解説する。OSはWindows 7 64 bit版。
Visual C++をコマンドラインから利用できるようにしておく。一番簡単な設定方法は、
まず、Windowsのスタートメニューから、[Visual Studio 2013][Visual Studio Tools][VS2013
x64 Native Tools Command Prompt」を起動する。
そして
$ env
と打つと、環境変数が多数表示されるはずである。その中の
INCLUDE=C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\INCLUDE;C:\Program
Files (x86)\Microsoft Visual Studio 12.0\VC\ATLMFC\INCLUDE;C:\Program Files
(x86)\Windows Kits\8.1\include\shared;C:\Program Files (x86)\Windows Kits\8.1\include\um;C:\Program
Files (x86)\Windows Kits\8.1\include\winrt;
と
LIB=C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\LIB\amd64;C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\ATLMFC\LIB\amd64;C:\Program Files (x86)\Windows Kits\8.1\lib\winv6.3\um\x64;
という行を見つけ出し、環境変数INCLUDEに
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\INCLUDE;C:\Program
Files (x86)\Microsoft Visual Studio 12.0\VC\ATLMFC\INCLUDE;C:\Program Files
(x86)\Windows Kits\8.1\include\shared;C:\Program Files (x86)\Windows Kits\8.1\include\um;C:\Program
Files (x86)\Windows Kits\8.1\include\winrt;
を、環境変数LIBに
C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\LIB\amd64;C:\Program
Files (x86)\Microsoft Visual Studio 12.0\VC\ATLMFC\LIB\amd64;C:\Program
Files (x86)\Windows Kits\8.1\lib\winv6.3\um\x64;
を設定する。これらの値は、各パソコンごとに違う可能性があるので、envコマンドで打ち出して、コピーするのが良い。
環境変数、
まず、MinGWのMSYSをインストール
ここから、インストーラをダウンロードする。
mingw-get-setup.exeを実行して、インストーラを起動。
mingw-developer-toolkit、mingw32-base、mingw32-gcc-g++、msys-base、msys系のすべての項目(binとある項目だけで良い、またmsys-gccがあるとopusがコンパイルできないので、除いておく)、にチェックを入れて、[Installation]-[Apply
changes]を選択して、MSYSをインストールする。
なお、後述のfdk-aacを入れずに素のffmpegをコンパイルするだけなら、msys-baseだけでもOKである。
そして
C:\MinGW\msys\1.0\bin
および
C:\MinGW\bin
にパスを通しておく。なお、C:\MinGW\msys\1.0\binは、Windowsパスよりも前に来るようにしないと、lameコンパイル時にエラーが出る。
次にYASMをインストールする。
ここから、自分のシステムに合ったものをダウンロードする。
今回の環境は、Windows 7 64 bitなので、「Win64 .exe (for general use on 64-bit Windows)」とある、yasm-1.3.0-win64.exeをダウンロードした。
ダウンロードしたファイルは、圧縮されたものなどではなく、実行ファイルそのものである。
ファイル名をyasm.exeと変えて、適当な例えばC:\Win32app\yasmなどのフォルダを作成し、そこにyasm.exeをコピーして、パスを通す。(すでにパスの通っているフォルダに置いてもよい)
まず、ffmpegのソースコードをダウンロードして、解凍しておく。
解凍したフォルダ(例えば\ffmpeg-2.7)で、コマンドプロンプトを起動し、
sh
と打つと、mingwに入れる(>という表示から$という表示に変わるはずである)。
./configure
と打つ。
もしMS Visual C++を持っているのなら、
./configure --toolchain=msvc
とするとMS Visual C++を使ってくれる。
もしインテルコンパイラを持っているのなら、
./configure --toolchain=icl
とするとインテルコンパイラを使ってくれる。
makeする前に、リンカーがVC++のものを指しているかどうか確かめる。
$ which link
/c/Program Files (x86)/Microsoft Visual Studio 12.0/VC/bin/amd64/link.exe
もしこのとき、/bin/link.exeや/usr/bin/link.exeを指していたら、C:\MinGW\msys\1.0\bin\link.exeの名前を変えるか、パスの通っていない別の場所に移動しておく。なお、MinGWにおける、/usrに対応するWindowsフォルダはC:\MinGW\msys\1.0である。
次に、
$make
で、コンパイル作業が始まる。それなりに時間がかかる。
なお、並列コンパイルオプション -jをつけてmake -jとすると、うまくいかない場合があるようである。
完了すると、同じフォルダにffmpeg.exe他ができているはずである。
ここから本題。fdk-aacは再配布できないライセンスなので、本家のホームページからたどっていける、Windowsバイナリには含まれていない。
まず、ここから、ソースコード(例:fdk-aac-0.1.4.tar.gz)をダウンロードする。
そのファイルを解凍し、そのフォルダ(例:fdk-aac-0.1.4)からコマンドプロンプトを起動する。
sh
と打って
$autoreconf -fiv (不要?)
$./configure --prefix=/usr/local/hogehoge --disable-shared
$make
$make install
すると、C:\MinGW\msys\1.0\local\hogehoge以下のincludeとlibにコンパイルに必要なファイルがそろっているはずである。
次に、解凍したffmpegのソースファイルのフォルダでから、コマンドプロンプトを起動し、
sh
と打つ。そして、
./configure --extra-cflags="-I/usr/local/hogehoge/include" --extra-ldflags="-L/usr/local/hogehoge/lib" --enable-libfdk-aac --enable-gpl --enable-nonfree
(--toolchain=msvcの方でやってみたが、エラーが出てうまくいかなかったのでmingwオンリーでコンパイル)
この後、
$make
と打てば、しばらくの後、同じフォルダ内に、ffmpeg他ができているはずである。
上記のコンパイルでは、fdk-aacを有効にすることのみに的を絞った。ただし上記のオプションではfdk-aacは使えるものの、他のオプション例えばx264でさえ使えない。
acc
に加えて、
x264
webm
mp3
opus
も有効な状態でコンパイルしてみる。
ここから最新のソースコード(例:lame-3.99.5.tar.gz)をダウンロードする。
解凍したフォルダ(例:lame-3.99.5)からコマンドプロンプトを起動して
>sh
$./configure --prefix=/usr/local/hogehoge --enable-nasm --disable-shared
$make
$make install
ここから最新のソースコードをダウンロードする。
解凍したフォルダからコマンドプロンプトを起動して
>sh
$./configure --prefix=/usr/local/hogehoge --enable-static
$make
$make install
ここから最新のソースコード(例:libvpx-v1.3.0.tar.bz2)をダウンロードする。
解凍したフォルダ(例:libvpx-v1.3.0)からコマンドプロンプトを起動して
>sh
$./configure --prefix=/usr/local/hogehoge --disable-examples
このままでコンパイルするとエラーが出て進まないので、
configureの結果できた同じフォルダにあるlibs-x86-win32-gcc.mkファイル内の
HAVE_GNU_STRIP=yes
行を探し
HAVE_GNU_STRIP=no
に変える
そして、
$make
ここで最後にエラーが出るが、そのまま
$make install
と打てばOK。
ここから最新のソースコード(例:opus-1.1.tar.gz)をダウンロードする。
コンパイルには、MinGWのgccを使う。MSYSのgccが入っていると、エラーでコンパイルできない。コンパイルエラーが起きたときは、mingw-get.exeを起動して、msys-gccにチェックが入っていないことを確かめる。
解凍したフォルダからコマンドプロンプトを起動して
>sh
$./configure --prefix=/usr/local/hogehoge --disable-shared
$make
$make install
このままだと、ffmpegで./configure --enable-libopusと打ったときに
ここからpkg-configをダウンロードし、pkg-config.exeをC:\MinGW\binに入れておく。
そして、
環境変数PKG_CONFIG_PATHを
export PKG_CONFIG_PATH=/usr/local/hogehoge/lib/pkgconfig
をと打って設定
次に、解凍したffmpegのソースファイルのフォルダでから、コマンドプロンプトを起動し、
sh
と打つ。そして、
もしここで、opusを組み込むのであれば
環境変数PKG_CONFIG_PATHを
$export PKG_CONFIG_PATH=/usr/local/hogehoge/lib/pkgconfig
をと打って設定するのを忘れずに。
$./configure --extra-cflags="-I/usr/local/hogehoge/include" --extra-ldflags="-L/usr/local/hogehoge/lib" --enable-libfdk-aac --enable-gpl --enable-nonfree --disable-shared --enable-static --enable-libx264 --enable-libmp3lame --enable-libvpx --enable-libopus
この後、
$make
と打てば、しばらくの後、同じフォルダ内に、ffmpeg他ができているはずである。
コマンドプロンプトで下記のように出れば成功である。
>ffmpeg ffmpeg version 2.4 Copyright (c) 2000-2014 the FFmpeg developers built on Sep 15 2014 15:22:51 with gcc 4.8.1 (GCC) configuration: --extra-cflags=-I/usr/local/hogehoge/include --extra-ldflags=-L /usr/local/hogehoge/lib --enable-libfdk-aac --enable-gpl --enable-nonfree --disa ble-shared --enable-static --enable-libx264 --enable-libmp3lame --enable-libvpx --enable-libopus libavutil 54. 7.100 / 54. 7.100 libavcodec 56. 1.100 / 56. 1.100 libavformat 56. 4.101 / 56. 4.101 libavdevice 56. 0.100 / 56. 0.100 libavfilter 5. 1.100 / 5. 1.100 libswscale 3. 0.100 / 3. 0.100 libswresample 1. 1.100 / 1. 1.100 libpostproc 53. 0.100 / 53. 0.100 Hyper fast Audio and Video encoder usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfi le}... Use -h to get full help or, even better, run 'man ffmpeg'
最終更新日
最終更新日