【发布时间】:2012-03-17 23:54:27
【问题描述】:
我正在尝试使用this question中的方法捕获音频;使用 AVCaptureSession 和 AVCaptureAudioDataOutput。这似乎可以正常工作,但有 1 个不便:它在模拟器中不起作用。 AVAudioRecorder 和旧的 SpeakHere 演示应用程序都可以在模拟器中正常工作,使用我 MacBook Pro 上的内置麦克风。
问题是[AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeAudio] 在模拟器中给出null,因此后续代码失败并显示消息(当它尝试将null 作为输入添加到 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:].'
有没有简单的方法让它在模拟器中工作?
【问题讨论】:
-
我不知道为什么 AVCaptureSession 设置不起作用,但是如果您不一定需要在模拟器上测试录制,而只需要在设备上测试,您仍然可以排除 iOS 上的录制部分-模拟器使用:#if TARGET_IPHONE_SIMULATOR // 这里是模拟器代码 #else // 这里是“真实”iOS 设备代码 #endif 这将防止模拟器上的应用程序崩溃。
标签: ios avfoundation avcapturesession