2

我正在构建一个收音机播放器,我需要实时从音频流中检索和更新元数据。

我试过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_ onInfo它是否处理我感兴趣的元数据(艺术家、标题...)或曲目的类型或语言代码,例如MediaPlayer.TrackInfo

4

1 回答 1

0

您尝试访问的元数据是通过 SHOUTcast 服务器(版本 2)提供的。MediaMetadataRetriever 不支持 SHOUTcast 元数据检索,因此您将无法使用它。据我所知,没有基于 Java 的库支持检索 SHOUTcast 版本 2 元数据,因此您需要自己编写代码。有关更多信息,请参阅此处的指南。

于 2013-06-27T14:24:59.693 回答