Frage

Ich versuche, Audio mit der Methode in aufzunehmen diese Frage;mit AVCaptureSession und AVCaptureAudioDataOutput.Dies scheint mit einer Unannehmlichkeit gut zu funktionieren:Im Simulator funktioniert es nicht.Sowohl AVAudioRecorder als auch die gute alte SpeakHere-Demo-App funktionieren im Simulator einwandfrei, wenn ich das interne Mikrofon meines MacBook Pro verwende.

Das Problem ist das [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeAudio] gibt null im Simulator, sodass nachfolgender Code mit der Meldung fehlschlägt (wenn er versucht, etwas hinzuzufügen). null als Eingabe für die 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:].'

Gibt es eine einfache Möglichkeit, dies im Simulator zum Laufen zu bringen?

War es hilfreich?

Lösung

Der AVCaptureDevice Die Klasse ist im Simulator nicht implementiert (zumindest zum jetzigen Zeitpunkt, vielleicht wird sich das in Zukunft ändern).

Versuchen Sie es z.B.

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

Dadurch wird eine leere Liste im Simulator erstellt (es werden jedoch alle Erfassungsgeräte aufgelistet, wenn sie auf einem echten iDevice kompiliert und ausgeführt werden).

Diese Art von Funktionalität muss ohnehin auf einem realen Gerät getestet werden (aufgrund der Abhängigkeit von Hardwaredetails, wie z. B. Latenz und unterstützten Beispielformaten), sodass es für Testzwecke nicht so wichtig ist, Geräteunterstützung im Simulator zu haben.Aber es wäre in der Tat schön, es für Demozwecke zu haben.

Um eine Demo auf dem Simulator laufen zu lassen, können Sie vielleicht die Capture-Eingabe simulieren.Wenn Sie wirklich etwas Zeit damit verbringen möchten, können Sie vielleicht darauf zurückgreifen AVAudioRecorder für den Simulator (ich habe AVAudioRecorder nie verwendet, daher kann ich nicht sagen, ob es auf dem Simulator funktioniert oder nicht, aber aus Ihrer Frage habe ich gelesen, dass es funktioniert).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top