AVCaptureSession para áudio em simulador
-
14-12-2019 - |
Pergunta
Estou a tentar capturar áudio, usando o método de esta pergunta;com AVCaptureSession e AVCaptureAudioDataOutput.Isso parece funcionar bem com 1 inconveniente:ele não funciona no simulador.Tanto AVAudioRecorder, e o bom e velho SpeakHere aplicativo de demonstração, funcionam bem no simulador, usando o microfone interno no meu MacBook Pro.
O problema é que [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeAudio]
dá null
no simulador, para subseqüente código de falha com a mensagem (quando tenta adicionar null
como entrada para o 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:].'
Existe uma maneira fácil para começar este trabalho no simulador?
Solução
O AVCaptureDevice
classe não está implementado no simulador (como esta escrito pelo menos, talvez isso vai mudar no futuro).
Tente e.g.
NSLog(@"%@", [AVCaptureDevice devices]);
o que irá produzir uma lista vazia no simulador (mas será que lista todos os dispositivos de captura de se compilado e executado em um verdadeiro iDevice).
Este tipo de funcionalidade precisa ser testado em um dispositivo real de qualquer maneira (devido ao hardware detalhe de dependência, como a latência e exemplos de formatos suportados), portanto, para fins de teste não é tão importante ter o suporte de dispositivo no simulador.Mas seria realmente bom tê-lo para fins de demonstração.
Para ter uma demo em execução no simulador, talvez você pode zombar de captura de entrada.Se você realmente quer passar algum tempo com isso, talvez você possa reversão no AVAudioRecorder
para o simulador (eu nunca usei AVAudioRecorder, então eu não posso dizer se é ou não trabalho no simulador, mas a partir de sua pergunta, li que ele faz).