访问Shoutcast当前流信息

时间:2015-09-16 14:46:21

标签: java android http audio-streaming shoutcast

我正在为Android创建一个互联网广播应用程序。到目前为止,我已成功使用shoutcast网址流式传输和播放各种电台。这是我的代码:

      String url = "http://185.33.22.13:7704"; 
    mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
    try
    {
        mediaPlayer.setDataSource(url);
        mediaPlayer.prepare();
    } 
    catch (IOException e) 
    {
        e.printStackTrace();
    }
    mediaPlayer.start();

接下来,我想获取要在我的应用程序中显示的流的信息。 我想检索绿框中显示的信息:

enter image description here

人们已经发布了关于FFmpegMediaMetadataRetriever的信息,但是github是我的联盟之一,了解也试过他们的apk文件,当给出上面的http链接时什么都不做。请建议我一个简单而强大的解决方案,从SHOUTcast DNAS状态检索数据。 提前致谢 !

1 个答案:

答案 0 :(得分:2)

Shoutcast V1有一个包含比特率和其他信息的特殊页面。

如果你的shoutcast正在运行 http://185.33.22.13:7704

然后这个页面的网址将是: http://185.33.22.13:7704/7.html

该页面的正文如下:

 <HTML><meta http-equiv="Pragma" content="no-cache"></head><body>214,1,312,1000,213,64,Ferry Tayle - The Way Back Home (Edit) (feat. Poppy)</body></html>

用逗号分割该文本,您将获得:

  • 当前听众
  • 流状态
  • 高峰听众
  • 最大侦听器数(从服务器启动)
  • 独特的听众
  • 比特率
  • 歌曲标题

以下是javascript(Nodejs)中的一个示例,它从7.html页面获取数据并解析它:

var request = require('request'),
    options = {
        url: 'http://185.33.22.21:7704/7.html',
        headers: {
            'User-Agent': 'Mozilla/5.0'
        }
    },
    regex = /<body>(.*?)<\/body>/i;

request(options, function (error, response, body) {
    var match = regex.exec(body),
        data = match[1].split(',');

    console.log("7.html: ", body);

    console.log("Current listeners: ", data[0]);
    console.log("Stream status: ", data[1]);
    console.log("Peak listeners: ", data[2]);
    console.log("Maximum number of listeners: ", data[3]);
    console.log("Unique listeners: ", data[4]);
    console.log("Bitrate: ", data[5]);
    console.log("Metada: ", data[6]);
});

请注意设置&#34; User-Agent&#34;标题是必需的。

如果你有来自该服务器的管理员密码 - 那么另一种方法是使用以下URL直接从shoutcast管理页面获取XML数据:

  

http://185.33.22.13:7704/admin.cgi?mode=viewxml