2013-03-20 72 views
5

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

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

有什么好和易于recommandations将不胜感激。感谢您的时间!

回答

11

MediaMetadataRetriever无法在特定版本的Android上使用网址,请参阅this问题。我创建了FFmpegMediaMetadataRetriever作为解决方法,我建议尝试一下。

+0

感谢William的回答。这应该有助于解决我的问题。 – Marquis 2013-04-06 17:16:21

+0

它只适用于媒体文件,不适用于流媒体源。 – jul 2013-06-25 11:49:15

+0

William Seemann它是在YouTube视频上工作..我试了一下,但我得到的元数据无法收回错误... – arul 2014-02-01 09:48:41

2

根据对方的回答列出的相同issue,你只需要使用的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方法,因为根据文档可能需要一段时间才能运行。

+1

对于我来说,在这种情况下,所有返回的字符串都是空的......但vlc获取信息的罚款。 – 2015-11-21 15:19:31