2013-01-02 58 views
9

मैं, एक बाइट सरणी में AudioInputStream के माध्यम से एक wav फ़ाइल पढ़ रहा हूँक्या मुझे ऑडियो एंडपुटस्ट्रीम के माध्यम से डेटा पढ़ने पर मुझे बड़े एंडियन और छोटे एंडियन की परवाह करने की ज़रूरत है?

AudioInputStream audiofile = AudioSystem.getAudioInputStream(f); 
    byte[] audio=new byte[numberofframes*framesize]; 
    int bytes=audiofile.read(audio); 

मैं विचार कर रहा है कि डेटा थोड़ा endian में व्यवस्थित किया जाता या AudioInputStream यह मेरे लिए क्या करता है एक नमूना के बाइट्स की व्यवस्था करने की जरूरत है?

+0

आप फ़ाइल से पढ़ रहे हैं? –

+0

हाँ मैं JFilechooser के माध्यम से हूं, फ़ाइल f = chooser.getSelectedFile(); –

+0

'framesize' इसका क्या महत्व है? यदि '1', एंडियन प्रासंगिक नहीं है। अगर '4', यह है। –

उत्तर

1

बिग-बनाम छोटे-अंतराल मामले यदि डेटा एक बाइट से अधिक में एन्कोड किया गया है, उदाहरण के लिए, चैनलों की संख्या के बावजूद, 16 या उससे अधिक की बिट गहराई। जावा स्वचालित रूप से पीसीएम बाइट्स को डिफ़ॉल्ट क्रम में व्यवस्थित नहीं करता है, यह केवल उन्हें स्वीकार करता है।

निम्नलिखित स्पष्ट, जावा ऑडियो ट्यूटोरियल का सबसे अच्छा लिखा एकल खंड है, imho है, और को शामिल किया गया मुद्दों स्वरूपों और उनके रूपांतरण से संबंधित:

http://docs.oracle.com/javase/tutorial/sound/converters.html

+0

तो आप कहते हैं कि बाइट सरणी में लिटिल एंडियन में स्वरूपित ऑडियो डेटा होगा, जिसे नमूने पढ़ने के लिए मुझे अपने स्वयं से परिवर्तित करना होगा? –

+0

आउटपुट लाइनें या तो बिग- या लिटिल-एंडियन हो सकती हैं, हां? यदि आप विपरीत प्रकार इनपुट करते हैं, तो मुझे 90% यकीन है कि आउटपुट करने से पहले आपको बाइट्स का स्वैप करना होगा। लेकिन इसके लिए एक कनवर्टर होगा, इसलिए आपको बाइट स्तर पर अपने हाथों को गंदे नहीं होना चाहिए। क्या आपने मेरे द्वारा भेजे गए लिंक को देखा? मुझे यकीन नहीं है कि पीसीएम डेटा के लिए "स्वरूपित ऑडियो डेटा" शब्द कितना उचित है। यदि एन्कोडिंग 16-बिट या उससे अधिक है, तो बाइट्स को एक आदेश या दूसरे में होना चाहिए, भले ही। मुझे नहीं लगता कि AudioInputStream "परवाह करता है," यह सिर्फ पीसीएम के कच्चे बाइट्स लाता है। –

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

  • कोई संबंधित समस्या नहीं^_^