2013-04-22 16 views
5

私はアンドロイドメディアプレーヤーを使用してrtspリンクを再生している小さなアンドロイドアプリケーションを開発しています。アンドロイド16 api以下で正しく動作しています。しかし、問題は、私はAndroidの16で実行したときに、それが再生するために多くの時間がかかるということで、それもplay.followingていないいくつかの時間は、私は以下のandroid-16で再生中にストリーミングオーディオの遅延が発生しましたか?

sdrPlayer = new MediaPlayer(); 
sdrPlayer.setDataSource(url); 
sdrPlayer.prepare(); 
sdrPlayer.setOnCompletionListener(video.this); 
sdrPlayer.setOnPreparedListener(video.this); 
sdrPlayer.setOnBufferingUpdateListener(video.this); 
sdrPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); 

を使用していたコードである

いくつかのテストケースです
  1. ZTE N860 - ラジオの再生を開始するのに約4〜5分かかります。
  2. Samsung Galaxy S4 - 音声がまったく機能しません。 onprepare方法で メソッドを起動しますが、音声はありません。
  3. Samsung SCH1415 - ラジオの再生を開始するのに約8分かかります。
  4. HTC V5 - オーディオは常に動作しません。それは再生を開始しますが、 オーディオはありません。この動作は矛盾しており、それはより多くの欲求不満を引き起こします。 ドキュメントは、それは非同期で、再生用のプレーヤーを準備

    を言うので、あなたがsdrPlayer.prepareAsync();代わりの

    sdrPlayer.prepare(); 
    

    を使用する必要がありRTSPリンクを再生するための

+0

Nitin、2つのRTSP交換が可能で、比較できるならば、サーバーへのトラフィックを盗聴することをお勧めします。一部のAndroidバージョンでRTSP実装のアップデートが多くの既存のアプリケーションを壊してしまったことをお読みください。その場合、RTSP交換でいくつかの違いが見られるはずです。 – Ralf

+0

まずは@Ralfのコメントに感謝しますが、アンドロイド16はリンクを読み込んで最初にリンクを読み込んだり、何らかの機会にrandomly.Alsoメディアプレーヤーのメソッドを再生してtrue.so私は進捗状況を示すことができます。しかし、時には正しく動作します。サーバーが常に最初といくつかの時間にいくつかの破損ビットを送信する可能性があります。 – Nitin

+0

待機時間は、オーディオバッファサイズによって発生します。私はサイズがアンドロイド16 +で増加したと信じています。あなたの質問は何ですか?バッファサイズを制御することはできないので、MediaPlayerを使いたい場合は不運です。私のアプリケーションはFFmpegベースのプレイヤーを使用しているので、バッファーサイズを制御することができます。 –

答えて

3

。データソースと表示面を設定したら、prepare()またはprepareAsync()のいずれかを呼び出す必要があります。 ストリームの場合は、十分なデータがバッファされるまでブロッキングするのではなく、ただちに戻る、prepareAsync()を呼び出す必要があります。

+0

私はこの回答をお試しいただきますありがとう – Nitin

関連する問題