我正在为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();
接下来,我想获取要在我的应用程序中显示的流的信息。 我想检索绿框中显示的信息:
人们已经发布了关于FFmpegMediaMetadataRetriever的信息,但是github是我的联盟之一,了解也试过他们的apk文件,当给出上面的http链接时什么都不做。请建议我一个简单而强大的解决方案,从SHOUTcast DNAS状态检索数据。 提前致谢 !
答案 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数据: