Pregunta

Estoy intentando capturar audio, usando el método en esta pregunta;con AVCaptureSession y AVCaptureAudioDataOutput.Esto parece funcionar bien con 1 inconveniente:No funciona en el simulador.Tanto AVAudioRecorder como la antigua aplicación de demostración SpeakHere funcionan bien en el simulador, usando el micrófono interno de mi MacBook Pro.

El problema es que [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeAudio] da null en el simulador, por lo que el código posterior falla con el mensaje (cuando intenta agregar null como entrada a 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 una manera fácil de hacer que esto funcione en el simulador?

¿Fue útil?

Solución

El AVCaptureDevice La clase no está implementada en el simulador (al menos en el momento de escribir este artículo, tal vez cambie en el futuro).

Pruebe, por ejemplo.

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

lo que producirá una lista vacía en el simulador (pero enumerará todos los dispositivos de captura si se compila y ejecuta en un iDevice real).

Este tipo de funcionalidad debe probarse en un dispositivo real de todos modos (debido a la dependencia de los detalles del hardware, como la latencia y los formatos de muestra admitidos), por lo que para fines de prueba no es tan importante tener soporte para dispositivos en el simulador.Pero sería bueno tenerlo para fines de demostración.

Para tener una demostración ejecutándose en el simulador, tal vez puedas simular la entrada de captura.Si realmente quieres dedicarle algo de tiempo, tal vez puedas recurrir al AVAudioRecorder para el simulador (nunca usé AVAudioRecorder, así que no puedo decir si funciona o no en el simulador, pero por tu pregunta leí que sí).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top