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

킷캣에서 잘 실행되는 미디어플레이어가 롤리팝에서는 안됩니다. 도움 부탁드립니다.

0 추천
08-11 19:23:48.123  27705-27705/? V/MediaPlayer-JNI﹕ native_setup
08-11 19:23:48.123  27705-27705/? V/MediaPlayer﹕ constructor
08-11 19:23:48.123  27705-27705/? V/MediaPlayer﹕ setListener
08-11 19:23:48.123  27705-27705/? V/MediaPlayer-JNI﹕ setAudioStreamType: 3
08-11 19:23:48.123  27705-27705/? V/MediaPlayer﹕ MediaPlayer::setAudioStreamType
08-11 19:23:48.123  27705-27705/? V/MediaPlayer﹕ setVideoSurfaceTexture
08-11 19:23:48.123  27705-27705/? V/MediaPlayer﹕ prepare
08-11 19:23:48.123  27705-27720/? V/MediaPlayer﹕ message received msg=300, ext1=0, ext2=0
08-11 19:23:48.123  27705-27720/? V/MediaPlayer﹕ Received SEC_MM_PLAYER_CONTEXT_AWARE
08-11 19:23:48.123  27705-27720/? V/MediaPlayer﹕ callback application
08-11 19:23:48.123  27705-27720/? V/MediaPlayer﹕ back from callback
08-11 19:23:48.123  27705-27720/? V/MediaPlayer﹕ message received msg=100, ext1=1, ext2=-2147483648
08-11 19:23:48.123  27705-27720/? E/MediaPlayer﹕ error (1, -2147483648)
08-11 19:23:48.123  27705-27720/? V/MediaPlayer﹕ signal application thread
08-11 19:23:48.123  27705-27705/? V/MediaPlayer﹕ prepare complete - status=1
08-11 19:23:48.123  27705-27705/? W/System.err﹕ java.io.IOException: Prepare failed.: status=0x1
08-11 19:23:48.123  27705-27705/? W/System.err﹕ at android.media.MediaPlayer._prepare(Native Method)
08-11 19:23:48.123  27705-27705/? W/System.err﹕ at android.media.MediaPlayer.prepare(MediaPlayer.java:1351)
08-11 19:23:48.123  27705-27705/? W/System.err﹕ at kr.co.composer.callrecord.media.AudioPlayer.initializeViews(AudioPlayer.java:57)
08-11 19:23:48.123  27705-27705/? W/System.err﹕ at kr.co.composer.callrecord.media.AudioPlayer.onCreate(AudioPlayer.java:41)
08-11 19:23:48.123  27705-27705/? W/System.err﹕ at android.app.Activity.performCreate(Activity.java:6500)
08-11 19:23:48.123  27705-27705/? W/System.err﹕ at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1120)
08-11 19:23:48.123  27705-27705/? W/System.err﹕ at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3072)
08-11 19:23:48.123  27705-27705/? W/System.err﹕ at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3218)
08-11 19:23:48.123  27705-27705/? W/System.err﹕ at android.app.ActivityThread.access$1000(ActivityThread.java:198)
08-11 19:23:48.123  27705-27705/? W/System.err﹕ at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1676)
08-11 19:23:48.123  27705-27705/? W/System.err﹕ at android.os.Handler.dispatchMessage(Handler.java:102)
08-11 19:23:48.123  27705-27705/? W/System.err﹕ at android.os.Looper.loop(Looper.java:145)
08-11 19:23:48.123  27705-27705/? W/System.err﹕ at android.app.ActivityThread.main(ActivityThread.java:6837)
08-11 19:23:48.123  27705-27705/? W/System.err﹕ at java.lang.reflect.Method.invoke(Native Method)
08-11 19:23:48.123  27705-27705/? W/System.err﹕ at java.lang.reflect.Method.invoke(Method.java:372)
08-11 19:23:48.123  27705-27705/? W/System.err﹕ at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1404)
08-11 19:23:48.123  27705-27705/? W/System.err﹕ at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1199)
08-11 19:23:48.123  27705-27705/? V/MediaPlayer﹕ getDuration_l
08-11 19:23:48.123  27705-27705/? E/MediaPlayer﹕ Attempt to call getDuration without a valid mediaplayer
08-11 19:23:48.123  27705-27705/? V/MediaPlayer﹕ message received msg=100, ext1=-38, ext2=0
08-11 19:23:48.133  27705-27705/? E/MediaPlayer﹕ error (-38, 0)
08-11 19:23:48.133  27705-27705/? V/MediaPlayer﹕ callback application
08-11 19:23:48.133  27705-27705/? V/MediaPlayer﹕ back from callback
08-11 19:23:48.133  27705-27705/? V/MediaPlayer-JNI﹕ getDuration: 0 (msec)
08-11 19:23:48.133  27705-27705/? V/MediaPlayer-JNI﹕ start
08-11 19:23:48.133  27705-27705/? V/MediaPlayer﹕ start
08-11 19:23:48.133  27705-27705/? E/MediaPlayer﹕ start called in state 0
08-11 19:23:48.133  27705-27705/? V/MediaPlayer﹕ message received msg=100, ext1=-38, ext2=0
08-11 19:23:48.133  27705-27705/? E/MediaPlayer﹕ error (-38, 0)
try {
            mediaPlayer = new android.media.MediaPlayer();
            mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
            mediaPlayer.setDataSource(fName);
            mediaPlayer.prepare();
        } catch (IOException e) {
            e.printStackTrace();
        }
        finalTime = mediaPlayer.getDuration();
        seekbar.setOnSeekBarChangeListener(mOnSeek);
        seekbar.setMax((int) finalTime);
        seekbar.setClickable(true);
        mediaPlayer.start();
        timeElapsed = mediaPlayer.getCurrentPosition();
        seekbar.setProgress((int) timeElapsed);
        durationHandler.postDelayed(updateSeekBarTime, 200);
    }

