2017.08.22 11:06

Windows에서 Android용으로 FFmpeg 빌드해보기


1. Android Studio에서 NDK 설치

  Setting->Android SDK->SDK Tools에서

  CMake, LLDB, NDK 항목 설치



2. cygwin 설치

  https://cygwin.com/install.html


  a) 설치할때 wget 추가해서 설치


  b) cygwin 실행후 apt-cyg 설치

wget raw.github.com/transcode-open/apt-cyg/master/apt-cyg

chmod +x apt-cyg

mv apt-cyg /usr/local/bin


  c) 필요한 package들 설치

apt-cyg install vim bash gcc-core gcc-g++ gzip make unzip zip automake cmake



3. FFmpeg 다운로드

https://www.ffmpeg.org/download.html

최신 버전 다운로드하니 3.3.3이군.


$NDK/sources/ffmpeg-3.3.3 에 압축해제했다.



4. FFmpeg 컴파일하기 위한 configure 및 스크립트 수정작업

http://blog.naver.com/just4u78/220628698165

에 정리가 잘되어 있어서 참조했는데 1년이 넘어서 그런지 수정할 부분이 좀 있었다.


$NDK/sources/ffmpeg-3.3.3 폴더에 빌드에 필요한 파일을 작업한다.


  a) configure 파일 수정

    파일을 복사해서 configure_android를 하나 생성하고 수정함

#ln_s_default="ln -s -f"

ln_s_default="cp -f"

  ln은 생성된 so 파일의 심볼릭 링크 문제 때문에 윈도우는 cp로 변경해줘야 된다.

  강좌를 보니 경로나 다른 부분도 수정할게 있다고 하는데 안해도 문제는 없는 것 같다.


  b) build_android 스크립트 작성


build_android_so.sh 파일 작업

#!/bin/bash

NDK=d:/devel/sdk/android/ndk-bundle

SYSROOT=$NDK/platforms/android-26/arch-arm/

TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/windows-x86_64

CUR=`cygpath -m $(pwd)`

TEMPDIR=`cygpath -m /tmp`

TMP=`cygpath -m /tmp`

TMPDIR=`cygpath -m /tmp`

function build_one

{

./configure_android \

    --prefix=$PREFIX \

    --enable-shared \

    --disable-static \

    --disable-doc \

    --disable-ffmpeg \

    --disable-ffplay \

    --disable-ffprobe \

    --disable-ffserver \

    --disable-avdevice \

    --disable-symver \

    --cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \

    --target-os=android \

    --arch=arm \

    --cpu=armv7-a \

    --enable-cross-compile \

    --sysroot=$SYSROOT \

    --extra-cflags="-Os -fpic $ADDI_CFLAGS" \

    --extra-ldflags="$ADDI_LDFLAGS" \

    $ADDITIONAL_CONFIGURE_FLAG

make clean

make -j4

make install

}

CPU=arm

PREFIX=$CUR/android/$CPU

ADDI_CFLAGS="-marm"

build_one


    강좌에서는 static 으로 빌드 후에 shared로 빌드하라고 되어 있는데 딱히 그럴 필요는 없는 것 같다.

    경로 부분 확인해서 환경과 맞도록 세팅

    윈도우의 편집기에서 작업했다면 줄바꿈이 CRLF이므로 LF로 변경한다.

    cygwin에서 dos2unix를 이용하던지 notepad++에서 바꾸기로 변경.


    빌드하고 열심히 일하겠지? 하고 작업관리자를 열어봤는데 cpu가 놀고 있네.

    make -j4 옵션 추가해서 cpu를 막 굴려주자.

    사양이 좋다면 숫자를 더 늘려주도록.


    다른 플랫폼의 so를 빌드하고 싶다면

    https://developer.android.com/ndk/guides/standalone_toolchain.html

    참조해서 toolchain, cpu 변경해서 빌드


5. Build 

    cygwin을 실행하고 ffmpeg 폴더로 이동해서

    ./build_android_so.sh 실행


    빌드 시작시의 파일 없다는 메시지는 위에서 수정한 심볼릭 링크 경로 문제이니 무시.

    정상적으로 성공했다면 ffmpeg 폴더 내에 android/arm 폴더가 생성되고 그 안에 header 파일 및 so 파일이 생성된다.



저작자 표시 비영리 변경 금지
신고
Trackback 0 Comment 0


티스토리 툴바