2010-03-28 14 views
6

के लिए स्मृति में एक LPCM बफर जनरेट कर रहा है मैं प्रोग्राम के रूप में एक ध्वनि तरंग पैदा करते हैं और AVAudioPlayer साथ यह खेलना चाहता हूँ। मेरे पास मेरे तरंगों को रैखिक पीसीएम, 44100 हर्ट्ज, मोनो, 8 बिट प्रति नमूना के रूप में एन्कोड करने के लिए कोड है।AVAudioPlayer initWithData

मैं लिफाफा किस तरह मैं इस बफर के आसपास लपेटो करने ताकि AVAudioPlayer पीसीएम के रूप में पहचानता आवश्यकता पर स्पष्ट नहीं कर रहा हूँ।

उत्तर

4

शायद जोड़ने एक WAV header मदद मिलेगी?

+0

मुझे आश्चर्य है कि यह अनुभव या अटकलों से बात कर रहा है या नहीं। – iter

+0

मैंने कोशिश नहीं की, लेकिन इसे काम करना है। – zoul

+0

आपके स्पष्टीकरण के लिए धन्यवाद। मैं अपने स्वयं के डब्ल्यूएवी एन्कोडर को घुमाने की लाइनों के साथ कम सोच रहा हूं और मेरे लिए उठाने के लिए ऑडियोटूलबॉक्स का उपयोग करने के साथ-साथ और भी कम सोच रहा हूं। – iter

4

पीसीएम एक एनालॉग ऑडियो सिग्नल का एक डिजिटल प्रतिनिधित्व है। दुर्भाग्यवश, यह ऑडियो-चैनल, बिट गहराई या नमूना दर के बारे में किसी भी मेटाडेटा को समाहित नहीं करता है - पीसीएम डेटा को सही तरीके से पढ़ने के लिए आवश्यक सभी। मुझे लगता है कि AVAudioPlayer एक NSData ऑब्जेक्ट में लिपटे इस पीसीएम डेटा को स्वीकार करेगा जब तक कि आप AVAudioPlayer ऑब्जेक्ट में मैन्युअल रूप से उन चर सेट करने में सक्षम थे। दुर्भाग्यवश, वे चर केवल पढ़ने के लिए पढ़े जाते हैं, भले ही प्रलेखन कहता है कि AVAudioPlayer कोर ऑडियो को संभालने वाली किसी भी चीज़ को संभाल सकता है, उसके पास कच्चे एलपीसीएम डेटा को संभालने का कोई तरीका नहीं है।

जैसा कि ज़ौल ने कहा है, मैं कल्पना करता हूं कि इसके बारे में जाने का सबसे आसान तरीका डब्ल्यूएवी हेडर में फेंक रहा है, क्योंकि हेडर उपर्युक्त आवश्यक चर के AVPlayer को सूचित करता है। यह 44 बाइट्स है, आसानी से मजाक कर दिया गया है, और अच्छी तरह से परिभाषित किया गया है - मैंने ऊपर दिए गए definition का उपयोग WAV हेडर एन्कोडिंग और डिकोडिंग को लागू करने के लिए किया था। साथ ही, यह सिर्फ आपके अनमोडिफाइड एलपीसीएम डेटा के लिए तैयार है।

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