【问题标题】:Android Shoutcast: Want help to play ShoutCast Streaming in 1.6Android Shoutcast:想要帮助在 1.6 中播放 ShoutCast Streaming
【发布时间】:2011-05-22 02:35:43
【问题描述】:

我的应用程序播放 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: WARN/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: 信息/媒体播放器(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.如何解决这个错误?。

【问题讨论】:

标签: android streaming shoutcast


【解决方案1】:

你打电话给start() 太快了。 MediaPlayer的Javadocs解释一下(看图):

  1. 要么在拨打start()之前先拨打prepare(),要么

  2. 您调用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

这之前已经讨论过:

Listen to a shoutcast with Android

【讨论】:

  • 我试过这个。它不起作用这是更新的代码mediaPlayer = new MediaPlayer(); mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); mediaPlayer.setDataSource(url); mediaPlayer.prepareAsync(); mediaPlayer.setOnPreparedListener(new OnPreparedListener() { @Override public void onPrepared(MediaPlayer mp) { Log.i("In", "Prepared Listener"); mediaPlayer.start(); } }); LogCat 消息在下一个评论中。
  • WARN/MediaPlayer(6592): 信息/警告 (1, 26) 12-08 15:18:18.214: INFO/MediaPlayer(6592): 信息 (1,26) 12-08 15: 18:18.219:错误/PlayerDriver(1870):命令 PLAYER_INIT 完成,但出现错误或信息 PVMFFailure 12-08 15:18:18.219:错误/MediaPlayer(6592):错误(1,-1)12-08 15:18: 18.219: 错误/MediaPlayer(6592): 错误 (1,-1) 12-08 15:18:18.219: WARN/PlayerDriver(1870): PVMFInfoErrorHandlingComplete
  • 首先:prepareAsync() 需要在setOnPreparedListener(..) 之后调用。第二:你的错误是在setDataSource()期间抛出的,对吧?
  • 我相信你的问题在于 1.6 本身并不支持 Shoutcast。我更新了答案。
猜你喜欢
  • 1970-01-01
  • 2014-06-04
  • 1970-01-01
  • 2014-10-12
  • 2013-07-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-21
相关资源
最近更新 更多