티스토리 뷰

FFmpeg 플랫폼별 컴파일

  1. Linux 
  2. Android

[문서 이력]

  1. 이 문서는 2013년 10월 28일 수정되었습니다. 
    [추가/변경 내용]
    - LinuxMint 15:olivia(x86-64) 환경에서 FFMPEG 컴파일 방법이 추가되었습니다.
    - 문맥을 정중하게 변경했습니다.

  2. 이 문서는 2013년 8월 9일 최초 작성되었습니다.
    [작성 내용]
    - FFMPEG 안드로이드용 컴파일 방법

1. Linux Compile
리눅스 환경은 레드햇 계열의 CentOS 6.4 버전과 데비안 계열의 LinuxMint로 작성 할 예정이며 이 두가지 버전으로 Fedora나 Ubuntu는 응용 가능 할거라 생각 됩니다. 사실상 리눅스 계열의 설치 방식은 동일하기에 계열별로 다른 점을 추가 작성하도록 하겠습니다.


1-1) 준비 사항

FFmepg 공식 홈페이지에 나와있는 내용대로 git을 사용해 소스를 다운 받습니다.

git이 없는 경우에는 yum이나 apt-get을 활용해서 git을 다운받으셔야 합니다.  


>> Git 다운로드


Linux CentOS 6.4

[user@localhost ~]$ sudo yum install git


LinuxMint

user@computer-desktop ~ $ sudo apt-get install git


LinuxMint는 apt-get 을 다 치지 않고 apt만 쳐도 동작합니다.


>> FFmpeg 소스 다운로드


Linux CentOS 6.4

[user@localhost ~]$  git clone git://source.ffmpeg.org/ffmpeg.git ffmpeg


LinuxMint

user@computer-desktop ~ $ git clone git://source.ffmpeg.org/ffmpeg.git ffmpeg


git은 repo 주소를 입력 후 맨 뒤에 추가하는 인자값이 디렉토리명입니다.


1-2) 컴파일 설정

소스 다운로드가 끝나면 ffmpeg 컴파일을 위해 configure를 실행시켜줍니다. 설치 path 설정이나 기타 사항을 입맛대로 바꾸길 원하시면 추가 옵션 값을 변경하시면 됩니다. 여기서는 생략합니다.


Linux CentOS 6.4

[user@localhost ~]$  cd ffmpeg

[user@localhost ffmepg]$ sudo ./configure


LinuxMint

user@computer-desktop ~ $ cd ffmpeg

user@computer-desktop ~/ffmpeg $ sudo ./configure

15 Olivia 버전의 경우 yasm/asm 오류가 발생하며 설정이 중단됩니다. apt-get update를 거치면 정상적으로 실행됩니다.


설정 작업 도중 실패하는 경우 yum이나 apt 패키지를 업데이트 하거나 오류가 발생하는 특정 라이브러리를 설치해주신 후 재시도 하십시오.


1-3) Make & Make Install

설정 작업이 완료 되면 실제 컴파일을 진행할 차례 입니다.


Linux CentOS 6.4

[user@localhost ffmepg]$ sudo make & make install


LinuxMint

user@computer-desktop ~/ffmpeg $ sudo make & make install


1-4) 결과 확인

ffmpeg 컴파일이 정상적으로 이루어졌는지 확인 하는 차례입니다.


Linux CentOS 6.4

[user@localhost ffmepg]$ ./ffmpeg


LinuxMint

user@computer-desktop ~/ffmpeg $ ./ffmpeg


[출력 결과]

ffmpeg version N-57506-g6baf9c4 Copyright (c) 2000-2013 the FFmpeg developers

  built on Oct 28 2013 18:45:15 with gcc 4.7 (Ubuntu/Linaro 4.7.3-1ubuntu1)

  configuration: 

  libavutil      52. 48.100 / 52. 48.100

  libavcodec     55. 39.100 / 55. 39.100

  libavformat    55. 19.104 / 55. 19.104

  libavdevice    55.  5.100 / 55.  5.100

  libavfilter     3. 90.100 /  3. 90.100

  libswscale      2.  5.101 /  2.  5.101

  libswresample   0. 17.104 /  0. 17.104

Hyper fast Audio and Video encoder

usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...


Use -h to get full help or, even better, run 'man ffmpeg'


2. Android Compile

FFmpeg Android 컴파일은 많은 분들이 진행하고 있으며 git-hub에 다양한 컴파일 가능한 소스를 업로드하고 있습니다. 여기서는 그런 소스중 하나를 선택해서 컴파일을 진행한 내용을 다루고 있으며 실제 안드로이드 기기에 올려 테스트까지 완료 했습니다. 설명해놓은 글에서 문제가 생겼던 부분만 설명 진행하도록 하겠습니다.


[출처]

https://github.com/appunite/AndroidFFmpeg


2-1. 빌드 환경

      • LinuxMint 15, 32bit
      • Android ndk r8
2-2. 트러블 슈팅
프로젝트의 빌드법을 자세히 적어놓았기에 몇가지 설정만 변경하면 build_android.sh를 실행함으로써 간단하게 빌드를 수행 할 수 있습니다. 하지만 프로젝트 자체가 오래전에 시작되었기에 플랫폼 버전 r4를 참고하여 빌드를 진행하고 있기 때문에 현재 나온 r9 버전과는 상이 합니다. 이 때문에 툴체인의 경로를 수정해야 합니다.

※ r8에서 r9로 넘어가면서 변경점이 많기 때문에 r9는 현재로선 비추입니다.
만약 r9로 빌드를 진행해야 한다면 스크립트를 새로 작성해야 하는데 이런 시도를 하고자 한다면 차라리 지금 진행중인 프로젝트를 버리고 FFmpeg 원소스를 이용해 시도하는 편이 좀더 정신적인 건강에 좋습니다.

2-3. 테스트 실행
이 프로젝트는 FFmpeg 소스와 Android 에서 테스트 할 수 있도록 app 소스를 함께 제공하고 있습니다. Eclipse에서 직접 호출 해서 컴파일 하셔도 좋고 ant 가 설치된 환경이라면 ant 빌드를 진행 하셔도 문제 없습니다. 프로젝트 제작자는 ant빌드를 이용했습니다.


다음 업데이트에는 직접 ndk revision에 따라 컴파일 하는 방법을 시도해봐야겠네요.


'Multimedia > FFMpeg' 카테고리의 다른 글

[FFmpeg] 플랫폼별 컴파일  (0) 2013.08.09
댓글
댓글쓰기 폼