我正在为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();

接下来,我想得到流的信息显示在我的应用程序中。
我想检索绿色框中显示的信息:
java - 访问Shoutcast当前流信息-LMLPHP
人们已经发布了关于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/

10-10 19:38