2013-03-20 22 views
5

Mam trudny czas wyświetlania bieżącego utworu odtwarzanego ze źródła strumieniowego. Korzystanie z klasy MediaMetaDataRetriever zwraca wartość NULL, co oznacza, że ​​się nie udało. Napisałem prosty sposób, ale teraz jestem skłaniając do myślenia to działa tylko na plikach multimedialnych, takich jak MP3, WMA, AVI, itpMediaMetadataRetriever na strumieniowym źródle

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

Wszelkie dobre i łatwe ZALECENIA byłoby bardzo mile widziane. Dziękuję za Twój czas!

Odpowiedz

11

MediaMetadataRetriever nie działa z adresami URL w niektórych wersjach systemu Android, zobacz numer this. Stworzyłem FFmpegMediaMetadataRetriever jako obejście, sugeruję wypróbowanie tego.

+0

Dziękuję Williamowi za odpowiedź. To powinno pomóc w rozwiązaniu mojego problemu. – Marquis

+0

Dotyczy tylko plików multimedialnych, a nie strumieniowego źródła. – jul

+0

William Seemann Czy to działa na youtube videos .. próbuję go, ale mam metadane nie mógł retrived błąd ... – arul

2

Według tego samego issue wymienionych w drugiej odpowiedzi, wystarczy użyć metody setDataSource z tych argumentów:

setDataSource(String uri, Map<String, String> headers) 

Tak na przykład

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

} 

Testowałem go z streaming mp4 i zadziałało dla mnie. Również tylko uwaga, będziesz chciał użyć metody setDataSource w AsyncTask lub w innym wątku, ponieważ może potrwać dłuższy czas, zgodnie z dokumentami.

+1

Dla mnie w takim przypadku wszystkie zwracane ciągi mają wartość null ... ale vlc pobiera informacje poprawnie. –

Powiązane problemy