킷캣에서는 잘되는데 롤리팝에서 안됩니다. mp4나 3gp로 녹음된 오디오파일을 MediaPlayer로 실행하려 합니다.

디버깅해보니 위의 코드에서 getDuration에서 녹음된 파일의 시간을 구해오지 못합니다.

로그를 보니 파일 자체를 읽어오지 못하는듯해서 삼성폰의 내장된 뮤직플레이어로 직접 실행해 봐도 '사용할 수 없는 파일 형식입니다.'

토스트가 나옵니다. mp4, 3gp파일 실행을 롤리팝에서는 못하는건가 싶기도하고...;;

테스트폰은 갤럭시S4 갤럭시S6입니다. 조언 부탁드리겠습니다. 

와와10 (270 포인트) 님이 2015년 8월 11일 질문

1개의 답변

+1 추천

로그상은 prepare 에서 IOException이 발생했습니다.  그러니 getDuration 값을 못구하는건 당연한 거구요.

로그의 error (1, -2147483648) 에 나오는 -2147483648는 0x80000000 UNKNOWN_ERROR를 의미 합니다.

 
아무래도 코드 문제는 아닌 듯 하며,  테스트 하신  파일의 인코딩 형식을 MediaPlayer에서 지원 못하는 것으로 보입니다.
그래서 기본 뮤직플레이어로도 재생이 안되는 듯 하구요..
 
mp4, 3gp파일 재생은 지원을 해서 컨테이너 형식은 문제가 안 될 텐데..
삼성 롤리팝 펌웨어에서 테스트 하신 오디오에 대한 코덱이 단말에서 지원을 하지 않거나. 컨테이너 파싱을 제대로 못하는 듯 합니다.
 
플레이어를 수정하는건 불가능하고, 별도로  만드시긴 어려우니.. 기본 플레이어에서 재생 되는 컨텐트로 변경하여 사용하셔야 할 듯 합니다..
 
익명사용자 님이 2015년 8월 11일 답변
2015년 8월 11일 수정
저두 검색하다가 위의 내용 봤었는데요.. 저는 이해못하고 스치듯 그냥 지나갔네요.;;
바쁜 시간에 직접 검색까지 해주신거 같기도 하고.. 감사합니다.
친절한 설명 많은 도움 되었습니다. 다시한번 감사 드립니다.
...