'멀티미디어/코덱(Codec)'에 해당되는 글 4건


윈도우에서 FFmpeg을 컴파일하려면 Visual Studio에서 하는 방법과 MinGW의 gcc로 컴파일하는 방법이 있다.

Visual Studio를 사용하는 방법이 쉽다고 되어있는데, 막상 해보니 잘 되지 않고…

윈도우 환경에서 gcc로 컴파일 하려면 MinGWyasm이 필요하다.



1. MinGW 다운 및 설치


MinGW를 설치하려면 여기에서 mingw-get-setup.exe를 다운받아 실행하면 된다.

설치 화면에서 mingw32-basemsys-base를 선택한 뒤에 Installation - Apply Changes를 클릭하면 설치가 진행된다.

설치가 되는 기본 폴더의 위치는 c:\MinGW이다.




2. pr.exe 설치


컴파일할 때 pr.exe가 필요한데, 위에서 설치한 내용에선 이 파일이 빠져있다.

여기에서 다운받아 압축을 푼 뒤에 pr.exe를 c:\MinGW\bin에 복사한다.



3. yasm 다운 및 설치


여기에서 yasm을 다운받는다. win32를 다운받으면 무난히 사용할 수 있다.

다운받은 뒤 파일명을 yasm.exe로 바꾼 뒤에 c:\MinGW\bin에 복사하면 된다.



4. FFmpeg 소스 다운로드 및 컴파일 준비


FFmpeg 소스는 여기서 다운받을 수 있다.

다운받은 뒤에 압축은 c:\MinGW\msys\1.0\home\[계정] 아래에 해제하면 작업이 좀 더 쉽다.



5. unistd.h 수정


c:\MinGW\includeunistd.h가 있다.

여기에 _cdecl가 5번 들어있는데, 이를 모두 __cdecl로 바꿔준다.



6. 컴파일


c:\MinGW\msys\1.0에서 msys.bat를 실행한다.

우선 아래와 같이 입력해서 MinGW 폴더를 마운트한다.


1
mount c:/mingw /mingw


여기서 역슬래쉬(\)가 아니라 슬래쉬(/)임에 유의한다.


그 다음은 소스가 저장된 위치로 이동.

4번에서 설명한 내용대로 했으면 현재 폴더의 아래에 있다.

여기서 아래와 같이 입력하면 컴파일된다. 소요 시간은 대략 30분 안팎.


1
2
3
./configure --target-os=mingw32 --enable-cross-compile --arch=i686 --enable-static
make
make install


이렇게 하면 ffmpeg.exe 등이 만들어진 것을 확인할 수 있다.



참조 사이트: 노녁의 볼우물 #1, #2

 



출처: http://teus.me/308 [TEUS.me]

블로그 이미지

맨오브파워

한계를 뛰어 넘어서..........

,

1단계 : download

1.1 MinGW download : MinGW-5.1.4.exe
[w32api] w32api-3.13-mingw32-dev.tar.gz
1.2 MSYS download : MSYS-1.0.11-2004.04.30-1.exe
[msys_dll] MSYS-1.0.11-20080821-dll.tar.gz
[bash] bash-3.1-MSYS-1.0.11-1.tar.bz2
[Coreutil] coreutils-5.97-MSYS-1.0.11-snapshot.tar.bz2
[Make] make-3.81-MSYS-1.0.11-2.tar.bz2

1.3 FFMPEG의 source download :
download page
source download ( direct ) 

2단계 : install tool

2.1 MinGW install
- 가급적 “Candidate”를 선택한다.
- “MinGW base tools”과 “MinGW make”은 꼭 선택한다.
- (예시) C:\MinGW에 Install한다.
2.2 w32api를 압축을 풀어 MinGW에  overwrite한다.
2.3 MSYS install
- (예시) MSYS를 C:\msys\1.0에 install한다.
- 그 후 script창이 나타난다.
: Do you wish to continue with the post install? [yn ] -> y
Do you have MinGW installed? [yn ] -> y
Where is your MinGW installation? -> C:/mingw
2.4 msys_dll을 install한다. ( Msys에 overwrite)
: 모든 file을  overwrite
2.5 bash를 c:\msys\1.0에 압축을 풀어 놓는다.
: sh.exe
2.6 coreutil을 c:\msys\1.0에 압축을 풀어 놓는다.
: pr.exe, du.exe, kill.exe을 대체해야 한다.
2.7 make를 c:\msys\1.0에 압축을 풀어 놓는다.
: make.exe를 대체한다.
2.8 msys.bat를 수정한다.
: c:\msys\msys.bat를 열어 첫머리에
call “C:\Program Files\Microsoft Visual Studio 8\VC\bin\vcvars32.bat”

3단계 : FFMpeg statically build

3.1 : 시작 메뉴->Programs->MinGW->MSys->msys를 실행한다.
3.2 : command 창에서
cd /C/work/ffmpeg
: folder 이동
./configure –enable-memalign-hack –extra-cflags=”-fno-common”
: configure 실행 ( 좀 걸림 )
make
: make 실행 ( 꽤 걸림 )
ffmpeg.exe 생성
make install
: make install 실행
: c:\msys\1.0\local\bin\ffmpeg.exe에 copy되어진다.

