大家好,提前感谢
我整天都在论坛和互联网上寻找,对此我一点也不清楚。我不确定是否可以用一种直接而简单的方式。我一直读到,自2.2以来,它是本地支持的,但我没有看到和示例它在哪里可以轻松工作
首先,我在网上用.mp3做了一些测试,这个代码运行得很好:
mp = new MediaPlayer();
mp.setDataSource(localContext, Uri.parse(SomeURL.mp3));
mp.prepare();
mp.start()
但是现在。。。。我必须复制流音频,我只得到了一个来自shoutcast服务器的ip和端口,我正在尝试各种各样的事情,但一直以来我在媒体播放器中遇到错误,典型的(0,-38)错误,一般来说。
mp = new MediaPlayer();
mp.setAudioStreamType(AudioManager.STREAM_MUSIC);
//mp.setDataSource("http://xxx.xxx.xxx.xxx:xxxx");
mp.setDataSource("http://xxx.xxx.xxx.xxx");
mp.prepareAsync();
mp.start() --> it crashs here
我不知道我做得是否正确。。。。我第一次面对流问题。。。。
有可能把它变成一种简单的方式吗?如果不是。。。。解决方案是什么?
谢谢!!
经过两天的谷歌搜索,我发现一个页面上有很多公共流媒体url链接,我尝试了一些原始代码和windows媒体播放器。几乎所有这些都不适用于wmp,但有些是的。。。所以我试了一些,但那些有链接的不起作用。。。但是那些带有ip+端口的是的!!问题似乎出在我测试的ip+端口上。。。。所以我的代码终于很简单了。。。。它为一家西班牙电台工作。
if(!mp.isPlaying()){
try{
mp = new MediaPlayer();
mp.setOnPreparedListener(this);
mp.setAudioStreamType(AudioManager.STREAM_MUSIC);
url="http://91.121.92.186:8060";
mp.setDataSource(url);
mp.prepareAsync();
}catch(IOException e){
e.printStrackTrace();
}
}
@Override
public void onPrepared(MediaPlayer mp) {
mp.start();//Cuando acaba de cargar inicia la reproducción
}
您提供的代码崩溃,因为如果您使用"mp.prepareSync();",则不能使用"mp.start",您必须在准备好的侦听器上使用"mp.setOnPreparedListener(new OnPrepared listener(){
@Override
public void onPrepared(MediaPlayer arg0) {
// TODO Auto-generated method stub
mp.start();
}});"
为什么不看看:
Android 的在线广播流应用程序
或
http://code.google.com/p/rxwen-blog-stuff/source/browse/trunk/android/streaming_audio/
或者
http://erkutaras.blogspot.fr/2011/08/stream-audio-from-url-example-android.html
告诉我们它是否有效
;-)