1.
다운로드 MinGW
http://sourceforge.net/projects/mingw/files/
mingw-get-inst-20101030.exe (796.0 KB)
2. MinGW 설치
인스톨 옵션 : 풀 인스톨
설치 경로 : C:\MinGW
3.
다운로드 ffmpeg
http://www.ffmpeg.org/download.html#release
ffmpeg-0.6.1.tar.bz2
ffmpeg 작업 디렉토리에 압축해제
– MinGW Shell의 홈 디렉토리에 풀었다.
C:\MinGW\msys\1.0\home\MYHOME
C:\MinGW\msys\1.0\home\MYHOME\ffmpeg-0.6.1\ffmpeg-0.6.1
4.
MinGW Shell 실행, ffmpeg 컴파일
$ ./configure --enable-memalign-hack
--enable-shared --enable-swscale
--enable-postproc --enable-gpl
--enable-avfilter --enable-avfilter-lavf
$make
$install
5.
헤더파일 설치 경로
6.
inttypes.h, stdint.h
다운로드 및 복사
헤더파일 경로에 같이 위치 시킨다.
7. 라이브러리 설치 경로
8.
SDL 다운로드
http://www.libsdl.org/download-1.2.php
Development Libraries:
Win32:
SDL-devel-1.2.14-VC6.zip (Visual C++ 6.0)
9.
압축 해제 및 복사
라이브러리는 ffmpeg 라이브러리와 동일한 위치에 복사
헤더 파일은 ffmpeg 헤더파일과 동일한 위치에 복사
10. MSVC 6.0 프로젝트 생성
Win32 Console Application 선택 및 Project name ,
Location 를 입력한다.
Location 은 ffmpeg 디렉토리로 하였다.
11. Cpp 파일을 c 파일로 수정 ( Blee2.cpp
-> blee2.c )
프로젝터 파일에 ffplay.c, cmdutils.c 포함한다.
12. 설정
Project settings -> C/C++탭, Precompiled Headers
-> Not using precompiled headers
Project Settings -> Link탭 라이브러리 추가
avcodec-52.lib avdevice-52.lib
avformat-52.lib avutil-50.lib
swscale-0.lib postproc-51.lib
avfilter-1.lib SDL.lib
11. 헤더파일과 라이브러리 경로 추가
Tools -> Options -> Directories
Include files 추가
C:\MINGW\MSYS\1.0\LOCAL\INCLUDE
C:\MINGW\MSYS\1.0\INCLUDE
C:\MINGW\MSYS\1.0\LOCAL\BIN
13. 소스 수정
//-----------------------------------------------
// ffplay.c
//-----------------------------------------------
#include <windows.h>
void usleep(unsigned long usec)
{
Sleep(usec/1000);
}
#define rint(x) (floor((x)+0.5))
//
DECLARE_ALIGNED(16,uint8_t,audio_buf1)[(AVCODEC_MAX_AUDIO_FRAME_SIZE *
3) / 2];
//
DECLARE_ALIGNED(16,uint8_t,audio_buf2)[(AVCODEC_MAX_AUDIO_FRAME_SIZE *
3) / 2];
uint8_t audio_buf1[(AVCODEC_MAX_AUDIO_FRAME_SIZE * 3) / 2];
uint8_t audio_buf2[(AVCODEC_MAX_AUDIO_FRAME_SIZE * 3) / 2];
//static int
wanted_stream[AVMEDIA_TYPE_NB]={
//
[AVMEDIA_TYPE_AUDIO]=-1,
//
[AVMEDIA_TYPE_VIDEO]=-1,
//
[AVMEDIA_TYPE_SUBTITLE]=-1,
//};
static int
wanted_stream[AVMEDIA_TYPE_NB]={
0,
-1,
-1,
0,
-1
};
//
ap->time_base= (AVRational){1, 25};
ap->time_base.num
= 1;
ap->time_base.den
= 25;
//uint64_t size= url_fsize(cur_stream->ic->pb);
int64_t
size=
url_fsize(cur_stream->ic->pb);
// FFTSample data[2][2*nb_freq];
FFTSample
data[2][4096];
int main(int argc, char **argv) -> int
ff_main(int argc, char **argv)
//#if !defined(__MINGW32__) && !defined(__APPLE__)
//
flags |= SDL_INIT_EVENTTHREAD; /* Not supported on Windows or Mac OS X
*/
//#endif
//-----------------------------------------------
// libavutil\common.h
//-----------------------------------------------
#define inline __inline
14.
라이브러리 복사
15. 빌드 및 실행 화면
16. 기타
정리하지 못한 문제도 있을 것임.
다음은 투토리얼을 따라 해 보고, 정리 되면, 문서를 만들어 볼 계획이다.