0

我正在制作一个用于从互联网流式传输广播内容的应用程序!我花了很多时间试图找到一个简单的源代码来展示如何实现流媒体内容!我在 StackOverflow 中找到了一些有用的链接,但没有人为我工作!拜托我需要你的帮忙 !,这是我制作的一段代码,但仍然无法正常工作!我不知道为什么!Ps:电台的网址可以正常使用

package com.example.radio;

import android.app.Activity;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnPreparedListener;
import android.os.Bundle;
import android.util.Log;

public class MainActivity extends Activity implements OnPreparedListener  {



    MediaPlayer mp;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        try {
             mp = new MediaPlayer();
             String url="http://108.168.175.174:7120";
             mp.setAudioStreamType(AudioManager.STREAM_MUSIC);
             mp.setDataSource(url);
             mp.prepareAsync();
             mp.setOnPreparedListener(this);
        } catch (Exception e) {
            Log.i("ExceptionOnCreate:",e.getMessage());
        }


    }

    @Override
    public void onPrepared(MediaPlayer mp) {
        mp.start();

    }



}

这是日志猫:

05-06 10:20:07.291: E/MediaPlayer(1470): error (1, -2147483648)
05-06 10:20:07.291: E/MediaPlayer(1470): Error (1,-2147483648)
4

1 回答 1

1

您的问题可能是由于 SHOUTcast 将您发送到管理界面。如果您的用户代理字符串包含Mozilla,那么您将获得管理页面而不是流。您可以通过在 URL 中请求分号来覆盖此行为:

http://108.168.175.174:7120/;

这将强制服务器将您的用户代理字符串视为MPEG OVERRIDE,并将向您发送真实的流。

如果这不能解决问题,您可能会遇到 SHOUTcast 服务器不符合 HTTP 的问题。他们将状态行发送为ICY 200 OK而不是HTTP/1.0 200 OK,这会破坏许多客户端。

于 2014-05-07T12:39:46.567 回答