FFmpeg library build for Windows2

gcc¸¦ ÀÌ¿ëÇÏ¿© À©µµ¿ìÁî¿ë FFmpeg ¶óÀ̺귯¸®¸¦ ºôµå Çغ»´Ù.
±¸¹öÀüÀÇ DLL°ú ¶óÀ̺귯¸® ÆÄÀÏÀÌ ÇÊ¿äÇϸé Á÷Á¢ ºôµå ÇØ¾ß ÇÑ´Ù.

ºôµå ȯ°æ

windows : windows 8.1 64bit
ffmpeg: 3.2.2
msys2: msys2-x86_64-20161025.exe


´Ù¿î·Îµå

ffmpeg: https://github.com/FFmpeg/FFmpeg
msys2: http://www.msys2.org/

MSYS2 ÆÐÅ°Áö ¾÷µ¥ÀÌÆ®

64ºñÆ®¿ëÀÎ msys2-x86_64-20161025.exe ÆÄÀÏÀ» ´Ù¿î·Îµå ¹Þ¾Æ¼­ ¼³Ä¡ ÇÑ´Ù.
¼³Ä¡½Ã Æú´õ´Â D:\msys64·Î ÁöÁ¤ÇÏ¿´´Ù.

msys Äĸǵå âÀÌ ÀÚµ¿ ½ÇÇàµÇ¸é ÆÐÅ°Áö¸¦ ¾÷µ¥ÀÌÆ® ÇÑ´Ù.

pacman -Syuu

msys Äĸǵå âÀ» ´Ý°í msys2_shell.cmd·Î Äĸǵå âÀ» ´Ù½Ã ½ÇÇàÇÑ´Ù.
´ÙÀ½ÀÇ ÆÐÅ°Áöµµ ¼³Ä¡ÇÑ´Ù.

pacman -S make
pacman -S diffutils
pacman -S yasm
pacman -S mingw-w64-i686-gcc

gcc¿ë´Â 32ºñÆ®¸¦ Ÿ°ÙÀ¸·Î ¼³Ä¡ÇÑ´Ù.
        - 64ºñÆ®¿ë : mingw-w64-x86_64-gcc
        - 32ºñÆ®¿ë : mingw-w64-i686-gcc

ºôµå

1. MSYS ½ÇÇà

32bit ½ÇÇà
D:\msys64\msys2_shell.cmd -mingw32

64bit ½ÇÇà
D:\msys64\msys2_shell.cmd -mingw64

2. ffmpeg º¹»ç

ffmpeg Æú´õ¸¦ "D:\msys64\home\[»ç¿ëÀÚ]" Æú´õ·Î º¹»çÇÑ´Ù.

3. make ¸¸µé±â

--enable-shared : DLLÀ» ¸¸µé±â À§ÇØ ÁöÁ¤ÇÑ´Ù.

mkdir out
cd out
../ffmpeg/configure --enable-shared

3. config.mak ¼öÁ¤

config.mak°¡ »ý¼ºµÇ¸é ´ÙÀ½ÀÇ ¿ö´×Àº ¹«½ÃÇÑ´Ù.
WARNING: pkg-config not found, library detection may fail.

ÀÌ »óÅ¿¡¼­ ºôµåÇÏ¸é ºôµå´Â ¹®Á¦¾øÀÌ µÇÁö¸¸ mingw32 Àü¿ëÀ̶ó À©µµ¿ìÁî¿ëÀ¸·Î ½ÇÇàÀÌ ¾ÈµÈ´Ù.
EXTRALIBS¿¡ ´ÙÀ½ »çÇ×À» Ãß°¡ÇÑ´Ù.

out/config.mak ÆÄÀÏÀÇ EXTRALIBS¿¡ -static-libgcc -Wl,-Bstatic -lpthread -Wl,-Bdynamic Ãß°¡
EXTRALIBS=-static-libgcc -Wl,-Bstatic -lpthread -Wl,-Bdynamic -lws2_32 -lavicap32 -lgdi32

8. make ½ÇÇà

make
make install

9. DLL È®ÀÎ

gcc·Î ºôµåÇϸé out/bin Æú´õ°¡ »ý¼ºµÇÁö ¾Ê±â ¶§¹®¿¡ lib, dll ÆÄÀÏÀÌ º¹»ç µÇÁö ¾Ê´Â´Ù.
°¢°¢ÀÇ Æú´õ¿¡¼­ lib ÆÄÀÏ°ú dll ÆÄÀÏÀ» È®ÀÎÇØ¾ß ÇÑ´Ù.

DLLÀÇ ÀÇÁ¸¼ºÀ» È®ÀÎÇÑ´Ù.
dumpbin -dependents bin/avcodec-57.dll

´Ù¸¥ DLLÀÇ ¾î¶² ÇÔ¼ö¸¦ È£ÃâÇÏ´ÂÁö È®ÀÎÇÑ´Ù.
dumpbin -imports bin/avcodec-57.dll

export ÇÏ´Â ÇÔ¼ö¸¦ È®ÀÎÇÑ´Ù.
dumpbin -exports bin/avcodec-57.dll

ÂüÁ¶)
http://qiita.com/omochimetaru/items/35df0524594255354885#msys2mingw32
https://trac.ffmpeg.org/wiki/CompilationGuide/MSVC