13

我很难显示从流媒体源播放的当前曲目。使用 MediaMetaDataRetriever 类返回 NULL,这意味着它失败了。我写了一个简单的方法,但现在我倾向于认为这仅适用于 MP3、WMA、AVI 等媒体文件。

public void metaData(){
        mmr.setDataSource(urlStation);
        String metaD = mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ALBUMARTIST);
        Toast.makeText(MainActivity.this, "Artist = " + metaD, Toast.LENGTH_LONG).show();

任何好的和简单的建议将不胜感激。感谢您的时间!

4

3 回答 3

12

MediaMetadataRetriever 不适用于某些版本的 Android 上的 URL,请参阅问题。我创建了FFmpegMediaMetadataRetriever作为解决方法,我建议尝试一下。

于 2013-04-05T08:08:58.643 回答
9

根据另一个答案中列出的相同问题,您只需使用带有这些参数的 setDataSource 方法:

setDataSource(String uri, Map<String, String> headers)

例如,

public void getStreamMetaData(String url){
  MediaMetadataRetriever mmr = new MediaMetadataRetriever();
  mmr.setDataSource(url, new HashMap<String, String>());
  //now do whatever you want

}

我用流媒体 mp4 对其进行了测试,它对我有用。另外请注意,您需要在 AsyncTask 或另一个线程中使用 setDataSource 方法,因为根据文档运行可能需要一段时间。

于 2015-09-16T05:39:24.480 回答
2

这种方法效果更好:

public void setDataSource (String uri, Map<String, String> headers)

(带有您的流的 url 和一个空地图,例如 setDataSource(" https://somewebsite.com/somefile.mp3 ", new HashMap<String,String>());)

于 2019-01-15T09:22:59.780 回答