Android MediaPlayer准备时间过长

Ser*_*gei 5 android audio-player android-music-player

嘿,我正在使用MediaPlayer播放常规的ShoutCast流.使用prepareAsync()和开始播放的处理程序,代码很简单.虽然它与DI.FM或ETN.FM(http://u10.di.fm:80/di_progressive)等一些流程完美无瑕,但与其他人(http://mp3.wpsu.org:8000/)一起赢得了超过准备状态.也没有其他听众.

//Uri streamUri = Uri.parse("http://u10.di.fm:80/di_progressive"); /* works */
Uri streamUri = Uri.parse("http://mp3.wpsu.org:8000/"); /* stuck on prepare state */
MediaPlayer mediaPlayer = new MediaPlayer();
mediaPlayer.setOnPreparedListener(new OnPreparedListener() {
    public void onPrepared(MediaPlayer mp) {
        mp.start();
    }
});
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mediaPlayer.setDataSource(this.getBaseContext(), streamUri);
mediaPlayer.prepareAsync();
Run Code Online (Sandbox Code Playgroud)

任何反馈表示赞赏!

tot*_*aam 2

我认为服务器端存在一些兼容性问题。这很奇怪,因为在我的情况下模拟器可以正常处理它 - 只是在我的 Froyo Galaxy S 上不行,即使它是相同的 API 版本。

这可能是编解码器问题,http 流问题,我不知道。但所有出现故障的服务器往往都是旧服务器,底部带有“版权所有 1998 - 2004”... 并不完全是您想象的最近或最新的。

一种潜在的解决方法(我尚未尝试过)是使用 StreamProxy 这也将使您的代码与 2.1 以及可能更早的版本兼容。以额外的工作、额外的代码和毫无疑问的额外错误为代价......

如果您不知道,还有另一个 2.2 的播放器错误报告也可能相关: Basic Streaming Audio Works in 2.1 but not in 2.2