Metodo 1: non sono sicuro che funzioni, ma prova a riprodurre un file audio vuoto subito prima di inviare l'evento di acquisizione.
Per riprodurre una clip, aggiungi il Audio Toolbox
framework #include <AudioToolbox/AudioToolbox.h>
e riproduci il file audio in questo modo immediatamente prima di scattare la foto:
NSString *path = [[NSBundle mainBundle] pathForResource:@"blank" ofType:@"wav"];
SystemSoundID soundID;
NSURL *filePath = [NSURL fileURLWithPath:path isDirectory:NO];
AudioServicesCreateSystemSoundID((CFURLRef)filePath, &soundID);
AudioServicesPlaySystemSound(soundID);
Ecco un file audio vuoto se ne hai bisogno.
https://d1sz9tkli0lfjq.cloudfront.net/items/0Y3Z0A1j1H2r1c0z3n3t/blank.wav
________________________________________________________________________________________________________________________________________
Metodo 2: c'è anche un'alternativa se questo non funziona. Finché non è necessario disporre di una buona risoluzione, è possibile acquisire un fotogramma dal flusso video , evitando così del tutto il suono dell'immagine.
________________________________________________________________________________________________________________________________________
Metodo 3: Un altro modo per farlo sarebbe quello di fare uno "screenshot" della tua applicazione. Fallo in questo modo:
UIGraphicsBeginImageContext(self.window.bounds.size);
[self.window.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
NSData * data = UIImagePNGRepresentation(image);
[data writeToFile:@"foo.png" atomically:YES];
Se vuoi che questo riempia l'intero schermo con un'anteprima del flusso video in modo che il tuo screenshot abbia un bell'aspetto:
AVCaptureSession *captureSession = yourcapturesession;
AVCaptureVideoPreviewLayer *previewLayer = [AVCaptureVideoPreviewLayer layerWithSession:captureSession];
UIView *aView = theViewYouWantTheLayerIn;
previewLayer.frame = aView.bounds; // Assume you want the preview layer to fill the view.
[aView.layer addSublayer:previewLayer];