0

不啓動我用這個代碼:MediaPlayer的Android的流廣播立即開始沒有或根本

mediaPlayer.setDataSource("http://some online radio"); 
      mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); 
      mediaPlayer.setOnPreparedListener(this); 
      mediaPlayer.prepareAsync(); 

onPrepared方法是:

if (mediaPlayer != null) { 
     mediaPlayer.start(); 
    } 

一般來說,問題是:然後我跑此代碼,播放不立即開始,但約10秒後。 +一些數據流根本無法啓動,在仿真器上它的工作原理比在設備上好一些,但仍然如此。這取決於具體的收音機,有些更好,其他很糟糕。

我認爲事情是在準備和緩衝。可以從這個流中創建一個InputStream並寫入一些臨時文件/緩衝區,並在MediaPlayer中讀取/播放此文件,但是如何實現它還不清楚。請幫助

如果您只是做mp.prepare,然後mp.start - 結果是一樣的

在在Chrome瀏覽器的PC,所有的廣播流,我想立即使用開始播放

對不起,我的英語,謝謝。

回答

0

似乎音頻比特率可能是這裏的關鍵:https://stackoverflow.com/a/12850965/3454741。似乎沒有簡單的方法來解決這個問題。

如果流式傳輸根本沒有啓動,可能是由於某種錯誤,您可以使用MediaPlayer.setOnErrorListener()捕獲錯誤。

+0

感謝您的回答。這是可悲的。你怎麼考慮加載一個臨時mp3文件的隊列,並使用completionListener來播放它們。但如何使每個文件的大小(例如512kb)?讀(字節[])可以讀取從0到整個bute數組大小的東西,但我不想要任何零大小的文件。 –

+0

我不確定使用MP3會解決這個問題,你可以試試。我真的不明白你關於「使他們一個尺寸」的問題......另外,[只是我鏈接的答案之上的答案](http://stackoverflow.com/a/30494887/3454741)推薦使用FFmpegMediaPlayer,它似乎表現得更好。 –

+0

它是如此接近工作。在模擬器FFmpegMP工作正常,但在我的xiaomi方法停止導致致命錯誤... –

相關問題