0

私はURLからオンラインのラジオ局をストリーミングするはずのアンドロイドアプリを構築しています。ストリーミングアプリのバッファ時間を削減するには?

私は現在デモを行っており、オンラインチュートリアルから多くの助けを得ましたが、問題があります。

NEXTボタンをクリックすると、別のURLからのオーディオが得られます。これは、ステーションを変更すると効果がありますが、時間がかかり、ほとんどの場合動作しないようです。

[次へ]ボタンの[次へ]ボタンFOR

CODE

b_next.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       mediaPlayer.stop(); 
       mediaPlayer.reset(); 
       try { 
        mediaPlayer.setDataSource("http://stream.radioreklama.bg/veronika.opus"); 
        mediaPlayer.prepare(); 
       } catch (IOException e) { 
        e.printStackTrace(); 
       } 

       mediaPlayer.start(); 
      } 
     }); 

答えて

1

問題ないかもしれませんをクリックして、私はそれがほとんどすぐに開始したい私は95%の原因で時間を減らすことができる方法はありバッファリングされているかもしれません。例えば、サーバー側で起動時間がいくらか遅くなる可能性があります。

いずれにしても、バッファリングを監視する場合は、MediaPlayerでコールバックが行われます。これは、 'OnBufferingUpdateListener.onBufferingUpdate()'です。

MediaPlayerのドキュメント(https://developer.android.com/reference/android/media/MediaPlayer.html#setOnPreparedListener(android.media.MediaPlayer.OnPreparedListener))から:

開始状態で、内部プレーヤエンジンはOnBufferingUpdateListenerがsetOnBufferingUpdateListener(OnBufferingUpdateListener介して予め登録されている場合OnBufferingUpdateListener.onBufferingUpdate()コールバックメソッドを供給し、ユーザを呼び出している間)。このコールバックにより、アプリケーションはオーディオ/ビデオをストリーミングする際にバッファリングの状態を追跡することができます。

ストリーム間の切り替えをプラットフォーム間で高速化する一般的な手法の1つは、次のストリームを事前に準備することです。

あなたの場合、初期化して準備状態に移行し、おそらくポイントを探して、もう一方のメディアプレイヤーを停止するとすぐに再生するセカンドメディアプレーヤーが必要です。

ライブストリームでは、同じようにポイントに見えないので少し難しくなります。 2番目のプレーヤーを再生させても音量を下げて試してみることもできますが、ユーザーの切り替え時期を予測する確実な方法がない限り、これはあまり効率的ではありません。

関連する問題