2016-12-29 6 views
0

私は音楽のダウンロードアプリケーションを開発しています。これは、基本的に異なるトレントプラットフォームでウェブスクラップしてトレントを手に入れます。私はそれらをダウンロードしている間にいくつかの音楽トレントファイルを再生したい。私は基本的にこのすべてをやっているサービスを持っています。私はトレントファイルまで待つバッファを設定します。少なくとも25%ダウンロードした後、ファイルを再生するためにMediaPlayerクラスを使用します。音楽は正常に再生されますが、あたかも25%以上再生できないかのようにしばらくして停止します。 Androidの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)でファイルを開き、再生可能で書き込み可能に設定します。私は多くの組み合わせを試みましたが、いつも同じです。音楽は数秒間再生されてから停止します。外部記憶装置をチェックすると、ファイルは問題なく完全にダウンロードされます。

私はトレントファイルをダウンロードするために使用しているライブラリーは、そのは、ハエでダウンロードしながら、高く評価されるだろう、このファイルを再生する方法については、この1つの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(); 
関連する問題