ios – 用于模拟器中音频的AVCaptureSession

我正在尝试使用 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:].'

有没有一种简单的方法可以让它在模拟器中工作?

解决方法

AVCaptureDevice类没有在模拟器上实现(至少在撰写本文时,可能会在将来更改).

尝试例如

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

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

无论如何,这种功能需要在真实设备上进行测试(由于硬件细节依赖性,例如支持的延迟和样本格式),因此出于测试目的,在模拟器中获得设备支持并不重要.但是将它用于演示目的确实很不错.

要在模拟器上运行演示,也许您可​​以模拟捕获输入.如果你真的想花一些时间在它上面,也许你可以在模拟器的AVAudioRecorder上回退(我从来没有使用过AVAudioRecorder,所以我无法分辨它是否在模拟器上工作,但从你的问题我读到它确实).

相关文章

当我们远离最新的 iOS 16 更新版本时,我们听到了困扰 Apple...
欧版/美版 特别说一下,美版选错了 可能会永久丧失4G,不过只...
一般在接外包的时候, 通常第三方需要安装你的app进行测...
前言为了让更多的人永远记住12月13日,各大厂都在这一天将应...