AVCaptureSession模拟器中的audio

我试图捕捉audio,使用这个问题的方法; 与AVCaptureSession和AVCaptureAudioDataOutput。 这似乎工作正常1不便:它不起作用的模拟器。 AVAudioRecorder和老的SpeakHere演示程序都可以在模拟器中正常工作,使用MacBook Pro上的内置麦克风。

问题是[AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeAudio]在模拟器中给出null ,所以随后的代码将失败,并显示消息(当它尝试将null作为input添加到AVCaptureSession时):

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

有没有一种简单的方法来获得这个在模拟器中工作?

AVCaptureDevice类没有在模拟器上实现(至less在这篇文章中,可能会在将来改变)。

尝试例如

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

这将在模拟器上产生一个空列表(但是如果编译并在真实的iDevice上运行,将列出所有的捕获设备)。

这种function需要在真实设备上进行testing(由于硬件细节的依赖性,如延迟和支持的采样格式),所以出于testing目的,在模拟器中支持设备并不重要。 但是,为了演示的目的,确实很好。

要在模拟器上运行演示,也许你可以模拟捕获input。 如果你真的想花一些时间,也许你可以在模拟器AVAudioRecorder备用(我从来没有使用AVAudioRecorder,所以我不能告诉它是否在模拟器上工作,但从你的问题我读它确实)。