[android] FFmpeg 빌드 for android with shared-lib
android 2013. 8. 21. 23:11FFmpeg은 동영상을 인코딩/디코딩 해주는 opensource 입니다. 주요 특징은 아래와 같습니다.
라이선스 : LGPL
운영체제 : linux, window, mac-os, android 등 다수 지원 ( 개발은 linux 기반임 )
앞의 FF는 fast forward를 의미함.
대부분의 동영상 프로그램에서 사용됨. ( 곰플레이어, KMP, MX 플레이어 등 )
FFmpeg을 android 용으로 컴파일 하면서 찾아본 자료 정리와 삽질 내용 정리합니다. 관련 글을 읽어본 후 따라하면 항상 안되는 경우가 발생하는데, 검색해보면 대부분 나오더군요. 제가 격은 문제들은 아래 트러블 슈팅으로 정리 하였습니다.
[ 환경 ]
OS : Window에서 Cygwin 으로
Android-NDK : r8e ( 현재는 r9 나와 있네요 )
목적 FFmpeg을 Android 용 shared-lib 으로 컴파일 ( static 이었으면 좋았을 것을 )
FFmpeg 버전 : 1.2.2 (http://ffmpeg.org/download.html )
[ 관련 글 ]
Android 동영상 플레이어 개념
http://helloworld.naver.com/helloworld/8794
Android-pub 강좌
http://www.androidpub.com/1690105
*vec.io 의 글 (영문) :
https://vec.io/posts/how-to-build-ffmpeg-with-android-ndk
[ 트러블 슈팅 ]
l Config 실패할 경우
원인 : 줄변경하기 위해서 \ 을 사용하는데 \ 뒤에 space 가 있으면 안됨.
이것땜에 시작부터 2~3시간 삽질함. ㅠ
l config 성공하고 make 실패시
원인 : 생성된 config.h 헤더파일에 줄변경 문자가 포함된 경우가 있음.
참고 : http://stackoverflow.com/questions/14199888/cygwin-make-errors-ffmpeg-compile-with-ndk
Ultra-editor 에서도 않보임. 그냥 eclipse에서 보면 줄변경 되어 있음. 콘솔인경우 VI 에디터로 바로 지우면 편리함. 계속 삽질 ㅠ
l share파일이 libavcodec.so.54 이렇게 생성될 때
원인 : 1.2.2 버전의 share 모드 스크립트가 그렇게 생겨 먹었음.
참고 :
http://stackoverflow.com/questions/14521588/native-libraries-so-xy-failing-to-link-at-runtime
http://stackoverflow.com/questions/14522510/simple-string-substitution-in-makefile/
수정 : 참고는 그냥 참고일뿐, library.mak 파일에서 link 만드는 부분 수정하면 됨. ( install-lib$(NAME)-shared 로 검색 ) 그리고 configure 파일에서 SLIBNAME_WITH_MAJOR 찾아서 수정하면됨. 삽질은 멈추지 않는다. ㅠ
[ 마치면서 ]
윈도우에서 하다가 막혀서 맥에서 해보니 맥이 android NDK 개발하는데 더 좋은 환경인 것 같습니다. 주변에서도 맥에서 android 개발하는 사람들이 꽤 되던데 저도 고려중에 있습니다.
[ 기타 참고 ]
https://code.google.com/p/javacv/downloads/list