(참고로 특정 Codec만 Compile하고 싶을 경우의 예제)
./configure –disable-encoders –disable-muxers –disable-parsers –disable-decoders –disable-demuxers –enable-shared –enable-libfaad –enable-gpl –enable-pp –enable-parser=h264 –enable-decoder=h264 –enable-demuxer=h264 –enable-parser=aac –enable-demuxer=aac –enable-decoder=libfaad –enable-parser=mpeg4video –enable-parser=mpegaudio –enable-parser=mpegvideo –enable-demuxer=mpegps

 

4단계 : FFMpeg dll version build
4.1 : 시작 메뉴->Programs->MinGW->MSys->msys를 실행한다.
4.2 : command 창에서
cd /C/work/ffmpeg
: folder 이동
make distclean
: 이전의 중간 file을 제거함.
./configure –enable-shared –disable-static –enable-memalign-hack –extra-cflags=”-fno-common”
: configure 실행 ( 좀 걸림 )
make
: make 실행 ( 꽤 걸림 )
ffmpeg.exe 생성
make install
: make install 실행
: c:\msys\1.0\local\bin\ffmpeg.exe에 copy되어진다.
: dll도 C:\msys\1.0\local\bin\에 copy되어진다.

5단계 : MSVC에서 사용하기 위해서 Shared Dll을 Compile할 경우
5.1 : Visual Studio의 command창을 띄운다음.
5.2 : cd -> c:\msys\1.0\
5.3 : msys.bat 실행 후 4단계를 반복한다.

6단계 : MSVC에서 환경 설정
6.1 : Shared Library경우

 

6.2 : Static Library경우

6.3 : Example 1

6.4 : Example 2

※ 참조 URL

http://www.mingw.org/
http://sourceforge.net/projects/mingw/
http://www.ffmpeg.org/
http://www.inb.uni-luebeck.de/~boehme/using_libavcodec.html
http://ffmpeg.arrozcru.org/wiki/index.php?title=Main_Page

블로그 이미지

맨오브파워

한계를 뛰어 넘어서..........

,

1. MinGW 설치

Minimalist GNU for Windows

윈도우 환경에서 GNU 컴파일 환경을 구성해 준다.(cross compile)

http://sourceforge.net/projects/mingw/files/ 에서 설치파일을 다운 받고 설치한다.

설치 옵션 중 C Compiler, C++ Compiler, MSYS Basic System, MinGW Developer Toolkit을 필수로 체크.

설치경로는 원하는 곳 아무데나.

 

2. yasm Assembler 설치

asm 컴파일러로 MinGW 시스템에 lilbrary형태로 설치한다.

http://yasm.tortall.net/Download.html 여기서 시스템에 맞는 exe파일을 다운받는다.

ex) 시스템이 64bit windows라면 Win64.exe 다운

이름을 yasm.exe로 변경하고 MinGW설치 폴더(C:\MinGW\msys\1.0\bin) 위치에 설치(복사)

 

3. nasm 설치

yasm과 마찬가지로 asm 컴파일러

http://www.nasm.us/pub/nasm/releasebuilds/2.10rc8/win32/ 에서 zip파일을 다운받고 압축을 푼다.

압축을 푼 파일에서 nasm.exe 파일과 ndisasm.exe 파일을 MinGW설치 폴더(C:\MinGW\msys\1.0\bin) 위치에 설치(복사)

 

4. pthread library 설치

ftp://sourceware.org/pub/pthreads-win32 에서 pthreads-w32-2-8-0-release.tar.gz 버전을 다운받는다.

압축을 풀고 적당한 폴더명으로 MinGW설치 폴더의 사용자 폴더(사용자 명)에 압축을 푼다.

ex)C:\MinGW\msys\1.0\home\사용자 명\pthread

MinGW shell을 실행한다. (시작-프로그램-MinGW-MinGW Shell 실행)

실행 했을때 시작 위치는 내 홈디렉토리(C:\MinGW\msys\1.0\home\사용자 명)다.

앞으로는 모두 여기를 기준으로 설명함.

pthread library 소스가 복사된 위치로 이동.

make clean GC 입력 후 엔터(pthread library를 컴파일 한다.)

다음을 차례로 입력한다. (pthread library를 설치)

cp pthreadGC2.dll /lib

cp pthreadGC2.dll /bin

cp pthreadGC2.dll /lib/pthread.dll

cp pthread.h sched.h /local/include

 

5. x264 빌드

H.264 비디오 인코더 중 하나로 ffmpeg내부에서 외부 라이브러리로 사용된다.

http://www.videolan.org/developers/x264.html 여기서 다운로드 후 압축을 풀고

4번의 pthread 설치와 동일한 방식으로으로 MinGW폴더의 적절한 사용자 폴더에 복사한다.

마찬가지로 MinGW shell에서 설치된 폴더로 이동하여 다음을 차례로 입력한다

./configure --enable-shared --disable-asm (빌드 준비)

make (빌드)

make install (설치)

 

6. SDL 설치

