# FFmpegのコンパイルの方法

Last Update: 2016/08/30

##
1. 必要なもの

- Visual Studio 2015
  ここ からVisual Studio Community 2015を無料ダウンロードできます。

- FFmpegからソースファイル ffmpeg-3.1.3.tar.bz2

- MSYSからインストーラ MSYS-1.0.11.exe

- YASMから実行ファイル yasm-1.3.0-win64.exe

- SDLからソースファイル SDL-1.2.15.zip

- (なくてもかまわない) coreutils-5.97-MSYS-1.0.11-snapshot.tar.bz2の中にある pr.exe

##
2. MSYSの準備

インストーラMSYS-1.0.11.exe を実行し、インストールします。
この例では、デフォルトの C:\MSYS\1.0 にインストールしたとします。

##
3. YASMの配置

yasm-1.3.0-win64.exe をダウンロードし、yasm.exeにリネームして、 C:\MSYS\1.0\bin に配置します。

##
4. SDLのコンパイル

1. SDL-1.2.15.zip を任意の場所に展開します。
   この例では、D:\ に展開し、D:\SDL-1.2.15 が得られたとします。

2. D:\SDL-1.2.15\VisualC\SDL.sln をVisual Studioで開きます。
   コンフィグレーションをRelease, x64などと設定し、SDL, SDLmainをビルドします。

3. コンパイルされたdll,libと、includeファイルを任意の場所に配置します。
   この例では、D:\SDL に配置することとします。

   D:\SDL を作成し、D:\SDL-1.2.15\include をフォルダごとコピーします。
   続いて、D:\SDL-1.2.15\VisualC\x64\Release より、SDL.lib を D:\SDL\lib に
   D:\SDL-1.2.15\VisualC\SDLmain\x64\Release より、SDLmain.lib を D:\SDL\lib に
   D:\SDL-1.2.15\VisualC\SDL\Release より、SDL.dll をD:\SDL にコピーします。

配置完了したディレクトリ構成

# D:\SDL

- SDL.dll
- include\
- lib\
  - SDL.lib
  - SDLmain.lib

4. sdl-config を以下の内容で作成し、C:\MSYS\1.0\bin に配置します。

       #! /bin/sh

       SDL_MAJOR_VERSION=1
       SDL_MINOR_VERSION=2
       SDL_MICRO_VERSION=15

       includedir='D:\\\\SDL\\\\include'
       SDL_CFLAGS=
       libdir='D:\\\\SDL\\\\lib'
       SDL_RLD_FLAGS=
       SDL_LIBS="-lSDL -lSDLmain"
       SDL_VERSION=$SDL_MAJOR_VERSION.$SDL_MINOR_VERSION.$SDL_MICRO_VERSION

       while test $# -gt 0; do
       	case $1 in
           --cflags)
             echo -I"${includedir}" ${SDL_CFLAGS}
             ;;
           --libs)
             echo /LIBPATH:${libdir} ${SDL_RLD_FLAGS} ${SDL_LIBS}
             ;;
           --version)
             echo ${SDL_VERSION}
             ;;
       	esac
       	shift
       done

##
5. (option)pr.exeの配置

FFmpegのconfigureでエラーが報告されるので、気になる場合は、 coreutils-5.97-MSYS-1.0.11-snapshot.tar.bz2 をダウンロードし、 展開して、pr.exeを取り出し c:\MSYS\1.0\bin に配置してください。
なくてもコンパイルは通ります。

##
6. FFmpegのコンパイル

1. ffmpeg-3.1.3.tar.bz2 を任意の場所に展開します。
   この例では、D:\ に展開し、D:\ffmpeg-3.1.3 が得られたとします。

2. VS2015 x64 Native Tools Command Prompt を開きます。 スタートメニューのVisual Studio 20015 の下にあります。

3. 環境設定をし、MSYSのbashのシェルに入ります。

       C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC> d:

       D:\> cd ffmpeg-3.1.3

       D:\ffmpeg-3.1.3> path=%path%;c:\msys\1.0\bin

       D:\ffmpeg-3.1.3> bash
       bash-3.1$

4. bashシェルで、コンパイルを行います。

       bash-3.1$ ./configure --toolchain=msvc
       bash-3.1$ make

   configureに1-2分、makeに10分程度かかります。

5. D:\ffmpeg-3.1.3\ffmpeg.exe ができていればokです。 任意の場所に配置し、D:\SDL\SDL.dll も同じ場所に配置すれば実行できます。