분류 전체보기 (10)
프로그래밍 (9)
사진 (0)
Top10 LIST (1)
ColorSwitch 00 01 02
▣  프로그래밍/FFMPEG - 해당되는 글 4건

자 이제 FFMPEG을 윈도우즈에서 사용할 준비가 완료되었습니다. 후후후
이제 비주얼 스튜디오를 이용하여 프로그램을 만들어야 겠죠 +_+
저는 VS Dot Net 2003에서 만들었습니다.
프로그램은 졸업 논문의 부분으로 부가기능으로 해놔서 공개하기가 좀 ㅡㅡㅋ

여기서는 자신의 프로젝트에 생성된 dll 사용 방법과 extern 방법 그리고 사용시 발생하는 오류중에 몇가지 생각나는데로 해결 방법만을 살짝 적어볼랍니다 ^^


1.      Visual Studio dll 사용 방법

     생성된 솔루션을 열고 목록에서 프로젝트->프로젝트명의속성

     C/C++ 항목 -> 일반에서 추가 디렉토리 C:\msys\local\include

     링커 항목 -> 일반에서 추가 라이브러리 디렉토리 c:\msys/local\bin

     링커 항목 ->입력에서 추가 종속성 avutil,avcodec,avformat lib 추가 (참고. 보통 avutil.lib, avcodec.lib, avformat.lib로 생된다고 하나 lib dll의 이름이 뒤에 버전이 붙을 수 도 있으니 확인 후 입력)

     이 후 필요한 헤더 파일 및 동적 링크는 알아서 추가 시켜야 함.

2.      프로젝트 예

#include <math.h>

#include <ffmpeg/inttypes.h>

#include <stdint.h>


extern "C" __declspec(dllimport) void av_free(void *);

extern "C" __declspec(dllimport) int avcodec_close(struct AVCodecContext *);

extern "C" __declspec(dllimport) int avcodec_encode_audio(struct AVCodecContext *avctx, uint8_t *buf, int buf_size, const short *samples);

extern "C" __declspec(dllimport) int avcodec_open(struct AVCodecContext *avctx, struct AVCodec *codec);

extern "C" __declspec(dllimport) AVCodecContext *avcodec_alloc_context(void);

extern "C" __declspec(dllimport) AVCodec *avcodec_find_encoder(enum CodecID id);

extern "C" __declspec(dllimport) int avcodec_decode_audio(struct AVCodecContext *avctx, int16_t *samples,int *frame_size_ptr, uint8_t *buf, int buf_size);

extern "C" __declspec(dllimport) AVCodec *avcodec_find_decoder(enum CodecID id);

extern "C" __declspec(dllimport) int avcodec_encode_video(struct AVCodecContext *avctx, uint8_t *buf, int buf_size, const struct AVFrame *pict);

extern "C" __declspec(dllimport) AVFrame *avcodec_alloc_frame(void);

extern "C" __declspec(dllimport) int avcodec_decode_video(AVCodecContext *avctx, AVFrame *picture, int *got_picture_ptr, uint8_t *buf, int buf_size);

extern "C" __declspec(dllimport) void avcod  ec_register_all(void);

extern "C" __declspec(dllimport) void avcodec_init(void);


#include <ffmpeg/avcodec.h>

#include <ffmpeg/avformat.h>

#include <ffmpeg/avutil.h>

#define INBUF_SIZE 4096

è  이런 식으로 사용 각 함수 사용 가능 해 짐.


환경에 따른 많은 오류가 발생한다

오류에 따른 몇가지 처리는 다음과 같이 하면 해결 가능

1.      각 케스팅 타입은 전통 C 타입으로 한다.(void *의 반환 타입 에러)

2.      #define AV_NOPTS_VALUE INT54_C(0x8000000000000000)에러 메시지는

#define __STDC_CONSTANT_MACROS를 추가 하여 준다.

3.      Inttypes.h 파일 요구는 위의 과정에서 확인한다.

4.      Enum 에러는 정수 형태로 대입이 불가능 하므로 enum CodecID 에서의 CodecID를 통하여 해당 정수를 캐스팅 해 준다.

5.      Snprintf _snprintf로 변경 해 준다.