ffplay(플레이어)에서 화면 출력을 위해 필요한 라이브러리.

최종적으로 FFMpeg 빌드 후 ffplay가 생성되지 않는다면 SDL이 제대로 설치됐는지 확인.

http://www.libsdl.org/download-1.2.php 에서 Source Code 항목중 xxx.gz 다운

MinGW의 사용자 폴더에 적절한 이름의 폴더명으로 압축을 풀고 아래를 차례로 실행

./configure

make

make install

 

7. ffmpeg 빌드

여기까지는 준비 단계였고 본격적으로 ffmpeg을 빌드한다.

http://ffmpeg.mplayerhq.hu/download.html 에서 가운데쯤 보이는

FFmpeg Repository Snapshots 링크를 이용해 소스를 다운받는다. (굳이 check out받을 필요는 없음)

4, 5번 과정에서 했던것과 동일하게 MinGW의 사용자 폴더에 적절한 폴더명으로 생성해 복사한다.

마찬가지로 MinGW Shell을 이용해 복사된 폴더로 이동하고, 다음을 차례로 입력한다.

※ ./configure 명령에서 많은 옵션을 줄 수 있다.(코덱 추가/제거 등..) 사용가능한 옵션은 ./configure /help 로 확인

./configure --enable-shared --enable-static --enable-swscale --target-os=mingw32 --enable-gpl --enable-pthreads --enable-libx264 --extra-cflags="-I/local/include" --extra-ldflags="-L/local/lib" --enable-memalign-hack (빌드 준비, 5분 정도 소요됨)

make (빌드, 10분 정도 소요됨)

make install (설치)

 

7. 참고

http://shawnpark.tistory.com/26

http://www.cyworld.com/soinho/7810504 (거의 여기 내용)

http://www.videolan.org/developers/x264.html (x264 관련)

http://ffmpeg.mplayerhq.hu/index.html (ffmpeg 공식 사이트)

http://sourceware.org/pthreads-win32/(pthread - win32)

http://www.libsdl.org/ (SDL)

 

블로그 이미지

맨오브파워

한계를 뛰어 넘어서..........

,

0. ffmpeg source export by SVN   svn://svn.ffmpeg.org/ffmpeg/trunk

1. download "MinGW"  http://sourceforge.net/projects/mingw/files/ 

2. MinGW설치     c,c++컴파일러와(c++은 안해도 될듯하지만) MSYS포함

 

3. add Path   환경변수에 추가

C:\MinGW\msys\1.0\bin

C:\MinGW\bin

 

4.http://yasm.tortall.net/Download.html 에서 적당한 yasm을 다운.

C:\MinGW\msys\1.0\bin에 넣는다.

이때 파일의 이름을 yasm.exe로 해준다.

 

5. export한 ffmpeg을 C:\MinGW\msys\1.0로 이동(혹은 복사)

 

6.C:\MinGW\msys\1.0\msys.bat 수정

맨 윗줄에 추가

call "C:/Program Files (x86)/Microsoft Visual Studio 10.0/VC/bin/vcvars32.bat"

 

7.msys.bat 실행

cd /MinGW/msys/1.0/ffmpeg

 

// 컴파일 실패(ffmpeg-1.1.2)

./configure --enable-shared --enable-memalign-hack --extra-cflags=-U__STRICT_ANSI__ 

 

// 컴파일 성공(ffmpeg-1.1.2 : H264만 빼내는 방법)

./configure --disable-doc --enable-shared --disable-static --disable-ffmpeg --disable-ffplay --disable-ffprobe --disable-ffserver --disable-avdevice --disable-encoders --disable-network --disable-protocols --disable-decoders --disable-parsers --enable-decoder=h264 --enable-parser=h264 --disable-filters --disable-yasm --disable-muxers --disable-bsfs --disable-devices --disable-demuxers  --disable-avfilter --disable-swscale --enable-memalign-hack --target-os=mingw32 --extra-cflags=-U__STRICT_ANSI__ --extra-libs=-lpthread

 

make
make install
 
8.C:\MinGW\msys\1.0\local  에 파일 생성되어있음.
 
빌드는 여기까지 완료
 
테스트 컴파일
샘플소스 : ffmpeg\libavcodec\api-example.c
포함,라이브러리 path설정
빌드시 inttype.h없다고 에러
압축풀고 include 폴더안에 넣음
소스들 적당히 수정해주고
common.h에
 
#ifdef __cplusplus
 #define __STDC_CONSTANT_MACROS
 #ifdef _STDINT_H
  #undef _STDINT_H
 #endif
 # include <stdint.h>
#endif
 
추가
 
소스에서 헤더 포함은
extern "C" {
#include "libavcodec/avcodec.h"
#include "libavutil/mathematics.h"
}
으로 수정
 

'멀티미디어 > 코덱(Codec)' 카테고리의 다른 글

FFmpeg을 직접 컴파일 해보자  (0) 2017.04.03
ffmpeg window build 빌드하기  (0) 2014.04.09
FFMpeg windows build  (0) 2013.10.28
블로그 이미지

맨오브파워

한계를 뛰어 넘어서..........

,