2011-01-12 3 views
5

में ऑडियो फ़ाइल रिवर्स मैं इस ऐप को विकसित करने के बहुत ही शुरुआती चरणों में हूं लेकिन इसमें देखकर मैं पहले से ही एक समस्या तक पहुंच चुका हूं। मुझे पीछे एक ऑडियो फाइल चलाने में सक्षम होना चाहिए (आप जानते हैं कि छुपा संदेश प्रकट करना चाहते हैं;))। मुझे एंड्रॉइड पर ऑडियो के साथ काम करने का कोई अनुभव नहीं है और यह पता नहीं है कि यह भी संभव है या नहीं।एंड्रॉइड

मैं जो जावा (Click Here For Question)

में समस्या का हल लेकिन इस javax.sound पुस्तकालय जो एंड्रॉयड का समर्थन नहीं करता का उपयोग करता है यहाँ पर एक प्रश्न पाया। क्या मुझे इस समस्या को हल करने के लिए इस पुस्तकालय की आवश्यकता होगी या ऑडियो फाइल को रिवर्स करने का कोई और तरीका है?

+0

हाय @ सैमरोली क्या आप वर्णित एल्गोरिदम के साथ अपना लक्ष्य प्राप्त कर रहे हैं? मैं मूल 44 से बाइट हेडर को मूल रूप से मूल फ़ाइल से रिवर्स करने के लिए कॉपी करता हूं, और मैं खेलने के लिए WAV ऑडियो नहीं बना सका? मैं सोक्स और रिवर्स ऑडियो का उपयोग करता हूं और जांचता हूं कि 44-बाइट हेडर बिल्कुल नहीं है? कृपया अगर आप किसी भी सलाह के साथ मेरी मदद कर सकते हैं तो मैं इसकी सराहना करूंगा –

उत्तर

5

एक सामान्य WAV फ़ाइल में 44-बाइट हेडर होता है जिसके बाद वास्तविक नमूना मान होते हैं। "फ्रेम" का आकार WAV फ़ाइल के गुणों पर निर्भर है: एक फ़ाइल जो स्टीरियो और 16-बिट्स-प्रति-नमूना है, में 4-बाइट फ्रेम आकार होगा (बाएं नमूने के लिए दो बाइट और सही नमूने के लिए दो बाइट्स होंगे)।

तो कोड में, आप बाइट सरणी को मूल के समान आकार के समान बनाकर दूसरी WAV फ़ाइल बनायेंगे। आप 44-बाइट हेडर को मूल से प्रतिलिपि में प्रतिलिपि बनाते हैं, और उसके बाद अंतिम फ्रेम से शुरू होने वाले मूल फ्रेम के माध्यम से फिर से काम करते हैं और पहले के लिए आगे काम करते हैं। आप कॉपी फ्रेम में प्रत्येक फ्रेम को विपरीत स्थान में कॉपी करते हैं (यानी अंतिम मूल फ्रेम को हेडर के तुरंत बाद कॉपी सरणी में कॉपी किया गया है; दूसरे फ्रेम के बाद दूसरी फ्रेम की प्रतिलिपि बनाई गई है)। फिर बस उलटा फ़ाइल चलाएं।

तो आपको ऐसा करने के लिए javax.sound लाइब्रेरी की आवश्यकता नहीं है - आपको बस बाइट्स कॉपी और हेरफेर करने में सक्षम होना चाहिए। एफवाईआई, सभी डब्ल्यूएवी फाइलें इस तरह "कैननिकल" नहीं हैं (कैननिकल का अर्थ है 44-बाइट हेडर प्लस नमूना मान, और कुछ भी नहीं)। डब्ल्यूएवी प्रारूप वास्तव में एक आरआईएफएफ प्रारूप है, जिसका अर्थ सिद्धांत में आपको नमूना मूल्यों के अधिक जटिल निष्कर्षण करने की आवश्यकता है। अभ्यास में (विशेष रूप से यदि आप स्वयं डब्ल्यूएवी फाइलें बना रहे हैं) तो आप आमतौर पर यहां वर्णित एक बहुत ही सरल दृष्टिकोण से दूर हो सकते हैं।

नोट: यदि आपकी आवाज एमपी 3 फ़ाइलें हैं, तो उलटना एक और जटिल कार्य है, क्योंकि नमूना डेटा एमपी 3 फ़ाइल में नमूने के रूप में संग्रहीत नहीं किया जाता है। यदि आप एमपी 3 का उपयोग कर रहे हैं, तो उन्हें रिवर्स करने का एक तरीका उन्हें WAV में परिवर्तित करना है और फिर WAV फ़ाइल को उलट देना है।

+0

मैं MediaRecorder का उपयोग कर माइक्रोफ़ोन से ऑडियो कैप्चर करके WAV फ़ाइल बना रहा हूं, इसलिए मुझे लगता है कि यह तरीका ठीक होगा? मैं एसडीकार्ड से फ़ाइल को बाइट सरणी में सहेजने और 44 बिट हेडर की प्रतिलिपि बनाने के बारे में कैसे जाउंगा? आपके पहले उत्तर के लिए धन्यवाद यह अब तक सहायक रहा है और मैं अवधारणा को समझता हूं। – SamRowley

+1

हाँ, MediaRecorder से प्राप्त WAV फ़ाइल शायद सबसे अधिक कैननिकल है, इसलिए आपको ठीक होना चाहिए। यहां कुछ और कोड के साथ एक लिंक दिया गया है जो आपको करने की ज़रूरत है जो आपको करने की ज़रूरत है: http://www.dreamincode.net/forums/topic/171550-converting-short-array-to-byte-array-using-java- ऑन-android-डिवाइस / – MusiGenesis