我正在构建一个无线电播放器,我需要实时检索和更新音频流中的元数据。
我尝试使用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";
怎么了?
我怎么知道元数据何时发生变化?使用OnInfoListener
的{{1}}?它是处理我感兴趣的元数据(艺术家,标题......)还是轨道的类型或语言代码,如onInfo
?
答案 0 :(得分:0)
您尝试访问的元数据是通过SHOUTcast服务器(版本2)传递的。 MediaMetadataRetriever不支持SHOUTcast元数据检索,因此您将无法使用它。据我所知,没有基于Java的库支持SHOUTcast版本2元数据的检索,因此您需要自己编写代码。有关详细信息,请参阅指南here。