[android] FFmpeg 빌드 for android with shared-lib

android 2013. 8. 21. 23:11

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

FFmpeg은 동영상을 인코딩/디코딩 해주는 opensource 입니다. 주요 특징은 아래와 같습니다.

라이선스 : LGPL

운영체제 : linux, window, mac-os, android 등 다수 지원 ( 개발은 linux 기반임 )

앞의 FFfast forward를 의미함.

대부분의 동영상 프로그램에서 사용됨. ( 곰플레이어, KMP, MX 플레이어 등 )

 

 

FFmpegandroid 용으로 컴파일 하면서 찾아본 자료 정리와 삽질 내용 정리합니다. 관련 글을 읽어본 후 따라하면 항상 안되는 경우가 발생하는데, 검색해보면 대부분 나오더군요. 제가 격은 문제들은 아래 트러블 슈팅으로 정리 하였습니다.

 

[ 환경 ]

OS : Window에서  Cygwin 으로

Android-NDK : r8e ( 현재는 r9 나와 있네요 )

목적 FFmpegAndroid 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/index.php?mid=android_dev_info&page=1&search_target=tag&search_keyword=FFmpeg&document_srl=1645684

http://www.androidpub.com/index.php?mid=android_dev_info&page=1&search_target=tag&search_keyword=FFmpeg&document_srl=1646144

http://www.androidpub.com/index.php?mid=android_dev_info&page=1&search_target=tag&search_keyword=FFmpeg&document_srl=1646529

http://www.androidpub.com/index.php?mid=android_dev_info&page=1&search_target=tag&search_keyword=FFmpeg&document_srl=1646540

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

 

 

 

 



: