简体   繁体   English

如何使用MediaPlayer获取流音频元数据?

[英]How to get streaming audio metadata with MediaPlayer?

I'm building a radio player and I need to retrieve and update the metadata from the audio stream in real time. 我正在构建一个广播播放器,我需要实时从音频流中检索和更新元数据。

I've tried with MediaMetadataRetriever but get null values: 我曾尝试使用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";

What's wrong? 怎么了?

And how can I know when the metadata changes? 我怎么知道元数据何时更改? Using OnInfoListener 's onInfo ? 使用OnInfoListeneronInfo吗? Does it deal with the metadata I'm interested in (artist, title...) or the type or language code of the track, like MediaPlayer.TrackInfo ? 它处理我感兴趣的元数据(艺术家,标题...)还是曲目的类型或语言代码,例如MediaPlayer.TrackInfo

The metadata you are trying to access is a delivered via a SHOUTcast server (version 2). 您尝试访问的元数据是通过SHOUTcast服务器(版本2)传递的。 MediaMetadataRetriever doesn't support SHOUTcast metadata retrieval so you won't be able to use that. MediaMetadataRetriever不支持SHOUTcast元数据检索,因此您将无法使用它。 To my knowledge, there are no Java based libraries that support retrieval of SHOUTcast version 2 metadata so you will need to write the code yourself. 据我所知,没有基于Java的库支持SHOUTcast版本2元数据的检索,因此您需要自己编写代码。 See the guide here for more information. 有关更多信息,请参见此处的指南。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM