如何使用带有android 2.3.3的Media Player进行ShoutCast Streaming

时间:2012-07-16 12:57:01

标签: android stream media-player shoutcast

大家好,并提前致谢,

我整天都在寻找论坛和互联网,我对此并不清楚。我不确定是否可以直接而简单的方式。我读过所有的时间,因为它本身支持它,但我没有看到和它的工作原理的例子

首先,我在网上对一些.mp3进行一些测试,这段代码运行良好:

mp = new MediaPlayer();
mp.setDataSource(localContext, Uri.parse(SomeURL.mp3));     
mp.prepare();
mp.start()  

但现在....我必须重现Stream音频,我只是从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  

我不知道我是否正确行事......第一次遇到流问题......

有可能让它像这样简单吗?如果不是......有什么解决方案?

谢谢!

3 个答案:

答案 0 :(得分:3)

经过两天的谷歌搜索没有太多结果,我找到了一个包含大量公共流媒体网址link的页面,我尝试了一些原始代码和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
}

答案 1 :(得分:2)

您提供的代码崩溃,因为如果您使用“mp.prepareAsync();”然后你不能“mp.start”你必须在准备好的监听器上使用“mp.setOnPreparedListener(new OnPreparedListener(){

                @Override
                public void onPrepared(MediaPlayer arg0) {
                    // TODO Auto-generated method stub
                    mp.start();
                    }});"

答案 2 :(得分:1)