제가 프로젝트를 작성하면서 제작한 메뉴얼을 4단계로 나누어서 이렇게 올려보았습니다 ^^; 막막한 프로그래밍에 한줄기 빛이 되시길 희망합니다 ^^ 그럼 다들 즐프~

    이전 댓글 더보기
  1. Nigeria Directory 2012.03.28 03:47 신고 수정/삭제 댓글에댓글달기

    Due to Nigeria Directory today I can to detect the firm I look for in minutes.

  2. debt management company 2012.04.04 23:40 신고 수정/삭제 댓글에댓글달기

    This debt management company will handle your present debt position directly.

  3. Yosemite cabins 2012.04.11 02:57 신고 수정/삭제 댓글에댓글달기

    Whenever my friends and I are dead beat cuz of spending lots of time in the large metropolis, we rent Yosemite cabins for several days so as to pick ourselves up.

  4. Junior Golf Tour 2012.04.12 01:56 신고 수정/삭제 댓글에댓글달기

    The Rocky Mountain Junior Golf Tour struggles to supply younger golf players with good tournaments conducted in a prudent mode.

  5. Chimney Sweep Des Moines 2012.04.12 02:07 신고 수정/삭제 댓글에댓글달기

    The Chimney Sweep Des Moines specialists will do all of your required servicing, thereby preventing you from the detriments of a chimney fire.

  6. Denver Carpet Cleaning 2012.04.12 02:19 신고 수정/삭제 댓글에댓글달기

    Denver Carpet Cleaning experts will do everything in their power to get rid of blood splotches straight away.

  7. Colorado junior golf association 2012.04.12 03:41 신고 수정/삭제 댓글에댓글달기

    Colorado junior golf association offers each and every sharer to take part in effectively organized tourneys.

  8. Denver Air Duct Cleaning 2012.04.12 03:41 신고 수정/삭제 댓글에댓글달기

    Denver Air Duct Cleaning duty won’t take much of your time and is effectively sanitary and routine procedure.

  9. Chimney Cleaning Des Moines 2012.04.12 03:42 신고 수정/삭제 댓글에댓글달기

    The Chimney Cleaning Des Moines craftsmen are in place to take the crucial measures to reduce the chimney emergencies presently.

  10. Colorado springs 2012.04.12 05:46 신고 수정/삭제 댓글에댓글달기

    Colorado springs carpet restoration organization will happily make your nappy floor coverings coruscate like new ones.

  11. Air Duct Cleaning Des Moines 2012.04.12 06:15 신고 수정/삭제 댓글에댓글달기

    This Air Duct Cleaning Des Moines will help you destroy all the aeronautical germs which are slipping all around the building.

  12. Denver chimney sweep 2012.04.13 03:05 신고 수정/삭제 댓글에댓글달기

    Denver chimney sweep will make your cozy furnace area a safe corner for meditation and rest.

  13. Carpet cleaning Phoenix 2012.04.13 03:05 신고 수정/삭제 댓글에댓글달기

    The Carpet cleaning Phoenix organization will help you to effortlessly get rid of ingrained dust and dirt improving good life circumstances.

  14. carpet cleaning Phoenix AZ 2012.04.13 04:41 신고 수정/삭제 댓글에댓글달기

    The out-of-doors games you enjoy require professional services of carpet cleaning Phoenix AZ company in order to stimulate the investment you made in your dwelling.

  15. Travel planning 2012.04.24 04:35 신고 수정/삭제 댓글에댓글달기

    Travel planning will be less problematic due to information you can find on this website.

  16. song contest 2012.04.24 23:34 신고 수정/삭제 댓글에댓글달기

    Thank you for the chance of competing in the online song contest as it's the best way for the begginers of making sure their skills.

  17. satellite Internet 2012.04.28 22:55 신고 수정/삭제 댓글에댓글달기

    I am more than satisfied with the rates for the satellite Internet offered by this provider.

  18. heating 2012.05.09 00:13 신고 수정/삭제 댓글에댓글달기

    I've cooperated with a lot of companies that propose heating or air conditioning services, and may tell with the whole confidence that on this web page you'll find the most reasonable options.

  19. office supplies 2012.05.14 23:01 신고 수정/삭제 댓글에댓글달기

    If you do not have a clue where to order office supplies, visit this website. They offer not only affordable rates but immediate delivery, as well.

  20. body detoxification and rejuvenation 2012.05.14 23:02 신고 수정/삭제 댓글에댓글달기

    I'm planning to have my R and R in India and for certain visit your center. I have heard a lot about your body detoxification and rejuvenation cure and desire to undergo it too.

