Android FFmpeg 빌드
구축환경
- android ndk r16b
- ffmpeg 4.0.3
이 블로그를 작성하는 2019년 2월 20일 날짜의 ffmpeg 의 최신버전은 4.1 이다.
그러나... 빌드 오류를... 못잡았다.... ㅜㅜ
나중에 최신버전으로 빌드 하면, 업데이트 하는 것으로...
1. NDK 설치
2. FFmpeg 다운로드 및 설정
1) https://www.ffmpeg.org/download.html 에서 다운로드를 받은 후에 압축을 푼다.
버전은 4.0.3 으로 다운받았다.
깔끔한 환경 설정을 위해 $(Android SDK path)/ndk-bundle/sources/ 경로를 추천한다.
2) 압축을 푼 다음, $(Android SDK path)/ndk-bundle/sources/ffmpeg-4.0.3/ 경로로 이동하여 configure 파일을 텍스트 편집이 가능한 툴로 열어서 아래와 같이 수정 한다.
1 2 3 4 5 6 7 8 9 10 11 | //해당 부분을 SLIBNAME_WITH_MAJOR='$(SLIBNAME).$(LIBMAJOR)' LIB_INSTALL_EXTRA_CMD='$$(RANLIB) "$(LIBDIR)/$(LIBNAME)"' SLIB_INSTALL_NAME='$(SLIBNAME_WITH_VERSION)' SLIB_INSTALL_LINKS='$(SLIBNAME_WITH_MAJOR) $(SLIBNAME)' //아래와 같이 변경한다. SLIBNAME_WITH_MAJOR='$(SLIBPREF)$(FULLNAME)-$(LIBMAJOR)$(SLIBSUF)' LIB_INSTALL_EXTRA_CMD='$$(RANLIB) "$(LIBDIR)/$(LIBNAME)"' SLIB_INSTALL_NAME='$(SLIBNAME_WITH_MAJOR)' SLIB_INSTALL_LINKS='$(SLIBNAME)' | cs |
3) $(Android SDK path)/ndk-bundle/sources/ 경로에 build_android.sh 파일을 생성하고
아래와 같이 작성한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | #!/bin/bash export NDK=c:/Users/choijaeyong/AppData/Local/Android/sdk/ndk-bundle export SYSROOT=$NDK/platforms/android-28/arch-arm export TOOLCHAIN=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/windows-x86_64 CPU=armv7-a ISYSROOT=$NDK/sysroot ASM=$ISYSROOT/usr/include/arm-linux-androideabi export CUR=`cygpath -m $(pwd)` export PREFIX=$CUR/android/$CPU function build_android { ./android_configure \ --target-os=linux \ --prefix=$PREFIX \ --enable-cross-compile \ --enable-shared \ --disable-static \ --disable-doc \ --disable-ffmpeg \ --disable-ffplay \ --disable-ffprobe \ --disable-avdevice \ --disable-doc \ --disable-symver \ --cross-prefix=$TOOLCHAIN/bin/arm-linux-androideabi- \ --arch=arm \ --sysroot=$SYSROOT \ --extra-cflags="-I$ASM -isysroot $ISYSROOT -D__ANDROID_API__=28 -U_FILE_OFFSET_BITS -Os -fPIC -DANDROID -Wno-deprecated -mfloat-abi=softfp -marm" \ --extra-ldflags="$ADDI_LDFLAGS" \ $ADDITIONAL_CONFIGURE_FLAG make clean make -j16 make install } build_android | cs |
3. Cygwin 설치 및 '2' 항목의 FFmpeg Build 하기
1) https://cygwin.com/install.html 에 가서 cygwin 을 설치한다.
(설치할 때, 추가 dos2unix 및 gcc-core 포함 시킨다.)
2) Cygwin Terminal 을 실행하여 아래와 같이 입력
1 2 3 4 5 | cd /cygdrive/c/Users/choijaeyong/AppData/Local/Android/sdk/ndk-bundle/sources/ffmpeg-4.0.3 dos2unix android_build.sh ./android_build.sh | cs |
4. 3번 과정까지 잘 따라왔으면, 빌드는 성공?
아쉽게도... 문제가 발생한다.
1) libavcodec 폴더에서 aaccoder.c 파일을 열어서
B0 -> b0
변경
2) libavcodec 폴더에서 hevc_mvs.c 파일을 열어서
B0 -> b0
xB0 -> xb0
yB0 -> yb0
변경!
3) libavcodec 폴더에서 opus_pvq.c 파일을 열어서
B0 -> b0
변경!
5. 이제 정말 완료!!!
참고 사이트
1. https://xucanhui.com/2018/07/22/android-ndk-ffmpeg-compile/
2. https://www.jianshu.com/p/484db5ec733f