안녕하세요.

현재 서버를 연동하여 mp3 스트리밍 하는 앱을 개발 중에 있습니다.

정상적으로 동작하는데 한가지 의문점이 발생하여,
몇 가지 여쭙고자 이곳을 찾게되었습니다.

현재 제가 연동하는 서버의 프로토콜은  http프로토콜을 지원합니다.

1. wav포맷의 음악  관련하여, 단말에서는 재생이 가능한데 
서버에서 스트리밍 처리가 되어 내려주는 파일을 재생 시에 재생이 되질 않습니다.
API References 상에서는 WAVE파일이 Decoder만 지원한다고 되어 있더군요.
이 현상을 해결하기 위해서는, 서버측에서 따로 처리가 필요한 부분이 있을까요? 아니면 코딩 상에서 해결할 수 있는 방법이 있을까요?

2. 또한 위 파일의 경우 재생이될 경우가 있고, 되지 않을 경우가 있습니다.
제 지식으로는 서버측에서 데이터 전송이 늦어서 타임아웃이 걸려서 재생이 안되는 것 같은데, 어떻게 생각하시나요?

두 현상 모두 스트리밍 실패 시에 onError콜백으로 들어가며, Error(1, -1) 오류가 떨어집니다.

작성된 소스는 아래와 같습니다.

   
private void playVideo(String Path) {
   
  try {
   mMediaPlayer = new MediaPlayer(); 
   mMediaPlayer.setLooping(false);
   mMediaPlayer.setOnCompletionListener(LG_NAS_Music_Service.this);
   mMediaPlayer.setOnPreparedListener(LG_NAS_Music_Service.this);
   mMediaPlayer.setOnErrorListener(LG_NAS_Music_Service.this);
   setDataSource(Path);  
  } catch (Exception e) {
      Log.e("!", "error: " + e.getMessage(), e);
  }
 }
 
 private void setDataSource(String path) throws IOException {
  if(!URLUtil.isNetworkUrl(path)){     
   mMediaPlayer.setDataSource(path);   
   mMediaPlayer.prepare();
  }else{  
   try{
    mMediaPlayer.setDataSource(path);
    mMediaPlayer.prepare();
   }catch(Exception e){
    Log.i("!", "prepare failed " + e.getMessage());
   }
  }  
 }

public void onPrepared(MediaPlayer arg0) {
  // TODO Auto-generated method stub
  mMediaPlayer.start();  
 }
 public boolean onError(MediaPlayer mp, int what, int extra) {
  // TODO Auto-generated method stub
  Log.e("!", "Error in MediaPlayer: (" + what +") with extra (" +extra +")" );
  return true;
 }


꼭 해결책이 아니라도 조언이라도 한 말씀 해주고 가시면 감사드리겠습니다^^