ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [펌] FFMPEG Windows Build
    WhatAGreatTutorial! 2008. 3. 18. 19:29
    반응형

    quoted from
    http://hawkshim.tistory.com/entry/펌-FFMPEG-Windows-Build

    ** ffmpeg 사용하면서 제가 격은 문제점 및 설치과정, 빌드 과정을 작성 하였습니다.
    ** 간단하게 사용할 수 있는 클래스를 작성 하였습니다.
    ** 2006년 1월 3일 수정 하였습니다. Visual C++ 과 연동 문제.. 제 컴과 같이 일부 Visual C++의 환경 변수가 제대로 등록되어있는 PC에서만 문제없이 작동하였음

    1. 필요한 프로그램을 구한다
      . ffmpeg 다운로드   - http://ffmpeg.sourceforge.net/
      . MSYS 및 MinGW -
    http://www.mingw.org  (MinGW-3.2.0-rc-3.exe, MSYS-1.0.9.exe)
      . SDL library          - http://www.libsdl.org  (SDL-devel-1.2.9-mingw32.tar.gz for Mingw32)(필요없음)

    2. 설치 및 컴파일
      <컴파일러 설치 및 환경 설정>
      . MinGW-3.2.0-rc-3.exe 을 설치 한다.(이안에  GCC가 포함되어 있다)
      . MSYS-1.0.9.exe를 설치한다.
        설치시  MinGW가 설치된 폴더를 지정해야 한다. (ex> c:/MinGW)
        이렇게 하면 MSYS 실행시 MinGW의 내용이 MSYS로 연결이 된다.

      - bash-3.1-MSYS-1.0.11-snapshot.tar.bz2 를 다운 bash MSYS 를 업데이트 합니다.

      . ffmpeg를 MSYS폴더에 압축을 푼다.(c:/msys/1.0/ 아래에 푼다)

      . C:\msys\1.0 폴더의 msys.bat 을 수정 한다.
        파일을 열어 맨 윗 부분에
        call "C:\Program Files\Microsoft Visual Studio\VC98\Bin\VCVARS32.BAT"
        을 추가 합니다. Visual C++의 프로그램을 이용해서 Visual C++ 용 라이브러리를
        만들기 위해서 입니다. 확인 방법은 link.exe 를  쳐봐서 제대로 실행되면 된것입니다.
        Visual C++이 깔려 있어야 하고, 다른 버전인 경우에는 폴더를 그에 맞게 수정 한다. 

       /** 안해도 되는거 같음 **/

     
    . SDL library 압축을 푼 후 ffmpeg-0.4.9-pre1/SDL 디렉토리 생성후 압축해제된 디렉토리에서  /include, /lib를  ffmpeg-version-../SDL로 복사한다.

      <컴파일에 관련된 설정 파일 수정>
      . ffmpeg-0.4.9-pre1/configure내에서 sdl=no를 sdl=yes로 변경
      . ffmpeg-0.4.9-pre1/Makefile 파일 수정

         FFLIBS=..... 선언된 부분 아래에 다음 코드 입력: SDL_LIBS = -L./SDL/lib -lSDL
         CFLAGS=..에 다음과 같이 include path 추가: -I$(SRC_PATH)/SDL/include

      . 압축해제한 SDL library 의  bin  폴더의 i386-mingw32msvc-sdl-config 파일을
        ffmpeg-0.4.9-pre1  에 복사 후 sdl-config 로 파일명 변경

    /** 안해도 되는거 같음 **/

      <dll 생성하기>
       . ffmpeg-0.4.9-pre1/./configure --enable-shared --enable-memalign-hack 실행
       . ffmpeg-0.4.9-pre1/make 실행

       . 이렇게 하면  avcodec.lib, avcodec.dll, 과 avforamt.lib, avformat.dll 생성

      <빠진내용 - 약간의 꽁수>

       . 다 한다음에 프로그램작성을 위해서는 include 파일이 필요한데 그거가 빠졌네요..
       . 윗 과정은 동일 하고 make install 하면 programfile/ffmpeg에 include 하고 dll 하고 실행
         파일이 복사 됩니다. include 파일을 프로그램 작성하시는곳에 복사하시면되고요..
         프로그램 작성하실때 dll 하고 lib 하고 프로젝트 디렉토리에 같이 있어야 합니다.
         Decompress.h 파일을 보시면 아시겠지만, include 디렉토리를 통째로 프로젝트 디렉토리에 복사하시면 될것입니다.

       . initype.h 문제..
         추가한 헤더파일중에 common.h 가 있을겁니다. 그 파일의 내용중에..
         #ifndef EMULATE_INTTYPES
         #    include <inttypes.h>
         #else

         가 있는데..      #ifndef EMULATE_INTTYPES 이거를      #ifdef EMULATE_INTTYPES
         로 하면 컴파일이 됩니다. 정확한 이유는 파악 못했음.

    3. 간단한 사용 예(VC6)

       . 소스 참조(디코더 객체 생성 후 초기화 함수 실행, 한프레임씩 BRG형태의 이미지 출력)

      . 사용 예

      CDecompress  *pDec;  
      pDec = new CDecompress();  
      pDec->DecoderInit();   
           //디코더가 초기에는 720*480으로 맞추어져 있습니다.  
           //급하게 사용할려다 보니 세밀한부분이 많이 빠졌습니다.  
           //여기까지 하면 코덱을 사용하기 위한 준비는 끝난것이고 이제부터  
           //디코딩을 하면 됩니다.  
      LPBYTE pImage; //디코딩된 이미지의 주소  
      unsigned Buf[1024*64];  
      int BufLen;  

      한 프레임에 대한 데이터를 Buf에 저장을 합니다. BufLen은 그 길이.. 즉 바이트 수이고,  
      한 프레임에 대한 데이터가 다 모아지면  
       
      pImage = pDec->DoDecoding(Buf, BufLen);   
            //게 합니다. 그러면 디코딩된 이미지의 주소가 pImage에  
           //할당 됩니다.(계속 그 주소는 같음, delete 하지마세요..)  
           //RGB 형태의 Bitmap데이터가 생성이 됩니다.  
           //DDraw나 그냥 Bitmap 출력하는 구문을써서 화면에 출력해  
           //주면 끝 입니다.
       

      반응형

      댓글

    Designed by Tistory.