Android Shoutcast:需要帮助在 1.6 中播放 ShoutCast Streaming
我的应用程序播放 ShoutCast Streaming,目标操作系统为 1.6 及更高版本。我已经应用了 NPR 应用程序中的一些代码并进行了一些修改。
这是代码
mediaPlayer = new MediaPlayer();
mediaPlayer.reset();
mediaPlayer.setDataSource(url);
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
// Log.d(LOG_TAG, "Preparing: " + playUrl);
mediaPlayer.prepareAsync();
mediaPlayer.start();`
该代码不会在模拟器或设备上播放任何内容(在 Samsung Galaxy 2.1 中进行测试)。
这是 LogCat 消息。
即将开始http://88.191.81.31:8206
12-08 14:16:42.229: 警告/MediaPlayer(5520): 信息/警告 (1, 26)
12-08 14:16:42.239:错误/PlayerDriver(1870):命令 PLAYER_INIT 已完成,但出现错误或信息 PVMFFailure
12-08 14:16:42.239: 错误/MediaPlayer(5520): 错误 (1, -1)
12-08 14:16:42.239: 警告/PlayerDriver(1870): PVMFInfoErrorHandlingComplete
12-08 14:16:42.259: 错误/MediaPlayer(5520): 在状态 0 下开始调用
12-08 14:16:42.259: 错误/MediaPlayer(5520): 错误 (-38, 0)
12-08 14:16:42.299: 信息/MediaPlayer(5520): 信息 (1,26)
12-08 14:16:42.299: 错误/MediaPlayer(5520): 错误 (1,-1)
12-08 14:16:42.304: 错误/MediaPlayer(5520): 错误 (-38,0)
这是问题。 1. 你能告诉我设备发生了什么吗? 2.如何解决这个错误?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您调用
start()
的时间太早了。 MediaPlayer 的 Javadocs 对其进行了解释(看图片):要么必须在调用
start()
之前调用prepare()
,要么调用
prepareAsync()
并等待调用OnPreparedListener.onPrepared()
之前,然后(可能在此方法内)调用start()
。更新:
Shoutcast 流仅在 2.2 上得到原生支持。对于早期版本,您必须创建本地代理,将响应协议从 ICY (shoutcast) 更改为 HTTP,
媒体播放器将支持。看看这个:
http://code.google.com/p/npr-android-app/source/browse/trunk/Npr/src/org/npr/android/news/StreamProxy.java
之前已经讨论过:
使用 Android 收听喊话
You are calling
start()
too soon. Javadocs of MediaPlayer explain it (look at the picture):Either you have to call
prepare()
before you callstart()
, orYou call
prepareAsync()
and wait forOnPreparedListener.onPrepared()
to be called, then (possibly inside this method) callstart()
.Updated:
Shoutcast streams are nativelly supported only on 2.2. For earlier versions you must create local proxy that changes the response protocol from ICY (shoutcast) to HTTP, which the
mediaplayer will support. Take a look at this:
http://code.google.com/p/npr-android-app/source/browse/trunk/Npr/src/org/npr/android/news/StreamProxy.java
This has previously been discussed:
Listen to a shoutcast with Android