2017-10-08 286 views
-1

我們有一個應用程序和更新,我們希望在應用程序中有Photobooth。一切正常,我得到相機的預覽等,但拍照不起作用..我嘗試了所有我在這裏找到的解決方案,但沒有任何工作。快速拍攝照片崩潰

頭:

var captureSession: AVCaptureSession? 
var videoPreviewLayer: AVCaptureVideoPreviewLayer? 

抽獎:

do { 

     let input = try AVCaptureDeviceInput(device: getDevice(position: .front)) 

     captureSession = AVCaptureSession() 
     captureSession?.addInput(input) 

     videoPreviewLayer = AVCaptureVideoPreviewLayer(session: captureSession) 
     videoPreviewLayer?.videoGravity = AVLayerVideoGravityResizeAspectFill 
     videoPreviewLayer?.frame = cameraView.bounds 
     cameraView.layer.addSublayer(videoPreviewLayer!) 

     captureSession?.startRunning() 
... 

TakePhoto():

let stillImageOutput = AVCaptureStillImageOutput.init() 
    stillImageOutput.outputSettings = [AVVideoCodecKey: AVVideoCodecJPEG] 
    if(self.captureSession?.canAddOutput(stillImageOutput))!{ 
     self.captureSession?.addOutput(stillImageOutput) 
    } 

    let videoConnection = stillImageOutput.connection(withMediaType:AVMediaTypeVideo) 

    if (videoConnection?.isEnabled)! { 
     stillImageOutput.captureStillImageAsynchronously(from:videoConnection, completionHandler: { 
      (sampleBuffer, error) in 
... 

而且它崩潰的最後一行。以下是錯誤:

*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '*** -[AVCaptureStillImageOutput captureStillImageAsynchronouslyFromConnection:completionHandler:] Inconsistent state' 

信不信由你,但我們需要在3天內更新我們從蘋果應用程式,或將在AppStore(我們需要額外的功能。)被移除所以,如果你能幫助我們會非常感謝!

+0

看看我的例子,我只是上傳到https://github.com/NikhilManapure/AVFoundationDemo,我希望這有助於。 –

+0

AVCaptureStillImageOutput已被棄用。改用AVCapturePhotoOutput。 –

+0

@NikhilManapure我完全複製了所有的代碼,但我得到的錯誤:「錯誤發生:無法記錄」捕獲功能,三重檢查了一切,它真的是一樣的 – MaximVW

回答

0

我最好的猜測(上午5:30)是,你沒有要求使用相機爲你的應用程序。完成之後,在嘗試捕獲照片之前,您需要確保變量stillImageOutput對方法captureStillImageAsynchronouslyFromConnection做出了響應。如果它不響應該方法,您的用戶將被要求更改他的「設置」以允許您使用相機。

+0

我確實要求它,這不是問題。但還是謝謝你! – MaximVW