2015-09-16 41 views
1

我正在爲Android創建一個互聯網廣播應用程序作爲我最後一年的項目的一部分。到目前爲止,我已經成功地流,並使用各種stations.This的Shoutcast的網址發揮是我的代碼:訪問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的是我的出路聯賽理解也嘗試thier的apk文件,什麼都不做的給出了上述HTTP鏈接時請給我建議一個簡單而強大的解決方案來從SHOUTcast DNAS狀態中檢索數據。 在此先感謝!

+0

追加「/」;這與你重定向網址,看看它是如何工作意味着你的網址將看起來像這樣「http://185.33.22.13:7704/;」 –

+0

@sunilsunny這不是真正的問題,它運行良好,沒有「/」 – IteratioN7T

回答

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]); 
}); 

請注意,需要設置「User-Agent」標頭。

如果您有來自該服務器的管理員密碼 - 那麼另一種方式是從Shoutcast的管理頁面使用以下網址直接獲取XML數據:

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

+0

試圖從7html使用此線程中給出的解決方案獲取數據。但它不顯示任何結果。 http://stackoverflow.com/questions/21767015/parsing-shoutcast-7-html-metadata-on-android – IteratioN7T

+0

Bdw我如何獲得Shoutcast的管理員憑據,我需要註冊哪裏? – IteratioN7T

+0

我不是一個Java人,但我認爲用逗號分割一個字符串在任何語言中都很容易。首先,您需要從頁面中刪除所有HTML並獲取BODY標籤內容。 –