2013-03-20 24 views
5

Geçerli parçanın akış kaynağından oynatılmasını gösteren zor bir zaman geçiriyorum. MediaMetaDataRetriever sınıfını kullanmak, başarısız olduğu anlamına gelen bir NULL döndürür. Ben basit bir yöntem yazdım ama şimdi herhangi bir iyi ve kolay recommandations büyük takdirMediaMetadataRetriever yayın kaynağında

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

vb MP3, WMA, AVI gibi medya dosyaları bu sadece eserlerini düşünmek yöneldikleri ediyorum. Zaman ayırdığın için teşekkürler!

cevap

11

MediaMetadataRetriever, Android'in belirli sürümlerinde URL'lerle çalışmıyor, bkz. this. Bir geçici çözüm olarak FFmpegMediaMetadataRetriever'u oluşturdum, denemeyi öneririm.

+0

Cevabınız için teşekkürler William. Bu benim problemimi çözmeye yardımcı olmalı. – Marquis

+0

Sadece medya dosyaları içindir, akış kaynağı için değil. – jul

+0

William Seemann youtube videolarında çalışıyor muyum? Ben deniyorum ama meta verilerim hatası alınamadı ... – arul

2

diğer yanıtında listelenen aynı issue göre, sadece bu argümanlarla setDataSource yöntemini kullanmak gerekir: Örneğin Yani

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 

} 

Ben bunu test akış mp4 ve benim için çalıştı. Ayrıca sadece bir not, bir AsyncTask veya başka bir iş parçacığında setDataSource yöntemini kullanmak isteyeceksiniz, çünkü belgelere göre çalışmak için biraz zaman alabilir.

+1

Benim için bu durumda geri dönen tüm dizeler boş ... ama vlc bilgi alır. –