2016-12-29 4 views
0

저는 기본적으로 서로 다른 토런트 플랫폼에서 웹 스크랩을하고 급류를 얻는 음악 다운로드 앱을 개발 중입니다. 내가 그들을 다운로드하는 동안 나는 음악 토런트 파일을 재생하고 싶다. 나는 기본적으로 모든 일을 처리하는 서비스를 가지고 있습니다. 토런트 파일까지 기다리는 버퍼를 설정합니다. 적어도 25 % 다운로드 한 다음 MediaPlayer 클래스를 사용하여 파일 재생을 시작합니다. 음악은 정상적으로 재생되기 시작하지만 잠시 후에 마치 25 % 이상 재생할 수없는 것처럼 멈 춥니 다. 나는 안드로이드의 MediaPlayer 클래스와 FFmpegMediaPlayer 라이브러리를 사용하여 시도했다. 나는 몇 CONFIGS를 사용하여 시도 :음악 파일을 다운로드하는 중 재생하기

MediaPlayer mediaPlayer = new MediaPlayer(); 
     FileInputStream fis = null; 
     try { 
      fis = new FileInputStream(mCurrentTrack); 
      mediaPlayer.setDataSource(fis.getFD()); 
      mediaPlayer.setAudioStreamType(AudioManager.STREAM_RING); 
      mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { 
       @Override 
       public void onPrepared(MediaPlayer mediaPlayer) { 
        mediaPlayer.start(); 
       } 
      }); 
      mediaPlayer.prepareAsync(); 
     } catch (Exception e) { 
      Log.w(APP_TAG, String.format("Something went wrong while trying to play the torrent stream: " + e.toString())); 
     } 

mCurrentTrack 내가 외부 저장 내 다운로드 폴더에 다운로드 한 MP3 파일의 경로입니다.

AudioManager.STREAM_MUSIC을 사용해 보았습니다. sync prepare() 메서드를 사용한 다음 start() 메서드를 호출 해 보았습니다. 나는 그것을 연주하기 전에 new File(mCurrentTrack)으로 파일을 열어서 다시 쓰기 가능으로 설정한다. 나는 많은 조합을 시도했지만 항상 동일합니다. 음악이 몇 초 동안 재생되고 멈 춥니 다. 외부 저장소를 검사하면 파일이 문제없이 완전히 다운로드됩니다.

나는 토런트 파일을 다운로드하기 위해 사용하고 라이브러리는이 비행에 다운로드되는 동안 감사하겠습니다이 파일을 재생하는 방법에 대한이 하나 TorrentStream-Android

모든 팁 또는 생각입니다.

답변

0

누군가 지적한대로 here. ExoMedia 플레이어 라이브러리를 사용하여이 문제를 해결했습니다.

compile 'com.devbrackets.android:exomedia:3.1.0'

final EMAudioPlayer mediaPlayer = new EMAudioPlayer (getApplicationContext()); 
      mediaPlayer.setOnPreparedListener(new OnPreparedListener() { 
       @Override 
       public void onPrepared() { 
        mediaPlayer.start(); 
       } 
      }); 
      mediaPlayer.setDataSource(getApplicationContext(), Uri.parse(mCurrentTrack)); 
      mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); 
      mediaPlayer.prepareAsync(); 
: 여기가 작업을 얻을하는 데 사용되는 코드 조각이다