2012-03-15 15 views
7

में ऑडियो के लिए AVCaptureSession this question में विधि का उपयोग करके मैं ऑडियो कैप्चर करने की कोशिश कर रहा हूं; AVCaptureSession और AVCaptureAudioDataOutput के साथ। ऐसा लगता है कि 1 असुविधा के साथ ठीक काम करता है: यह सिम्युलेटर में काम नहीं करता है। AVAudioRecorder, और अच्छे पुराने स्पीकहेरे डेमो ऐप, मेरे मैकबुक प्रो पर आंतरिक माइक्रोफ़ोन का उपयोग करके सिम्युलेटर में ठीक काम करते हैं।सिम्युलेटर

समस्या है कि [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeAudio] सिम्युलेटर में null देता है, तो बाद के कोड संदेश के साथ विफल रहता है (जब यह AVCaptureSession को इनपुट के रूप में null जोड़ने की कोशिश करता है) है:

*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** Can't add <AVCaptureDeviceInput: 0x9138b40 [(null)]> because the device does not support AVCaptureSessionPresetHigh. Use -[AVCaptureDevice supportsAVCaptureSessionPreset:].' 

वहाँ एक आसान तरीका यह प्राप्त करने के लिए है सिम्युलेटर में काम करने के लिए?

+0

मुझे नहीं पता कि AVCaptureSession सेटअप क्यों काम नहीं कर रहा है, हालांकि अगर आपको सिम्युलेटर पर रिकॉर्डिंग का परीक्षण करने की आवश्यकता नहीं है, लेकिन केवल डिवाइस पर आप अभी भी आईओएस-सिम्युलेटर पर रिकॉर्डिंग भाग को बाहर कर सकते हैं: # यदि TARGET_IPHONE_SIMULATOR // सिम्युलेटर कोड #else // "असली" आईओएस डिवाइस कोड यहां #endif यह सिम्युलेटर पर ऐप क्रैश को रोक देगा। – Markus

उत्तर

14

AVCaptureDevice कक्षा सिम्युलेटर पर लागू नहीं की गई है (कम से कम इस लेखन के रूप में, शायद यह भविष्य में बदल जाएगी)।

उदाहरण का प्रयास करें

NSLog(@"%@", [AVCaptureDevice devices]); 

जो सिम्युलेटर पर एक खाली सूची का उत्पादन करेगा (लेकिन सभी कैप्चर डिवाइस सूची यदि संकलित और एक वास्तविक iDevice पर चलेंगे)।

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

सिम्युलेटर पर एक डेमो चलने के लिए, हो सकता है कि आप कैप्चर इनपुट का नकल कर सकें। यदि आप वास्तव में कुछ समय बिताना चाहते हैं, तो शायद आप सिम्युलेटर के लिए AVAudioRecorder पर फ़ॉलबैक कर सकते हैं (मैंने कभी भी AVAudioRecorder का उपयोग नहीं किया है, इसलिए मैं यह नहीं बता सकता कि यह सिम्युलेटर पर काम करता है या नहीं करता है, लेकिन आपके प्रश्न से मैं पढ़ता हूं यह करता है)।

+2

यह एक वास्तविक शर्म की बात है। मुझे उम्मीद थी (उम्मीद थी कि AVAudioRecorder AVCaptureSession के शीर्ष पर बनाया गया था, इसलिए मुझे लगता है कि यह मामला नहीं है। मैं सहमत हूं कि अंत में मैं इस सामान को किसी डिवाइस पर परीक्षण करना चाहता हूं, लेकिन पुनरावृत्ति विकास चक्रों के दौरान यह बहुत अच्छा होगा अगर मैं सिम्युलेटर का उपयोग कर सकूं। – Claude

+0

इसके लिए मैं सिम्युलेटर का उपयोग करते समय उस फ़ाइल के स्थिर प्लेबैक में ऑडियो रिकॉर्डिंग (एक असली डिवाइस का उपयोग करके, यह किस प्रकार का ऐप है) पर निर्भर करता है। – Krumelur

+0

यह बदल गया है, यह अब एक खाली सरणी आउटपुट नहीं करता है। मैं एक्सकोड 5.0.2 का उपयोग कर रहा हूँ। आईपैड आईओएस 5.0 सिम्युलेटर 2 डिवाइस लौटाता है: फ्रंट कैमरा, रीयर कैमरा। – neoneye

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