我正在为android创建一个互联网广播应用程序。到目前为止,我已经成功地使用shoutcast url为不同的电台播放了流媒体。这是我的代码:
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();
接下来,我想得到流的信息显示在我的应用程序中。
我想检索绿色框中显示的信息:
人们已经发布了关于ffmpegmediametadaretriever的帖子,但是github是我无法理解的,我也尝试过使用apk文件,当给定上述http链接时,它什么也不做。请建议我一个简单而健壮的解决方案,从shoutcast dnas status检索数据。
提前谢谢!
最佳答案
shoutcast v1有一个特殊的页面,包含比特率和其他信息。
如果你的命令还在继续
http://185.33.22.13:7704
则此页面URL将为:
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]);
});
请注意,需要设置“用户代理”标题。
如果您有来自该服务器的管理密码,则另一种方法是使用以下url直接从shoutcast管理页获取xml数据:
http://185.33.22.13:7704/admin.cgi?mode=viewxml
关于java - 访问Shoutcast当前流信息,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32611907/