ffmeg 오픈 소스 코드 컴 파일


본문http://www.aurora-x.net/wiki/CompileFFmpegWindows,
얼마 전에 ffempg 와 x264 로 h264 인 코딩 과 디 코딩 Filter 를 개 발 했 습 니 다.이 글 은 제 가 ffmeg 프로젝트 를 컴 파일 하여 인터넷 에서 찾 은 가장 좋 은 문서 입 니 다.그리고 상세 한 것 은 제 가 이 문서 의 한 걸음 한 걸음 씩 하 는 것 입 니 다.처음으로 ffmepg 의 컴 파일 을 순조롭게 완 성 했 습 니 다.만약 당신 도 ffmpeg 을 배우 고 있다 면,이 문 서 를 자세히 배 워 보 세 요.나중에 기회 가 된다 면,나 는 ffmpeg 에 x264 라 이브 러 리 를 포함 하 는 것 을 어떻게 컴 파일 하 는 지,그리고 ffmpeg 으로 h264 디 코딩 Filter 를 어떻게 개발 하 는 지 상세 하 게 쓸 것 입 니 다. 
                                                       지혜 로 운 물고기 2008.3.8
  • copile 과 build 라 는 두 단어 에 대해 본 고 는 이 단 어 를 통일 적 으로 사용 하여 컴 파일 하고 문맥 독자 에 따라 의미 상의 차 이 를 구분 할 수 있어 야 한다.

  • 본 논문 의 목적 은 FFmpeg 이 Windows 에서 의 모든 도움 을 제공 하 는 것 이다.처음에는 MSys+MinGW 시스템 으로 컴 파일 된 손잡이 에 대한 튜 토리 얼 이 었 으 나,이 제 는 프로젝트 에 FFmpeg 를 연결 하 는 방법(C+,C\#)을 추가 하 였 습 니 다.
    우 리 는 Cygwin 에 대해 토론 하지 않 습 니 다.왜냐하면 그것 의 작업 방식 은 기본적으로 유 닉 스 시스템 과 일치 하기 때 문 입 니 다.
    시작 하기 전에 먼저 다음 과 같은 몇 가 지 를 명 확 히 해 야 한다.
  • MSVC++는 C 기준 을 엄 격 히 따 르 지 않 기 때문에 FFmpeg 는 MSVC++로 컴 파일 할 수 없고 앞으로 도 지원 하지 않 을 것 이다.따라서 전체 컴 파일 과정 은 MSys+MinGW 시스템 을 사용 해 야 합 니 다.
  • 동적 링크 라 이브 러 리(dll)를 컴 파일 하 는 것 을 선택 하면 이 라 이브 러 리 들 은 다른 동적 링크 라 이브 러 리 와 마찬가지 로 사용 에 있어 서 차이 가 없습니다.이 라 이브 러 리 를 MSVC++로 연결 하여 프로그램 에 들 어 갈 수 있 습 니 다.이 경우 에 만 MSVC+가 지 원 됩 니 다.

  •  
    목차
  • 소개
  • 예비
  • MSys+MinGW 시스템 준비
  • FFmpeg SVN 방식 으로 획득
  • 컴 파일
  • 링크
  • 컴 파일 FFplay
  • 제3자 창고 에 대한 지원
  • 소개 하 다.
    이 안내 서 는 매우 지루 하 다.만약 당신 이 이전에 오픈 소스 소프트웨어 를 컴 파일 한 경험 이 있다 면,당신 은 이 편 을 읽 어 볼 수 있 습 니 다.그것 은 아주 짧게 많이 해 야 한다.작은 미조정 만 있 으 면 정상적으로 일 할 수 있다.
    그러나 만약 에 문제 가 발생 하면 ffmpeg 의 메 일 링 리스트 에 오 류 를 보고 할 때 먼저 본문 을 자세히 읽 으 십시오.이것 은 매우 직관 적 이 고 많은 부분의 세부 사항 이 너무 상세 할 수도 있 습 니 다.우 리 는 오류 가 발생 할 수 있 는 모든 부분 을 포함 하려 고 합 니 다.만약 당신 이 글 의 방법 을 정확하게 따른다 면,당신 은 윈도 환경 에서 의 FFmpeg 에 아무런 문제 가 없 을 것 입 니 다.
    당신 의 노력 을 다 해 당신 이 직면 한 문 제 를 해결 하 세 요.절대 다수의 FFmpeg 개발 자 들 은 윈도 우 를 사용 하지 않 기 때문에 그들 은 당신 을 도 울 수 없습니다.
     
    준비 하 다.
    이곳 의 내용 은 본문 과 아무런 관계 가 없 을 수도 있 지만,나 는 실수 할 수 있 는 어떤 부분 도 남기 고 싶 지 않다.절대 다수의 사람들 에 게 이 부분 은 뛰 어 넘 을 수 있다.
    압축 을 푸 는 도구 소프트웨어 가 필요 합 니 다."*.tar.gz"와"*.tar.bz2"파일 을 지원 합 니 다.너 는 이 압축 패 키 지 를 지정 한 디 렉 터 리 에 압축 을 풀 어야 할 것 이다.이러한 프로그램 이 있 고 특정 디 렉 터 리 에 압축 을 푸 는 방법 을 알 고 있다 면 MSys+MinGW 시스템 을 준비 하 는 것 을 읽 으 십시오.
    압축 을 풀기 위해 7-Zip 이나 WinRAR 을 사용 하 는 방법 을 보 여 드 리 겠 습 니 다.7-Zip 을 추천 합 니 다.오픈 소스 이 고 무료 이기 때 문 입 니 다.
  • 7-Zip
  • WinRAR

  • MSys+MinGW 시스템 준비
    최신 MSys+MinGW 시스템 가 져 오기.다음 가방 의 버 전 요구 사항 에 주의 하 십시오.
  • 2.0.4 의 bash 를 사용 하지 마 세 요.이것 은 결함 이 있 습 니 다.2.05b 의 bash 는 FFmpeg 를 컴 파일 하 는 데 문제 가 없 지만 3.1 버 전 을 추천 합 니 다.
  • msys-1.0.dll-SNAP-1.0.11-2006.04.23
  • 사용 하기
  • binutils-2.15.91-20040904-1 을 사용 하지 마 십시오.올 바른 링크 가 없습니다.

  • 설정 이 완료 되 었 다 면 다음 부분 을 읽 고 SVN 방식 으로 FFmpeg 를 가 져 오 십시오.그렇지 않 으 면 다음 절 차 를 순서대로 실행 하 십시오.
  • MSys 설치
  • MinGW 설치
  • MinGW 와 MSys 통합
  • SVN 으로 FFmpeg 가 져 오기
    FFmpeg 의 소스 코드 를 가 져 오 는 방법 을 알 고 있다 면 다음 부분 컴 파일 을 읽 으 십시오.
    FFmpeg 의 소스 코드 가 SVN 창고 에 저장 되 어 있 기 때문에 명령 행 프로그램 이나 그래 픽 인터페이스 프로그램 을 사용 해 야 합 니 다.저 는 개인 적 으로 TortoiseSVN 을 추천 합 니 다.Windows 자원 관리자 와 잘 결합 되 어 있 기 때문에 TortoiseSVN 을 사용 하 는 방법 만 소개 합 니 다.
    컴 파일
  • 정적 라 이브 러 리 컴 파일
  • 동적 라 이브 러 리 컴 파일
  • 링크
  • MSVC++로 DLL 라 이브 러 리 연결
  • MSVC++로 output 만 들 기example.exe

  • 컴 파일 FFplay
    SDL-devel 을 미리 설치 해 야 합 니 다.
  • 이 패 키 지 를 압축 해제 합 니 다.
  • lib 의 모든 파일 을 C:/msys/mingw/lib 로 복사 합 니 다.
  • include 의 모든 파일 을 C:/msys/mingw/include 로 복사 합 니 다.
  • 빈 아래 i386-mingw32msvc-sdl-config 를 C:/msys/mingw/bin 으로 복사 하고 sdl-config 로 이름 을 바 꿉 니 다.
  • bin 아래 SDL.dll 을 C:/msys/mingw/bin 으로 복사 합 니 다.
  • SDL.dll   ffplay.exe PATH   ,      。 MSys   mingw/bin PATH     ,    ffplay.exe     。      MSys    ,  SDL.dll    ffplay.exe      。
    

    현재 FFmpeg 를 앞의 방식 으로 정적 또는 동적 으로 다시 컴 파일 할 수 있 습 니 다.configure 스 크 립 트 를 실행 하면 SDL 과 ffplay 를 정확하게 찾 을 수 있 습 니 다.
    제3자 라 이브 러 리 지원
    너 는 동적 라 이브 러 리 부분 을 완전히 이해 해 야 한다.
    FFmpeg 의 바 이 너 리 파일 에 다른 라 이브 러 리 를 추가 할 때 라 이브 러 리 가 정적 으로 연결 되 는 지 동적 으로 연결 되 는 지 먼저 고려 해 야 합 니 다.이것 을 FFmpeg 자체 가 정적/동적 링크 라 이브 러 리 와 혼동 하지 마 십시오.정적 으로 제3자 라 이브 러 리 를 FFmpeg 에 연결 할 수 있 지만 FFmpeg 라 이브 러 리 자 체 는 동적 으로 불 러 온 dll 라 이브 러 리 입 니 다.
    이러한 상황 을 고려 해 보 세 요.xvidcore 를 바 꾸 려 고 하지만 FFmpeg 를 다시 컴 파일 하 기 를 원 하지 않 는 다 면 xvidcore 를 동적 링크 라 이브 러 리 로 컴 파일 해 야 합 니 다.
    그 다음 에 당신 이 고려 해 야 할 것 은 이 제3자 라 이브 러 리 들 이 MSys 시스템 의 어떤 위치 에 설치 되 어 있 는 지 입 니 다.
    대부분의 라 이브 러 리 는 라 이브 러 리 입 니 다.부족 한 경로 에 설치 하면 FFmpeg configure 스 크 립 트 에 추가 인 자 를 전달 해 야 컴 파일 할 때 이 라 이브 러 리 를 찾 을 수 있 습 니 다.이 라 이브 러 리 를 gcc 의 결 성 include 와 lib 경로 에 설치 하면 이 매개 변 수 를 추가 로 지정 할 필요 가 없습니다.동적 라 이브 러 리 와 정적 라 이브 러 리 를 분리 해서 저장 하려 면 경 로 를 지정 해 야 합 니 다.이러한 경 로 는 당신 이 설치 한 라 이브 러 리 의 prefix 라 고 불 립 니 다.
    gcc 가 아 닌 결 성에 라 이브 러 리 를 설치 하여 경 로 를 찾 으 려 면 FFmpeg configure 스 크 립 트 에 이 경로 정 보 를 전달 해 야 합 니 다.
    --extra-ldflags=-L/lib --extra-cflags=-I/include
    

    이와 유사 하 다.
    ./configure --enable-memalign-hack --enable-mp3lame /
                -–extra-ldflags=-L/usr/local/lib /
                --extra-cflags=-I/usr/local/include
    

    MSys 에서 gcc 의 결 성 경 로 는?
    /mingw
    

    또한 이 라 이브 러 리 의 dll 을 설치 하면 프로그램 이 PATH 환경 변수 에서 해당 하 는 dll 을 찾 을 수 있 도록 합 니 다.
    다음 라 이브 러 리 의 설 치 를 보 여 드 리 겠 습 니 다.
  • zlib
  • mp3lame
  • xvidcore
  • libogg
  • libvorbis
  • faad
  • faac
  • amr_nb
  • amr_wb
  • libdts
  • libgsm
  • x264

  • 좋은 웹페이지 즐겨찾기