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

그루터기님 FFmpeg강좌 에러 로그좀 봐주세요..

0 추천
그리고 추가적으로 그루터기님 소스 완본하고 비교해서 일단 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라고 뜹니다..
 
원인이 멀까요?ㅠㅠ
냐옹이류 (1,110 포인트) 님이 2014년 9월 11일 질문
냐옹이류님이 2014년 9월 11일 수정

1개의 답변

+1 추천

BasicPlayer.c 파일을 보시면

if (av_open_input_file(&gFormatCtx, filePath, NULL, 0, NULL) != 0)

return -2;
로 되어 있습니다.  
 
filePath 에 파일이 없어서 오픈 실패 오류가  나온 겁니다. 
 
FFmpegBasic.java 파일의 String fname  에 선언된 파일 경로를 바꿔주세요.
사악미소 (65,330 포인트) 님이 2014년 9월 11일 답변
파일 경로를 이렇게 잡아놨습니다.

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

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

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

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

true로 로그 찍히구요...

잘못된건가요?
AndroidManifest.xml 에 read 퍼미션 넣어주시지 않으셨다면 넣어주세요../
이클립스 android sdk 쓰고 있고 개발환경 윈도우입니다.

    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

퍼미션 이렇게 두개 줬구요...

알려주신건 리눅스 명령어 인거 같은데... 음... 잘 모르겠네요..ㅠㅠ
퍼미션은 맞는듯 하네요.
av_open_input_file 에서 실패하는 경우의 대부분은 파일을 못 읽어서이며,
일부 ffmpeg에서 지원하지 않는 포멧을 재생하려 할 때도 오류가 나긴 합니다.
java api로  read 를 했을 때는 잘 되는지 우선 확인 해 보시구,
/sdcard/aa.avi 와 같이 절대 경로를 넣어서도 해 보세요..
그래도 안된다면, 다른 파일을 넣어 보시던지
int result = av_open_input_file(&gFormatCtx, filePath, NULL, 0, NULL);
if (result != 0)
    return result;
와 같이 해서 나오는 오류코드를 확인 해보세요..
동영상이 플레이 방금 됬다고 또 안되네요 ㅎㅎㅎ 덕분에 많은 도움 되었습니다 감사합니다 ㅠㅠㅠㅠㅠㅠㅠㅠㅠ
...