编辑:
Android 2.2 MediaPlayer可以正常使用一个SHOUTcast URL,但不能与另一个一起使用
我需要播放来自外部URL(shoutcast流)的音频文件.目前,音频文件会逐步下载并在我们在手机本地临时存储中获得足够的音频时立即播放.我正在使用StreamingMediaPlayer类.
检查这段代码:
private MediaPlayer createMediaPlayer(File mediaFile)
throws IOException {
MediaPlayer mPlayer = new MediaPlayer();
//example of mediaFile =/data/data/package/cache/playingMedia0.dat
FileInputStream fis = new FileInputStream(mediaFile);
mPlayer.setDataSource(fis.getFD());
mPlayer.prepare();
return mPlayer;
}
Run Code Online (Sandbox Code Playgroud)
当前状态:
1-从Android 1.6到2.1工作正常,但在Android 2.2等更高版本中没有.
2-"mPlayer.setDataSource(fis.getFD())"是抛出错误的行.
3-错误是"无法创建媒体播放器"
尝试其他方案:
我尝试了下面的替代解决方案但到目前为止没有任
Android 2.2 MediaPlayer可以正常使用一个SHOUTcast URL,但不能与另一个一起使用
我在找什么?
我的目标是拥有可以在Android 2.1及更高版本上运行的代码.
这个问题也在这里讨论:
在2.2中流式传输shoutcast流中断的 2个android代码
3-本期网站上的很多问题也讨论了这个问题,但我发现答案没有.
4- markmail.org
LogCat跟踪:
Unable to to create media player
Error copying buffered conent.
java.lang.NullPointerException
com.ms.iradio.StreamingMediaPlayer.startMediaPlayer(StreamingMediaPlayer.java:251)
com.ms.iradio.StreamingMediaPlayer.access$2(StreamingMediaPlayer.java:221)
com.ms.iradio.StreamingMediaPlayer$2.run(StreamingMediaPlayer.java:204)
android.os.Handler.handleCallback(Handler.java:587)
android.os.Handler.dispatchMessage(Handler.java:92)
android.os.Looper.loop(Looper.java:123)
android.app.ActivityThread.main(ActivityThread.java:3683)
java.lang.reflect.Method.invokeNative(Native Method) …Run Code Online (Sandbox Code Playgroud) 我正在努力弄清楚如何解析无标准的HTTP响应.
无标准响应包含ICY 200 OK而不是HTTP 200 OK.以下是发送无标准HTTP响应的示例URL.
http://50.117.121.162:80
由于Android 4.4 HttpURLConnection将不再适用于这些无标准的响应.我尝试过使用Apache 的HttpClient,但由于没有标准的HTTP响应,它无法正常工作.然后我尝试按照指南添加自定义响应解析器,但Android似乎没有所需的所有类.
我真的很难找到解决方案.可能在HttpClient解析之前修改无标准响应,或者HttpURLConnection可以工作但我不确定这是否可能......
任何帮助将不胜感激.
有没有办法在Android上播放shoutcast/icecast?将icecast URL传递给媒体播放器不起作用,在研究了主题之后,似乎是因为android无法在没有媒体容器的情况下播放原始aac文件.
我该怎么做才能解决这个问题?
谢谢