Ho creato un AVCaptureSession per acquisire l'output video e visualizzarlo all'utente tramite UIView. Ora voglio essere in grado di fare clic su un pulsante (metodo TakePhoto) e visualizzare l'immagine dalla sessione in un UIImageView. Ho provato a scorrere tutte le connessioni dei dispositivi e provare a salvare l'output, ma questo non ha funzionato. Il codice che ho è sottoSessione AVCapture per acquisire l'immagine SWIFT
let captureSession = AVCaptureSession()
var stillImageOutput: AVCaptureStillImageOutput!
@IBOutlet var imageView: UIImageView!
@IBOutlet var cameraView: UIView!
// If we find a device we'll store it here for later use
var captureDevice : AVCaptureDevice?
override func viewDidLoad() {
// Do any additional setup after loading the view, typically from a nib.
super.viewDidLoad()
println("I AM AT THE CAMERA")
captureSession.sessionPreset = AVCaptureSessionPresetLow
self.captureDevice = AVCaptureDevice.defaultDeviceWithMediaType(AVMediaTypeVideo)
if(captureDevice != nil){
beginSession()
}
}
func beginSession() {
self.stillImageOutput = AVCaptureStillImageOutput()
self.captureSession.addOutput(self.stillImageOutput)
var err : NSError? = nil
self.captureSession.addInput(AVCaptureDeviceInput(device: self.captureDevice, error: &err))
if err != nil {
println("error: \(err?.localizedDescription)")
}
var previewLayer = AVCaptureVideoPreviewLayer(session: self.captureSession)
self.cameraView.layer.addSublayer(previewLayer)
previewLayer?.frame = self.cameraView.layer.frame
captureSession.startRunning()
}
@IBAction func takePhoto(sender: UIButton) {
self.stillImageOutput.captureStillImageAsynchronouslyFromConnection(self.stillImageOutput.connectionWithMediaType(AVMediaTypeVideo)) { (buffer:CMSampleBuffer!, error:NSError!) -> Void in
var image = AVCaptureStillImageOutput.jpegStillImageNSDataRepresentation(buffer)
var data_image = UIImage(data: image)
self.imageView.image = data_image
}
}
}
Ottenere questo errore ora 'terminazione app a causa di eccezione non identificata 'NSInvalidArgumentException', la ragione: '*** Impossibile aggiungere uscita per catturare sessione -> -> perché più di un output dello stesso tipo è unsupported.'' –
Inizia prendendo la linea: captureSession.addOutput (self.stillImageOutput) e vedi dove stai aggiungendo. Questo dovrebbe risolvere l'errore. – user3353890
@ user3353890 ho corretto l'errore (ho aggiornato il codice precedente) ma ora sto ottenendo solo un'immagine statica per la mia anteprima invece del video dalla videocamera ...? –