2013-03-20 6 views
5

मुझे स्ट्रीमिंग स्रोत से चल रहे वर्तमान ट्रैक को प्रदर्शित करने में कठिन समय हो रहा है। MediaMetaDataRetriever क्लास का उपयोग एक न्यूल लौटाता है, जिसका अर्थ है कि यह असफल रहा। मैं एक सरल विधि लिखा था लेकिन अब मैं एमपी 3, अर्थोपाय अग्रिम, 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 बहुत सराहना की जाएगी की तरह मीडिया फ़ाइलों पर यह केवल काम करता है सोचने के लिए inclining कर रहा हूँ। अपना समय देने के लिए धन्यवाद!

उत्तर

11

मीडियामैटाडाटा रीट्रिवर एंड्रॉइड के कुछ संस्करणों पर यूआरएल के साथ काम नहीं करता है, this समस्या देखें। मैंने एक कामकाज के रूप में FFmpegMediaMetadataRetriever बनाया, मैं इसे आजमाने का सुझाव देता हूं।

+0

धन्यवाद विलियम आपके उत्तर के लिए। यह मेरी समस्या को हल करने में मदद करनी चाहिए। – Marquis

+0

यह केवल मीडिया फ़ाइलों के लिए है, स्ट्रीमिंग स्रोत के लिए नहीं। – jul

+0

विलियम सीमैन यह यूट्यूब वीडियो पर काम कर रहा है .. मैं कोशिश करता हूं लेकिन मुझे मेटाडाटा त्रुटि प्राप्त नहीं हो सका ... – 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 

} 

मैं एक साथ यह परीक्षण किया स्ट्रीमिंग एमपी 4 और यह मेरे लिए काम किया। इसके अलावा बस एक नोट, आप setDataSource विधि को AsyncTask या किसी अन्य थ्रेड पर उपयोग करना चाहेंगे, क्योंकि दस्तावेज़ों के अनुसार चलाने में कुछ समय लग सकता है।

+1

मेरे लिए उस मामले में सभी लौटे हुए तार शून्य हैं ... लेकिन वीएलसी को जानकारी ठीक हो जाती है। –

संबंधित मुद्दे