MediaPlayer:流式传输歌曲时准备失败状态0x1错误

时间:2013-10-31 13:52:15

标签: android android-mediaplayer audio-streaming

我在Android应用程序中播放一些歌曲时出现问题。 以下是我创建MadiaPlayer和设置数据源的测试代码:

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)

我尝试使用此代码流式播放一堆歌曲,此问题仅针对三首或四首歌曲发生,但对于这些歌曲,它可以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)

有没有人有想法有什么不对?

更新

以下是not working song前1024个字节,此处为working one

1 个答案:

答案 0 :(得分:3)

在对HEX样品进行分析后,它显示出您的工作"文件是按预期的 MPEG-1 Audio Layer 3 with ID3v2 Tag (.mp3 file)但是"没有工作"一个不是mp3而是MPEG-1 Audio Layer 2 (.mp2 file)。根据{{​​3}},它不受支持。它甚至可能有.mp3扩展名,但里面不是mp3文件。