2013-03-20 2 views
5

ストリーミングソースから再生している現在のトラックを表示するのに苦労しています。 MediaMetaDataRetrieverクラスを使用するとNULLが返され、失敗したことを意味します。私は簡単な方法を書きましたが、今、私は何かいいと簡単recommandationsをいただければ幸いですストリーミングソースの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(); 

などMP3、WMA、AVI、のようなメディアファイルにのみ動作を考えるように傾斜しています。あなたの時間をありがとう!

答えて

11

特定のバージョンのAndroidではMediaMetadataRetrieverがURLで動作しません。this号を参照してください。私はFFmpegMediaMetadataRetrieverを回避策として作成しました。試してみることをお勧めします。

+0

お返事ありがとうございます。これは私の問題を解決するのに役立ちます。 – Marquis

+0

ストリーミングソース用ではなく、メディアファイル用です。 – jul

+0

William SeemannそれはYouTubeのビデオに取り組んでいます..私はそれを試してみますが、私はメタデータがエラーを取得できませんでした... – arul

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

その場合、返される文字列はすべてnullですが、vlcは情報を正しく取得します。 –