2013-10-31 232 views
0

我在我的Android應用程序中播放一些歌曲時遇到問題。 以下是創建MadiaPlayer和設置數據源我的測試代碼:MediaPlayer:在播放歌曲時準備失敗狀態0x1錯誤

mediaPlayer = new MediaPlayer(); 
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); 
mediaPlayer.setOnPreparedListener(this); 
mediaPlayer.setOnCompletionListener(this); 
mediaPlayer.setOnErrorListener(this); 
mediaPlayer.setDataSource("http://streaming.ibroadcast.com/?file=MjA1MTIyMS0xMDA1NDQ1NC01MDYxNjY5LTEwMDAwMDQ="); 
try { 
    mediaPlayer.prepare(); 
} catch (Exception ex) { 
    Log.e(Constants.LOG_TAG, ex.getMessage(), ex); 
} 

我得到這個在mediaPlayer.prepare()

10-31 15:41:27.130: ERROR/NuCachedSource2(174): source returned error -32, 0 retries left 
10-31 15:41:34.388: ERROR/NuCachedSource2(174): source returned error -32, 0 retries left 
10-31 15:41:37.371: ERROR/MediaPlayer(5360): error (1, -2147483648) 
10-31 15:41:37.381: ERROR/log_tag (5360): Prepare failed.: status=0x1 
    java.io.IOException: Prepare failed.: status=0x1 
    at android.media.MediaPlayer.prepare(Native Method) 

我tryed到流一堆使用此代碼。這個問題的歌曲僅發生三首或四首歌曲,但是對於那些歌曲來說它是100%可重現的。更重要的是,如果我將這些歌曲下載到SD卡並從那裏播放,則播放時不會出現任何錯誤。我也可以使用瀏覽器進行流式處理。所有歌曲有mp3格式和服務器響應包含標題是這樣的:

Accept-Ranges:  bytes 
Connection:  close 
Content-Length:  5 MB 
Content-Type:  audio/mpeg 
Date:  2013 Oct 31 14:43:01-8s 
ETag:  831c011006861dc9b2fc89ef185f2f4b 
Last-Modified:  2013 Aug 28 18:28:31-63d 21h 
Server:  Apache/2.2.25 (Amazon) 

沒有人有想法有什麼不對嗎?

UPDATE:

這裏是not working song前1024個字節,這裏是working one

+0

你能在這裏發表1024字節十六進制表示的工作和不工作的MP3文件?你在你的代碼的某個地方調用'mediaPlayer.release()'是不是? :) – Kristopher

+0

當然,我已經使用該數據更新了我的帖子。我在'onCompletion'和'onError'監聽器中調用'mediaPlayer.release()',但是我的應用程序在它之前失敗了。 – Bersh

回答

3

analising HEX樣本揭示你的「工作」的文件是否如預期 MPEG-1 Audio Layer 3 with ID3v2 Tag (.mp3 file)但「不工作」一後不是mp3而是MPEG-1 Audio Layer 2 (.mp2 file)。根據Android Supported Media Formats它不支持。它甚至可能有一個.mp3擴展名,但它不是一個mp3文件。

+0

我想知道爲什麼這個文件在加載到SD卡時沒有錯誤地播放? – Bersh

+0

你必須匹配檢查文件的HEX表示與mp3文件簽名:http://www.nationalarchives.gov.uk/PRONOM/Format/proFormatSearch.aspx?status=detailReport&id=687&strPageToDisplay=signatures – Kristopher

+0

我不知道爲什麼這個文件在加載到sd卡時沒有錯誤地播放,但這只是我猜的:)。 – Kristopher

相關問題