2011-02-28 15 views
11

मैं एंड्रॉइड में ऑडियो प्लेयर विकसित कर रहा हूं। तो मैं बजाना गीत यानी कलाकार का नाम, अवधि, बिट दर और नमूना आवृत्ति के विवरण जोड़ना चाहता हूं। मैं MediaStore.Audio.Media library का उपयोग कर कलाकार नाम और संगीत फ़ाइल की अवधि प्राप्त कर सकता हूं। लेकिन मैं एक ही फ़ाइल की बिट दर और नमूना आवृत्ति प्राप्त करने में असमर्थ हूं। तो मैं वही कैसे प्राप्त कर सकता हूं?एंड्रॉइड में नमूनाकरण दर और संगीत फ़ाइल (एमपी 3) की आवृत्ति कैसे प्राप्त करें?

जैसा कि मुझे पता है, यह मूल पुस्तकालय का उपयोग करके किया जा सकता है। लेकिन कैसे नहीं जानते? तो कोई इस पर मेरी मदद कर सकता है?

+0

मैं आवृत्ति की गणना करने के बारे में सोच पाने के लिए ज्यादा बेहतर तरीका मिल गया है, तो आप एक फास्ट फूरियर-परिवर्तन (FFT) क्या करना है। – RoflcoptrException

+0

एक एफएफटी वास्तविक ध्वनि की आवृत्ति वितरण, नमूना दर नहीं, नहीं देगा? –

उत्तर

15

आप सेकंड में ऑडियो की लंबाई से फ़ाइल आकार को विभाजित, उदाहरण के लिए, एक यादृच्छिक एएसी से से यह अनुमान लगा सकता है मेरे पुस्तकालय में M4A इनकोडिंग:

File Size: 10.3MB (87013064 bits) 
Length: 5:16 (316 Seconds) 
Which gives: 87013064 bits/316 seconds = 273426.147 bits/sec or ~273kbps 
Actual Bitrate: 259kbps 

चूंकि ज्यादातर ऑडियो फ़ाइलें एक ज्ञात सेट है वैध बिटरेट स्तरों के लिए, आप बिट रेट को प्रदर्शन के लिए उचित स्तर पर ले जाने के लिए इसका उपयोग कर सकते हैं।

+0

धन्यवाद जेक, मुझे उपरोक्त फॉर्मूला का उपयोग करके बिट-रेट प्राप्त नहीं हो सकता है। आवृत्ति के बारे में क्या? – Sandy

+0

यह एक कठिन है, क्योंकि नमूना दर अन्य जानकारी से प्राप्त करना कठिन होगा। सीडी के बाद लगभग सभी उपभोक्ता ऑडियो 44.1KHz नमूनाकरण का उपयोग करते हैं, इसलिए यह मानना ​​सुरक्षित हो सकता है, या बस इसे नहीं दिखाया जा सकता क्योंकि यह कई उपयोगकर्ताओं के लिए बहुत कम परिणाम है। –

+0

हाँ आप सही हैं। लेकिन मैं एंड्रॉइड में देशी पुस्तकालयों का उपयोग करके दोनों प्राप्त कर सकता हूं। लेकिन मुझे नहीं पता कि इसका उपयोग कैसे किया जाए। – Sandy

4

MediaMetadataRetrieverMETADATA_KEY_DURATION प्रदान करता है जिसे आप बिटरेट के लिए फ़ाइल आकार के साथ विभाजित कर सकते हैं।

+1

-1, यह नमूना दर – Brad

4

मैं जानता हूँ कि यह समाधान हो गया है, लेकिन मैं सटीक उत्तर

MediaExtractor mex = new MediaExtractor(); 
try { 
    mex.setDataSource(path);// the adresss location of the sound on sdcard. 
} catch (IOException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} 

MediaFormat mf = mex.getTrackFormat(0); 

int bitRate = mf.getInteger(MediaFormat.KEY_BIT_RATE); 
int sampleRate = mf.getInteger(MediaFormat.KEY_SAMPLE_RATE); 
संबंधित मुद्दे