2013-06-25 68 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