6
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Visual Studio 2013 で FFmpeg をビルド

Posted at

#はじめに
FFmpeg は様々な動画形式を扱うことのできる動画ライブラリです
https://www.ffmpeg.org/

Windows に対応したバイナリは以下の URL からダウンロードできるようになっています
http://ffmpeg.zeranoe.com/builds/

しかし、上記バイナリを Visual Studio から使う場合は注意が必要です

lib をリンクした際に

LNK2026: モジュールは SAFESEH イメージには安全ではありません。

といったエラーが出るためです

SAFESEH を指定しないでビルドをして回避する手段もありますが、今回は SAFESEH イメージに安全なバイナリを作成する手段で回避をすることにします。

今回の基本的な流れは公式サイトのここを参考にしています
https://www.ffmpeg.org/platform.html#Microsoft-Visual-C_002b_002b-or-Intel-C_002b_002b-Compiler-for-Windows

#準備
下記 URL から Git クライアントをインストールします(これ以外の Git クライアントでも可)
https://desktop.github.com/
下記 URL から Chocolatey をインストールします
https://chocolatey.org/

Chocolatey をインストールしたら、下記コマンドで mingw-get と yasm をインストールします

cinst mingw-get
cinst yasm

コマンドプロンプトを立ち上げ、 mingw-get が見える場所に移動します(パス設定でも可)

cd C:\tools\MinGW\bin

mingw-get で mingw32-base と msys-base の両パッケージをインストールします

mingw-get install mingw32-base
mingw-get install msys-base

pkg-config を下記 URL からダウンロードし、msysから見える場所(今回はC:\tools\MinGW\bin) に入れインストールします
http://www.gtk.org/download/win32.php
また、GLib も必要になるため、同上のサイトから同上の手順でインストールを行います

Git クライアントを立ち上げ、下記コマンドで改行コードが勝手に書き換わるのを防止してからクローンします

git config --global core.autoCRLF false
git clone git://source.ffmpeg.org/ffmpeg.git ffmpeg

%VS120COMNTOOLS%VsDevCmd.bat からコマンドプロンプトを起動し、

C:\tools\MinGW\msys\1.0\msys.bat

と入力し、シェルを立ち上げます
クローンした FFmpeg のフォルダへ行き、下記コマンドを入力(今回は dll が欲しかったため --enable-shared を指定)

./configure --toolchain=msvc --enable-shared
make

とすることでバイナリができます。

6
8
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
6
8

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?