2011-01-23 17 views
20

का उपयोग कर कच्चे पीसीएम डेटा से डब्ल्यूएवी फ़ाइल बनाना I WAV फ़ाइल रिकॉर्ड करने के लिए ऑडियो रिकॉर्डॉर्ड क्लास का उपयोग करने का प्रयास कर रहा हूं। समस्या यह है कि यह केवल कच्चे पीसीएम डेटा की आपूर्ति करता है, और यदि मैं इसे किसी फ़ाइल में लिखता हूं, तो कोई हेडर जानकारी नहीं है, इसलिए यह किसी भी मीडिया प्लेयर में नहीं खेलेंगे। मैं इस कच्चे डेटा से डब्ल्यूएवी फ़ाइल कैसे बना सकता हूं?एंड्रॉइड एसडीके

या वैकल्पिक रूप से, क्या WAV फ़ाइल (या वैकल्पिक रूप से एमपी 3) में एंड्रॉइड में ध्वनि रिकॉर्ड करने का कोई अन्य तरीका है?

ओह, और मुझे पता है कि MediaRecorder का उपयोग किया जा सकता है क्योंकि यह या तो WAV या एमपी 3 प्रारूपों का समर्थन नहीं करता है।

+0

ओह ... मैं कोशिश की है mediarecord वर्ग का उपयोग करने के एंड्रॉयड में कच्चे पीसीएम डेटा पढ़ने के लिए ... आप कोड का उपयोग कर रहे पोस्ट करें सकता है चाहते हो सकता है? – Atmocreations

उत्तर

13

ठीक है, मुझे यह पता चला है। इस पोस्ट में मुझे मदद करने में महत्वपूर्ण था: http://computermusicblog.com/blog/2008/08/29/reading-and-writing-wav-files-in-java

असल में, मैं ByteArrayOutputStream इस्तेमाल किया AudioRecord है, जो तब मुझे बाइट सरणी और इसका आकार जब प्रक्रिया से किया जाता है प्राप्त करने देता है से कच्चे पीसीएम डेटा लिखने के लिए। इसके बाद मैं ऊपर दिए गए लिंक के अनुसार डब्ल्यूएवी हेडर बनाने के लिए नमूना रूट, बिट्रेट और स्टीरियो/मोनो सेटिंग्स के संयोजन के साथ उस डेटा का उपयोग कर सकता हूं। परिणामस्वरूप फ़ाइल पूरी तरह से काम करता है!

+1

क्या आप एक नमूना कोड दिखा सकते हैं कि आपने इसे कैसे प्राप्त किया। मेरे पास एक समान आवश्यकता है –

+1

क्या आप मुझे इस बारे में कुछ विचार दे सकते हैं कि आपने अपने कोड में wavIo फ़ाइल का उपयोग कैसे किया है? मुख्य 2 विधियां हैं, पढ़ें और सहेजें। मैं ऑडियो रिकॉर्डॉर्ड क्लास का उपयोग कर एंड्रॉइड में ऑडियो रिकॉर्ड कर रहा हूं। और मैं बाइट द्वारा डेटा बाइट लिख रहा हूं .. क्या आप कृपया मदद कर सकते हैं क्योंकि मेरा ऑडियो ठीक से रिकॉर्ड नहीं हो रहा है। – Scorpion

+4

आपका लिंक समाप्त हो गया है .. कृपया कोड या लिंक का कुछ हिस्सा दें ... – WonderSoftwares

0

MediaRecorder.setOutputFormat() की जांच करें, आप अपनी रिकॉर्डिंग के लिए विभिन्न कंटेनर प्रारूप सेट कर सकते हैं; MediaRecorder.OutputFormat.MPEG_4 और MediaRecorder.OutputFormat.THREE_GPP है; RAW के साथ केवल प्रारूप सेट किया गया हैऑडियोऑनकोडर (MediaRecorder.AudioEncoder.AMR_NB);

क्षमा करें लेकिन एमपी 3 का लाभ नहीं उठा रहा है। रिकॉर्डिंग के लिए आपको वास्तव में एमपी 3 चाहिए? एमपी 3 के विपरीत WAV एक कंटेनर है, प्रारूप नहीं; डब्ल्यूएवी किसी भी प्रकार का एन्कोडिंग प्रारूप हो सकता है।

आप अपने कच्चे पीसीएम डेटा के सामने कुछ डब्ल्यूएवी आरआईएफएफ हेडर को प्रीपेड करने के लिए हमेशा स्वतंत्र होते हैं (जब तक आप प्रारूप को बिल्कुल जानते हैं)। इसे कैसे दिखाना है इसके लिए यहां देखें: http://www-mmsp.ece.mcgill.ca/Documents/AudioFormats/WAVE/WAVE.html

+0

मुझे निश्चित रूप से आउटपुट फ़ाइल को WAV (पीसीएम एन्कोडेड) या एमपी 3 होने की आवश्यकता है। जिस सेवा को अपलोड किया जा रहा है, उसे इसकी आवश्यकता है। तो, जहां तक ​​मैं देख सकता हूं, मैं MediaRecorder का उपयोग नहीं कर सकता। मैं भी – user496854

+0

हूं, मुझे निश्चित रूप से आउटपुट फ़ाइल को WAV (पीसीएम एन्कोडेड) या एमपी 3 होने की आवश्यकता है। जिस सेवा को अपलोड किया जा रहा है, उसे इसकी आवश्यकता है। तो, जहां तक ​​मैं देख सकता हूं, मैं MediaRecorder का उपयोग नहीं कर सकता। मैं सभी निम्न-स्तरीय सामानों पर भी काफी बुरा हूं, इसलिए मुझे नहीं पता कि मैं खुद को हेड बनाने में कितना अच्छा होगा। क्या जावा पैकेज नहीं हैं जिनके पास यह क्षमता है? – user496854

+0

मुझे वास्तव में यह मिला: http://computermusicblog.com/blog/2008/08/29/reading-and-writing-wav-files-in-java, जिसने इसे काम करने के लिए बहुत आसान बना दिया। लेकिन मुझे यकीन नहीं है कि बाइट 40 के लिए डेटाट खंड का आकार कैसे प्राप्त करें। मैंने कच्चे पीसीएम डेटा को फाइल में लिखा था, तो क्या यह उस फ़ाइल का आकार होगा? – user496854

-2

आप

+3

क्यों? इसका डब्ल्यूएवी या एमपी 3 आउटपुट के लिए कोई समर्थन नहीं है – user496854

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