मैं iPhone के लिए एक इंटरैक्टिव कहानियों प्रकार आवेदन विकासशील रहा हूँ और मैं हाल ही में डिवाइस पर मिश्रण ऑडियो के विषय में एक निराशा बग का सामना किया है।MPMoviePlayerController और AVAudioPlayer ऑडियो मिश्रण गड़बड़
सबसे पहले, मैंने एक ऑडियो सत्र स्थापित किया। मैं AVAudioSessionCategoryAmbient को init श्रेणी सेट और फिर और मेरे AVAudioPlayer उदाहरण खेलते हैं। अब, ऑडियो, जबकि पृष्ठभूमि में खेल रहा है मैं पहले से लोड हो रहा है कर रहा हूँ एक MPMoviePlayerController prepareToPlayके लिए एक कॉल के बाद का उपयोग कर चलाने के लिए वीडियो। इस तरह से वीडियो को प्री-लोड करने का कारण यह है कि मुझे तुरंत सख्त समय के साथ क्यू पर तुरंत खेलने की आवश्यकता है।
इस कॉन्फ़िगरेशन में, ऑडियो/मूवी ठीक काम करती है और वे मिश्रण करते हैं और एक-दूसरे को बाधित नहीं करते हैं। हालांकि, यह विशेष ऑडियो सत्र श्रेणी डिवाइस लॉक होने पर ऑडियो जारी रखने की अनुमति नहीं देती है, एक सुविधा जो मुझे वास्तव में चाहिए। नतीजतन मुझे एक अलग श्रेणी पर विचार करने के लिए मजबूर किया गया है: AVAudioSessionCategory प्लेबैक।
डिफ़ॉल्ट रूप से इस श्रेणी अन्य ऑडियो के साथ मिश्रण की अनुमति नहीं देता, according to the Apple docs। अन्य ऑडियो मैं प्रासंगिक श्रेणी अधिभावी कर रहा हूँ के साथ मिश्रण करने के लिए सक्षम करने के लिए:
OSStatus propertySetError = 0;
UInt32 setProperty = 1;
propertySetError = AudioSessionSetProperty(kAudioSessionProperty_OverrideCategoryMixWithOthers, sizeof(setProperty), &setProperty);
assert(propertySetError == 0);
दुर्भाग्य से, इस दौरान बंद मुद्दा मेरे खेल को हल करती है, लेकिन एक और मुद्दा परिचय: AVAudioPlayer ऑडियो एक छोटी सी हकलाना के साथ वीडियो लोड के रूप में संक्षेप में बाधा आती है । स्टटर छोटा है, शायद एक सेकंड से भी कम है लेकिन उपयोगकर्ता अनुभव को बाधित करने के लिए पर्याप्त है। मैं this related post जो मुझे सक्षम AVAudioSessionCategoryAmbient के साथ वीडियो पहले से लोड करने पढ़ा है, लेकिन दुर्भाग्य से एक ही दृष्टिकोण नई श्रेणी के साथ काम करने लगता है।
रिटर्न कोड के अनुसार ऑडियो सत्र श्रेणी सफलतापूर्वक लागू की जाती है। क्या किसी को पता है कि इस श्रेणी के साथ ऑडियो मिश्रण को सक्षम करने से परिवेश श्रेणी द्वारा प्रदान की जाने वाली मिश्रण सुविधा के समान नहीं है?
स्टैक ओवरव्लो में आपका स्वागत है। अच्छा प्रश्न! – Moshe
धन्यवाद! मुझे उम्मीद है कि मेरे पास स्वरूपण सही है! – jdmunro
क्या आपने दो ढांचे के बीच मिश्रण करने के बजाय वीडियो प्लेबैक करने के लिए AVPlayer का उपयोग करने का प्रयास किया है? – adam