もどる

FFmpeg+SDL2のコンパイルの方法

Last Update: 2016/09/21
  1. 必要なもの

  2. MSYSの準備

    FFmpegのコンパイルに必要です。

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

  3. YASMの配置

    FFmpegのコンパイルに必要です。

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

  4. zlibのコンパイル

    FFmpegのコンパイルに必要です。
    1. zlib128.zip を任意の場所に展開します。
      この例では、D:\ に展開し、D:\zlib-1.2.8 が得られたとします。

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

    3. ディレクトリを移動し、コンパイルを行います。

      
      C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC> d:
      
      D:\> cd zlib-1.2.8
      
      (アセンブラコードを使用する場合 64bit)
      D:\zlib-1.2.8> nmake -f win32/Makefile.msc AS=ml64 LOC="-DASMV -DASMINF -I." OBJA="inffasx64.obj gvmat64.obj inffas8664.obj"
      (アセンブラコードを使用しない場合)
      D:\zlib-1.2.8> nmake -f win32/Makefile.msc
      
      
    4. コンパイルされたdll,libと、includeファイルを任意の場所に配置します。
      この例では、D:\zlib に配置することとします。

      D:\zlib を作成し、D:\zlib\include D:\zlib\lib フォルダを作成します。
      続いて、D:\zlib-1.2.8 より、zlib.h と zconf.h を D:\zlib\include に
      zlib.lib と zdll.lib を D:\zlib\lib に
      zlib1.dll をD:\zlib にコピーします。

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

      D:\zlib

      • zlib1.dll
      • include\
        • zlib.h
        • zconf.h
      • lib\
        • zlib.lib
        • zdll.lib
  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のコンパイル

    TS viewer for Amazon Cloud Driveをコンパイルする際に、ffmoduleに必要です。
    FFmpegのffplay.exeは、SDLを想定しておりSDL2ではコンパイルできません。
    そのため、この方法ではffplay.exeは生成されません。
    1. ffmpeg-3.1.3.tar.bz2 を任意の場所に展開します。
      この例では、D:\ に展開し、D:\ffmpeg-3.1.3 が得られたとします。
      インストール先はD:\ffmpegとします。

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

    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> set INCLUDE=%INCLUDE%;d:\zlib\include
      
      D:\ffmpeg-3.1.3> set LIB=%LIB%;d:\zlib\lib
      
      D:\ffmpeg-3.1.3> bash
      bash-3.1$
      
    4. bashシェルで、設定を行います。

      
      bash-3.1$ ./configure --toolchain=msvc --extra-libs=msvcrt.lib --enable-shared --prefix=/d/ffmpeg
      

      configureに1-2分かかります。
      --extra-libs=msvcrt.lib はzlibライブラリの検出時のエラーを防ぐものです。
      --enable-shared はdll作成モード、--prefix はインストールしたいディレクトリを指定してください。

    5. zlib ライブラリのインクルードファイルの設定と干渉する部分があるので、修正します。
      D:\ffmpeg-3.1.3\config.h を開き、

      
      #define HAVE_UNISTD_H 0
      

      という行を探して、以下のようにコメントアウトします。

      
      //#define HAVE_UNISTD_H 0
      

      zlib ライブラリで同じマクロが使用されており、この名前が0ではなく未定義でないとコンパイルが通りません。

    6. bashシェルで、コンパイルとインストールを行います。

      
      bash-3.1$ make
      bash-3.1$ make install
      

      makeに10分ほどかかります。
      make installで先程prefixで指定したディレクトリ以下にインストールされます。

    7. D:\ffmpeg\bin\ffmpeg.exe ができていればOKです。
       実行してみて、コピーライトとモジュールの表示が出ればちゃんとできています。

  7. SDL2のコンパイル

    TS viewer for Amazon Cloud Driveをコンパイルする際に、ffmoduleに必要です。
    1. SDL2-2.0.4.zip を任意の場所に展開します。
      この例では、D:\ に展開し、D:\SDL2-2.0.4 が得られたとします。

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

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

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

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

      D:\SDL2

      • SDL2.dll
      • include\
      • lib\
        • SDL2.lib
  8. SDL_ttfのコンパイル

    TS viewer for Amazon Cloud Driveをコンパイルする際に、ffmoduleに必要です。
    1. SDL2_ttf-2.0.14.zip を任意の場所に展開します。
      この例では、D:\ に展開し、D:\SDL2_ttf-2.0.14 が得られたとします。

    2. D:\SDL2_ttf-2.0.14\VisualC\SDL_ttf.sln をVisual Studioで開きます。
      コンフィグレーションをRelease, x64などと設定します。

    3. SDL2_ttfのプロパティを開き、インクルードパスとライブラリパスを設定します。
      先程構築した、SDL2がコンパイルに必要です。
      先程の例の通りに配置していれば、インクルードパスに D:\SDL2\include
      ライブラリパスに D:\SDL2\lib を設定します。

    4. ビルドを行い、D:\SDL2_ttf-2.0.14\VisualC\x64\Release 以下にできた
      SDL2_ttf.lib を D:\SDL2\lib に、
      SDL2_ttf.dll を D:\SDL2 に配置します。
      さらに、D:\SDL2_ttf-2.0.14\SDL_ttf.h を D:\SDL2\include にコピーします。
      D:\SDL2_ttf-2.0.14\VisualC\x64\Release 以下より依存ファイルの libfreetype-6.dll, zlib1.dll を D:\SDL2 に配置します。

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

      D:\SDL2

      • SDL2.dll
      • SDL2_ttf.dll
      • libfreetype-6.dll
      • zlib1.dll
      • include\
      • lib\
        • SDL2.lib
        • SDL2_ttf.lib
  9. TS viewer for Amazon Cloud Driveのコンパイル準備

    TS viewer for Amazon Cloud Driveのコンパイルには、FFmpeg、SDL2、SDL2_ttfの各モジュールが必要です。

    インクルードパスに、例の通りであれば D:\ffmpeg\include, D:\SDL2\include
    ライブラリパスに、D:\ffmpeg\bin, D:\SDL2\lib を追加指定してください。

    TSviewACD.exeの実行には次の依存ファイルが必要です。
    実行ファイルと同じパスに準備してください。
    フォントは別の場所を指定できます。

もどる