마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

그루터기님의 FFmpeg강좌를 보고 따라해봤는데.. 이것좀 봐주세요..ㅠㅠ

0 추천
C언어를 전혀 모르는 초짜가 따라하려니 힘드네요..ㅠㅠ
 
ndk-build까지는 되었고 
 
동영상도 제 sd카드 경로에 잘 넣어놨고 했는데
 
09-11 10:14:32.898: E/AndroidRuntime(7377): java.lang.UnsatisfiedLinkError: Native method not found: net.jbong.FFmpegBasic.MoviePlayView.openMovie:(Ljava/lang/String;)I
 
 
openMovie라는 함수가 없다고 나오네요... 
 
분명 이건 C언어쪽으로 봐야될거같은데..
 
일단 궁금점이 있습니다.
 
개발 툴은 이클립스 입니다.
 
지금 프로젝트가 안드로이드 프로젝트인데
 
C/C++프로젝트로 변환해야 하나요?
 
변환해야 한다면 변환하는 법좀 알려주세요.
 
제발 고수님들 도와주십시오..ㅠㅠ
냐옹이류 (1,110 포인트) 님이 2014년 9월 11일 질문

1개의 답변

–2 추천
아래 URL을 참조 해 보세요.

http://bongman.tistory.com/archive/20130213
사악미소 (65,330 포인트) 님이 2014년 9월 11일 답변
링크 감사합니다. 설정은 님이 보내주신거로 끝나서 C++소스를 볼수있게 되었습니다. 혹시 그루터기님 ffmpeg 설명 된거 써보셨는지요? C++소스를 봐보니 openMovie라는 함수가 없는데 어느 소스를 확인해봐야되는지 모르겠습니다. 알고계신가요?
jni/BasicPlayer/interface.c파일의 Java_net_jbong_FFmpegBasic_MoviePlayView_openMovie 를 보시면 됩니다.
저는 음.. 그런 함수가 없는데.. 빌드할때 뭔가 잘못된건가요? 그루터기님 강좌 4번째에는 interface.c 파일에 그런거 입력하라는 말은 없어가지고요..
그리고 추가적으로 그루터기님 소스 완본하고 비교해서 일단 openMovie는 해결됬는데..

09-11 12:21:23.113: D/ActivityThread(1772): setTargetHeapUtilization:0.25
09-11 12:21:23.113: D/ActivityThread(1772): setTargetHeapConcurrentStart:2097152
09-11 12:21:23.133: D/dalvikvm(1772): Trying to load lib /data/app-lib/net.jbong.FFmpegBasic-2/libbasicplayer.so 0x421978d8
09-11 12:21:23.133: W/linker(1772): libbasicplayer.so has text relocations. This is wasting memory and is a security risk. Please fix.
09-11 12:21:23.133: D/dalvikvm(1772): Added shared lib /data/app-lib/net.jbong.FFmpegBasic-2/libbasicplayer.so 0x421978d8
09-11 12:21:23.133: D/dalvikvm(1772): No JNI_OnLoad found in /data/app-lib/net.jbong.FFmpegBasic-2/libbasicplayer.so 0x421978d8, skipping init

다음과 같은 로그가 발생하면서 Toast창으로

open movie error:-2라고 뜹니다..

원인이 멀까요?ㅠㅠ
파일 경로가 달라 open 안 된 겁니다.
파일 경로를 이렇게 잡아놨습니다.

String path = Environment.getExternalStorageDirectory().toString();
        String fname = "/aa.avi";

path 경로는 절대경로로 잡아놨구요.
그 경로에 aa.avi라는 파일이 있어요.

 File f = new File(path+fname);
        Log.e("", "" + f.exists());

혹시나 해서 파일이 있는지 없는지 로그를 찍어봤는데

true로 로그 찍히구요...

잘못된건가요?
...