이제 라이브러리도 다 설치가 완료되었으니 FFMPEG을 configure 해봅시다! +_+

1.      FFMPeg 설치

     shared (dll 생성) 컴파일시 visual studio 경로 지정 필요(중요함)

                         i.         cd /c/msys 경로 이동

                        ii.         vi msys.bat

                       iii.         첫줄에 call "경로"          ex 비주얼 스튜디오 6.0의 경우) call "c:\Program Files\Microsoft Visual Studio\VC98\Bin\VCVAR32.BAT"

     FFMpeg 설치

                         i.         Cd /c/ffmpeg

                        ii.         ./configure --enable-shared --disable-static --enable-libmp3lame --enable-libogg

--enable-libvorbis --enable-libxvid --enable-gpl --enable-memalign-hack

--extra-cflags=-l/local/include --extra-ldflags=-L/local/lib

                       iii.         Make

                       iv.         make install

     패스 설정 (안해주면 xvidcore.dll 찾지 못함)

                         i.         Cd /c/msys/etc

                        ii.         Vi profile

                       iii.         Path /mingw/lib 추가

     inttype 헤더파일 추가

                         i.         inttypes.h , stdint.h 다운로드후 c:\msys\local\include에 복사

VS에서 DLL을 첨부해서 사용해야 하기에 shared 옵션은 매우 중요합니다 +_+
이를 위해 경로 설정이 필요한데 1번 과정의 call "경로" 틀리시면 컴파일 하는도중 오류가 발생합니다 -0-

자 그럼 이제 테스트를 해 봅시다.

1.      SDL 추가(ver. 1.2.11) -> ffplay 사용위해 설치 필요없을시 설치 필요 없음

     다운로드 후 압축해제 후 c:\msys\local에 복사

2.      FFMPEG 테스트

     ffmpeg -i test1.asf -ar 22050 -s 480x360 -r 800 -f flv test2.flv

     되면 FFMPEG 설치 완료

asf파일을 하나 구하셔서 test1으로 이름을 변경하시고 하세요! test2.flv가 생성되었다면 성공적으로 설치가 되신겁니다 ^^ 안되신다면....중간에 어떤 문제가 발생하신 겁니다 -0-

  1. vcchars32.bat 2010.02.08 19:12 신고 수정/삭제 댓글에댓글달기


FFMPEG configure 옵션에 사용될 라이브러리 설치 목록 및 설치 방법 입니다 ^^
더 필요하신 옵션 목록이 있으시면 추가하셔도 되구요~ 아래 목록 순서대로 설치 하시지 않을 경우 간간히 에러가 날때도 ㅡㅡㅋ 왜 그런지는 각자 파악하세요 ㅋㅋ

