嘿,
我正在使用 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();
如有任何反馈,我们将不胜感激!
我认为服务器端存在一些兼容性问题。
这很奇怪,因为在我的情况下模拟器可以正常处理它 - 只是在我的 Froyo Galaxy S 上不行,即使它是相同的 API 版本。
这可能是编解码器问题,http 流问题,我不知道。
但所有出现故障的服务器往往都是旧服务器,底部带有“版权所有 1998 - 2004”... 并不完全是您想象的最近或最新的。
一种潜在的解决方法(我还没有尝试过)是使用流代理,这也将使您的代码与 2.1 甚至更早的版本兼容。以额外的工作、额外的代码和毫无疑问的额外错误为代价......
如果您不知道,还有另一个 2.2 版本的播放器错误报告也可能相关:基本流音频在 2.1 中有效,但在 2.2 中无效
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)