2012-09-24 35 views
5

रिकॉर्ड करते समय मुझे एक गेम में वीओआईपी जोड़ने का आरोप लगाया गया है (क्रॉस-प्लेटफ़ॉर्म, इसलिए इसे करने के लिए ऐप्पल गेमकिट का उपयोग नहीं कर सकता)।आईओएस ऑडियो यूनिट रिमोटियो प्लेबैक

3 या 4 दिन अभी के लिए, मैं मैं उदाहरण के और इस तरह के दसियों अनदेखा कर दिया पाने के लिए मेरे सिर ऑडियो इकाई और remoteIO लपेट ... कोशिश कर रहा हूँ, लेकिन हर बार यह केवल करने के लिए एक सरल एल्गोरिथ्म लागू कर रहा है इनपुट पीसीएम और स्पीकर पर इसे वापस चलाएं। वीओआईपी करने के लिए ऐप्पल के दस्तावेज़ीकरण के अनुसार हमें kAudioSessionCategory_PlayAndRecord का उपयोग करना चाहिए।

UInt32 audioCategory = kAudioSessionCategory_PlayAndRecord; 

     status = AudioSessionSetProperty(kAudioSessionProperty_AudioCategory, 
             sizeof(audioCategory), 
             &audioCategory); 
     XThrowIfError(status, "couldn't set audio category"); 

1) लेकिन यह (मुझे लगता है) कि playAndRecord हमेशा मैं गलत कर रहा हूँ, माइक से आ रही क्या (या अधिक excatly PerformThru कॉलबैक // aurioTouch) खेलेंगे?

मैं सबसे सरल कॉलबैक है, लेकिन AURender

static OSStatus PerformThru(
          void      *inRefCon, 
          AudioUnitRenderActionFlags *ioActionFlags, 
          const AudioTimeStamp  *inTimeStamp, 
          UInt32      inBusNumber, 
          UInt32      inNumberFrames, 
          AudioBufferList    *ioData) 
{ 
OSStatus err = AudioUnitRender(THIS->rioUnit, ioActionFlags, inTimeStamp, 1, inNumberFrames, ioData); 
    if (err) 
     printf("PerformThru: error %d\n", (int)err); 
    return err 
} 

कुछ नहीं कर रहे कि कॉलबैक से मैं सहकर्मी को डेटा भेजने के लिए इच्छुक हूँ (सीधे बिल्कुल नहीं, लेकिन डेटा यह से आएगा) ...

मुझे नहीं लगता कि मैं इनपुट से अलग आउटपुट कैसे खेल सकता हूं, सिवाय इसके कि 2 इकाइयों, एक रिकॉर्डिंग, एक खेल के साथ, लेकिन ऐसा लगता है कि ऐप्पल का उद्देश्य क्या है (अभी भी प्रलेखन में प्रवेश करना)।

और निश्चित रूप से, मैं इसके बारे में किसी भी प्रलेखन नहीं मिल रहा है, ऑडियो इकाई अब भी है काफी संयुक्त राष्ट्र से प्रलेखित ...

किसी को क्या यह करने के लिए सबसे अच्छा तरीका है पर एक विचार के लिए होता है?

उत्तर

8

मैंने वीओआईपी या KAudioSessionCategory_PlayAndRecord का उपयोग नहीं किया है। लेकिन अगर आप mic से उठाए गए आवाज को रिकॉर्ड/ट्रांसमिट करना चाहते हैं और नेटवर्क पैकेज से आने वाले डेटा को वापस चलाएं: Here एक अच्छा नमूना है जिसमें माइक और प्लेबैक दोनों शामिल हैं। अगर आपने ऐप्पल से इस दस्तावेज़ को नहीं पढ़ा है, तो मैं दृढ़ता से this की अनुशंसा करता हूं।

संक्षेप में: आपको ऑडियोयूनिट्स उदाहरण बनाने की आवश्यकता है। इसमें, दो कॉलबैक कॉन्फ़िगर करें: एक mic के लिए और एक प्लेबैक के लिए। कॉलबैक माइक फ़ंक्शन आपको उस डेटा की आपूर्ति करेगा जो mic से उठाया गया था। फिर आप जो भी चुने गए नेटवर्क प्रोटोकॉल के साथ अन्य उपकरणों में कनवर्ट और ट्रांसमिट कर सकते हैं। प्लेबैक कॉलबैक फ़ंक्शन वह जगह है जहां आप वापस आने के लिए अन्य नेटवर्क उपकरणों से आने वाले डेटा की आपूर्ति करते हैं।

+1

मैंने अपनी खोज के दौरान इस नमूने की स्थापना नहीं की है, इससे मुझे बहुत धन्यवाद करने में मदद मिली! – TheSquad

+0

पोस्ट के लिए आपको बहुत कुछ धन्यवाद। मैं इसे लंबे समय से खोज रहा हूं.अब आपने मेरी समस्या हल की है.बहुत धन्यवाद और आपको नया साल मुबारक हो जाना चाहिए। –

+1

रिकॉर्डर ऑडियो बफर को कैसे सहेज लिया जाए, कृपया इसे साझा करें? –

0

आप this सरल उदाहरण देख सकते हैं। यह रिमोट आईओ इकाई का उपयोग करने का वर्णन करता है। इस उदाहरण को समझने के बाद, आपको PJSIP's audio driver देखना चाहिए। ये आपको अपने स्वयं के समाधान को लागू करने में मदद कर सकते हैं। शुभकामनाएँ।