1.      Ffmpeg 옵션에 사용할 라이브러리 설치 (2007.7.20일 설치 시 버전 기준)

     Directx 헤더 설치 (ver.7)

                         i.         Tar –xvzf dx7headers…

                        ii.         Mv *.h c:/mingw/include

     Nasm 설치 (ver. 0.99.01)

                         i.         Tar xvzf nasm…

                        ii.         ./configure –prefix=c:/mingw

                       iii.         make

                       iv.         make install

     libiconv 설치 (ver. 1.11)

                         i.         tar xvfz libiconv...

                        ii.         ./configure --prefix=c:/mingw --disable-shared

                       iii.         Make

                       iv.         make install

     freetype2 설치 (ver.2.3.5)

                         i.         tar xvfz freetype-2...

                        ii.         ./configure --prefix=c:/mingw --disable-shared

                       iii.         Make

                       iv.         make install

     zlib 설치 (ver. 1.2.3)

                         i.         tar xvzf zlib...

                        ii.         ./configure --prefix=c:/mingw

                       iii.         Make

                       iv.         make install

     lame 설치 (ver. 3.97)

                         i.         tar xvzf lame...

                        ii.         ./configure --prefix=c:/mingw --disable-shared --disable-decoder

                       iii.         Make

                       iv.         Make install

     ogg 설치 (ver. 1.1.3)

                         i.         tar zxvf libogg...

                        ii.         ./configure --prefix=c:/mingw --disable-shared

                       iii.         Make

                       iv.         make install

     vorbis 설치 (ver. 1.1.2)

                         i.         tar zxvf libvorbis...

                        ii.         ./configure --prefix=c:/mingw --disable-shared

                       iii.         Make

                       iv.         make install

     libdts 설치 (ver. 0.0.2) -> ffmpeg 최신버전에 포함, dts의 최신버전 필요시 설치

                         i.         tar zxvf libdts...

                        ii.         ./configure --prefix=c:/mingw --disable-shared

                       iii.         Make

                       iv.         Make install

     gsm, faac, faad2, libdca 설치 (최신 버전으로)

                         i.         bunzip2 ..

                        ii.         tar xvf ...

                       iii.         /usr 폴더 안의 모든 파일 c:/mingw 로 이동

     x264 설치(안됨) dct-a.asm 오류

                         i.         ./configure --prefix=c:/mingw

                        ii.         64비트 지원 안된다고 하는데... 뭔소린지 도통 알 수 없음..

                       iii.         X264 mpeg관련하여 지원하는 것이 많으니 될 수 있다면 설치 바람.

                       iv.         일단 문제 없이 변환 잘됨.

     xvid 설치 (ver. 1.1.3)

                         i.         cd xvid.../build/generic

                        ii.         tar xvzf xvidcore...

                       iii.         ./configure --prefix=c:/mingw --disable-shared

                       iv.         Make

                        v.         Make install

     codecs 설치 (ver. 20061022)-> mplayer에 필요

                         i.         tar xvf essen....

                        ii.         mv *.* c:/mingw/lib/codecs (경로 필요)

     MPlayer 설치 (ver. 1.0rc1) 플레이어 필요시 설치

                         i.         tar xvf MPlayer...

                        ii.         ./configure --with-codecsdir=c:/mingw/lib/codecs

                       iii.         --enable-static --enable-win32 --disable-winsock2

                       iv.         Make

                        v.         Make install

자자 요기 까지 하셨으면, 이제 FFMPEG을 설치해 봅시다.(다음장에서..)

  1. hot scene from bollywood 2008.03.13 06:04 신고 수정/삭제 댓글에댓글달기

    친구는 너의 위치의 현재 팬이 되었다!

  2. sexy nude mothers 2008.05.23 05:10 신고 수정/삭제 댓글에댓글달기

    일! 우수한 감사!

VA Converter(Video and Audio Converter)를 이번기회에 제작해 보았습니다.
말 그대로 Video Codec과 Audio Codec을 마음대로 변경하는 프로그램 입니다.
FFMPEG을 사용해서 윈도우즈에서 컴파일 하여 사용 하였습니다.

-FFMPEG 윈도우즈 컴파일 환경 만들기-

1.      MinGW Msys and MsysDTK 설치

     http://www.mingw.org를 통해 MinGW, Msys, MsysDTK를 다운받는다.

     MinGW를 설치한다. (설치 경로 c:\mingw)

     Msys를 설치한다. (설치 경로 c:\msys)

     Msys 설치 중 MinGW가 설치 되어 있는지 확인 (MinGW가 설치된 경로를 입력)

     MsysDTK를 설치한다. (설치 경로 C:\msysdtk)

     Msys를 구동하여 cd /c/msys/etc로 이동

     Fstab를 수정 ( vi fstab) -> 첫 라인에 c:/mingw /mingw 추가 (패스 설정)

     Profile 수정 (vi profile) -> export PATH=”/msysdtk/bin:$PATH” 추가 (패스 설정)

2.      TortoiseSVN 설치 후 ffmpeg 다운

     설치 후 C:\FFMPEG 폴더를 생성

     C:\FFMPEG 폴더로 이동후 마우스 우 클릭 SVN Checkout 클릭

     URL of repository svn://svn.mplayerhq.hu/ffmpeg/trunk 입력 -> 확인

이렇게 우선 윈도우즈에 가상 리눅스 환경을 만들어 줍니다 ^^
FFMPEG 을 configure 에 사용할 옵션을 위해 라이브러리를 설치해 주셔야 하는데요
다음장을 확인해 주세요!

  1. frases celebres vida 2008.03.13 05:54 신고 수정/삭제 댓글에댓글달기

    좋은 위치는 그것 찾아본 즐겼다!

recent replies
  • I'm planning..
        by body detoxification and rejuvenation 2012
recent trackbacks
Admin : New post
BLOG main image
프로그래밍 정보 공유를 목적으로 하는 블로그입니다.
2 34,148
  rss skin by  m22m
tistory 티스토리 가입하기!

티스토리 툴바