2013-06-25 69 views
2

我正在建立一個無線電播放器,我需要實時從音頻流中檢索和更新元數據。如何使用MediaPlayer獲取流媒體音頻元數據?

我已經與MediaMetadataRetriever嘗試,但得到空值:

MediaMetadataRetriever mmr; 

url = "http://stream0.wfmu.org/freeform-128k"; 

if (Build.VERSION.SDK_INT >= 14) 
    mmr.setDataSource(url, new HashMap<String, String>()); 
else 
    mmr.setDataSource(url); 

String out = ""; 
out += mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_TITLE); 
out += "\n"; 
out += mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ARTIST); 
out += "\n"; 
out += mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ALBUM); 
out += "\n"; 
out += mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_YEAR); 
out += "\n"; 

有什麼不對?

我該如何知道元數據何時更改?使用OnInfoListeneronInfo?它是否處理我感興趣的元數據(藝術家,標題...)或曲目的類型或語言代碼,如MediaPlayer.TrackInfo

回答

0

您嘗試訪問的元數據是通過SHOUTcast服務器(版本2)提供的。 MediaMetadataRetriever不支持SHOUTcast元數據檢索,因此您將無法使用它。據我所知,沒有支持檢索SHOUTcast版本2元數據的基於Java的庫,因此您需要自己編寫代碼。有關更多信息,請參見指南here

+0

我無法從'/ stats'或'/ 7.html'獲取任何數據,因此我遵循http://www.smackfu.com/stuff/programming/shoutcast.html中的說明。 – jul