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 に答える