2013-03-20 62 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