2011-06-10 23 views
11

मैं एक एमपी 3 फ़ाइल से आईडी 3 पढ़ने की कोशिश कर रहा हूं जो स्थानीय रूप से एसडी कार्ड में संग्रहीत है।एक एमपी 3 फ़ाइल के ID3 टैग पढ़ें

मैं मूल रूप से लाने के लिए चाहते हैं

  1. शीर्षक
  2. कलाकार
  3. एल्बम
  4. ट्रैक की लंबाई
  5. एल्बम कला

उत्तर

29

आप का उपयोग कर यह सब प्राप्त कर सकते हैं MediaMetadataRetriever

MediaMetadataRetriever mmr = new MediaMetadataRetriever(); 
mmr.setDataSource(filePath); 

String albumName = 
    mmr.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ALBUM); 
+0

धन्यवाद .. कोई भी उदाहरण आप मुझे भी इंगित कर सकते हैं –

+0

मैं MediaMetadataRetriever आयात करने में सक्षम नहीं हूं। ग्रहण विकल्प प्रदान नहीं करता है। कोई उपाय ? –

+0

इसका उपयोग एपीआई स्तर 10 या जिंजरब्रेड में किया जा सकता है। – Reno

4

the MP3 file format देखें। असल में, आपको फ़ाइल के अंतिम 128 बाइट्स को पढ़ना होगा; यदि पहले 3 बाइट "TAG" हैं, तो आपको आवश्यक फ़ील्ड को आगे बढ़ाएं और पढ़ें; यदि नहीं, तो फ़ाइल में संलग्न जानकारी नहीं है।

+0

पर कॉल करते समय अवैध अवैधकरण प्राप्त करना मैं जानना चाहता हूं कि एंड्रॉइड में इसे कैसे कार्यान्वित किया जाए। कोई उपाय ? –

+1

फ़ाइल से 'इनपुटस्ट्रीम' और 128 बाइट बफर बनाएं; बफर में अंतिम 128 बाइट्स पढ़ें; बफर के पहले 3 बाइट्स की जांच करें, 'TAG' होना चाहिए; 'Arrays.copyOfRange' का उपयोग कर प्रासंगिक बाइट्स पढ़ें; उन बाइट्स को 'int' (शैली के लिए) या' स्ट्रिंग' (अन्य सभी चीज़ों के लिए) में कनवर्ट करें। –

+0

यह वास्तव में इतना आसान नहीं है। टैग के अधिक संस्करण हैं, यह आसान है कि आप केवल पुराने संस्करण को पढ़ लें। –

3

यदि अंतिम 128 बाइट टोकन "टैग" के साथ शुरू होता है तो फ़ाइल में ID3v1 (या ID3v1.1) टैग होता है। ID3v2.3 टैग टोकन "आईडी 3" द्वारा इंगित फ़ाइल की शुरुआत (स्ट्रीमिंग के लिए उपयुक्त) में स्थित हैं। मेरा मानना ​​है कि ID3v2.4 "3DE" द्वारा इंगित किया गया है, लेकिन मुझे यकीन नहीं है ...

+0

यह वही जानकारी थी जो मुझे चाहिए, धन्यवाद! मैं इलिक्सीर के साथ बैंडकैम्प एमपी 3 के पैटर्न से मिलान करने की कोशिश कर रहा था और हमेशा एक त्रुटि मिली, क्योंकि बैंडकैम्प एमपी 3 आईडी 3v2.3 टैग किए गए हैं। यदि मैं कर सकता, तो सौ गुना ऊपर उठाना होगा। – odiumediae