私はAVFoundationを使用して写真を撮ったり保存したりする方法を学ぼうとしています。私は現在、写真を撮るためのアクションにリンクされたボタンを備えたカスタムカメラビューを作成することができました。ボタンをクリックすると、デリゲートメソッドが呼び出されていません。didFinishProcessingPhotoSampleBufferがコールしていません
class ViewController: UIViewController, AVCapturePhotoCaptureDelegate{
@IBOutlet weak var camerView: UIView!
@IBOutlet weak var photoButton: UIButton!
var captureSession : AVCaptureSession?
var sessionOutput : AVCapturePhotoOutput?
var previewLayer : AVCaptureVideoPreviewLayer?
var photoSettings : AVCapturePhotoSettings?
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
previewLayer?.frame = (self.camerView?.bounds)!
previewLayer?.position = CGPoint(x: (self.camerView?.frame.width)!/2, y: (self.camerView?.frame.height)!/2)
}
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
//Capture Session
captureSession = AVCaptureSession()
let devices = AVCaptureDeviceDiscoverySession(deviceTypes: [.builtInDualCamera], mediaType: AVMediaTypeVideo, position: .back)
for device in (devices?.devices)! {
do {
let input = try AVCaptureDeviceInput(device: device)
if (captureSession?.canAddInput(input))! {
captureSession?.addInput(input)
}
if (captureSession?.canAddOutput(sessionOutput))! {
captureSession?.addOutput(sessionOutput)
}
previewLayer = AVCaptureVideoPreviewLayer()
previewLayer?.session = captureSession
self.camerView.layer.addSublayer(previewLayer!)
self.camerView.addSubview(photoButton)
captureSession?.startRunning()
} catch {
print("error occurred")
}
}
}
@IBAction func takePhoto(_ sender: UIButton) {
photoSettings = AVCapturePhotoSettings(format: [AVVideoCodecKey : AVVideoCodecJPEG])
photoSettings?.flashMode = .on
sessionOutput?.capturePhoto(with: photoSettings!, delegate: self)
}
//AVCapturePhotoCaptureDelegate Functions
func capture(_ captureOutput: AVCapturePhotoOutput, didFinishProcessingPhotoSampleBuffer photoSampleBuffer: CMSampleBuffer?, previewPhotoSampleBuffer: CMSampleBuffer?, resolvedSettings: AVCaptureResolvedPhotoSettings, bracketSettings: AVCaptureBracketedStillImageSettings?, error: Error?) {
print("PhotoSampleBuffer")
}
}
私はdidFinisheProcessingPhotoSampleBuffer方法でやろうとしていますすべてを印刷するだけである()ので、私はそれが呼び出されている知っている:
は、ここに私のViewController.swiftです。私は後で保存する方法を見つけ出すでしょう(誰かが私にこのことを知るために良いresoureを指摘しない限り)。
他の情報が必要な場合は教えてください!