본문 바로가기

iPhone

iPhone iOS6.0 ffmpeg + libx264 (h.264) compile on Mountain Lion

ffmpeg은 H.264디코더는 기본으로 포함되지만, 인코더는 configure시 --enable-libx264 옵션을 추가해 외부에 설치된 x264라이브러리를 사용한다.

libx264를 사용하지 않을 경우에는 문제없지만 x264인코더를 ffmpeg에서 사용할 경우, 

기존의 예제들은 iOS버전이 낮고, OS도 Mountain Lion이 아닌 경우가 많아 제대로 컴파일을 할 수가 없었다.


1. yasm 설치

    http://www.tortall.net/projects/yasm/releases/

    ./configure

    make

    sudo make install


2. x264 설치 (armv7)

    http://www.videolan.org/developers/x264.html

    Mountain Lion부터 설치 경로가 변경되어, configure문구를 수정함


   CC=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc ./configure --host=arm-apple-darwin --sysroot=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.0.sdk --extra-cflags='-arch armv7' --extra-ldflags='-arch armv7 -L/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.0.sdk/usr/lib/system' --enable-pic


   make 

   sudo make install


   /usr/local/에 lib와 include폴더에 설치된 것을 확인 할 수 있다. 만약 설치되지 않았다면, configure를 했던 폴더에 생성된, libx264.a x264.h x264_config.h를 각각 /usr/local/lib, /usr/local/include폴더에 옮겨놓고 사용해도 된다.


3. gas-preprocessor

    https://github.com/yuvi/gas-preprocessor

    gas-preprocessor.pl를 다운로드하여, /usr/sbin/에 복사한다.


4. FFMPEG 설치 (armv7)

    https://ffmpeg.org/download.html#releases

   위의 경로에서 다운받은 파일을 압축해제한 후, 압축해제한 폴더에 3번에서 다운로드 받은 gas-preprocessor.pl 파일을 gas-preprocessor폴더를 생성하여 추가한다. ex) ffmpeg/gas-preprocessor/gas-preprocessor.pl

    

    ./configure --disable-doc --enable-libx264 --enable-encoder=libx264 --enable-gpl --disable-ffmpeg --disable-ffplay --disable-ffserver --enable-cross-compile --arch=arm --target-os=darwin --cc=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc --as='gas-preprocessor/gas-preprocessor.pl /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc' --sysroot=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.0.sdk --cpu=cortex-a8 --extra-cflags='-I/usr/local/include -arch armv7' --extra-ldflags='-L/usr/local/lib -arch armv7 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.0.sdk' --enable-pic --extra-cflags=-I/usr/local/include --extra-ldflags=-L/usr/local/lib


   make

   sudo make install

   

   /usr/local/lib, /usr/local/include에 생성된 라이브러리를 xcode에서 추가 후, 사용하면 된다.