2

大家好,提前感谢,

我整天都在寻找论坛和互联网,对此我并不清楚。我不确定是否可以直接和简单的方式。我一直在阅读,自 2.2 以来它是本机支持的,但我没有看到和示例它在哪里可以轻松工作

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

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

但是现在....我必须重现 Stream 音频,并且我只获得了来自广播服务器的 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  

我不知道我是否做对了……我第一次遇到流问题……

是否有可能使它成为一种简单的方法?如果不是......有什么解决方案?

谢谢 !!

4

3 回答 3

3

经过两天的谷歌搜索,没有太多结果,我发现一个页面有很多公共流 url链接,我用原始代码和 windows 媒体播放器尝试了一些。几乎所有这些都不能在 wmp 上工作,但有些是可以的……所以我尝试了其中的一些,而带有链接的那些没有用……但是带有 ip+port 的那些是的!看来问题出在我用于测试的 ip+port 上……所以我的代码最后真的很简单……而且它适用于西班牙语收音机。

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
}
于 2012-07-17T12:01:03.240 回答
2

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

                @Override
                public void onPrepared(MediaPlayer arg0) {
                    // TODO Auto-generated method stub
                    mp.start();
                    }});"
于 2012-08-06T03:14:23.860 回答