流媒体源上的MediaMetadataRetriever

Mar*_*uis 10 android metadata media-player

我很难从流媒体源播放当前曲目.使用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();
Run Code Online (Sandbox Code Playgroud)

任何好的和容易的建议将不胜感激.感谢您的时间!

Wil*_*ann 12

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

  • 不幸的是,该库现在无法运行。它抛出“setDataSource failed: status = 0xFFFFFFFF”,未解决。是他们的任何替代解决方案。 (2认同)

小智 7

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

setDataSource(String uri, Map<String, String> headers)
Run Code Online (Sandbox Code Playgroud)

所以,例如,

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

}
Run Code Online (Sandbox Code Playgroud)

我用流式mp4测试它,它对我有用.另外,您还需要在AsyncTask或其他线程中使用setDataSource方法,因为根据文档运行可能需要一段时间.

  • 对于我来说,在这种情况下,所有返回的字符串都是null ...但是vlc获取信息正常. (2认同)