Tôi đã tạo ra một AVCaptureSession để nắm bắt đầu ra video và hiển thị nó cho người sử dụng thông qua UIView. Bây giờ tôi muốn có thể nhấp vào một nút (phương pháp takePhoto) và hiển thị hình ảnh từ phiên trong một UIImageView. Tôi đã cố gắng lặp qua từng kết nối thiết bị và cố gắng để tiết kiệm đầu ra nhưng không hoạt động. Mã tôi có bên dưới làAVCapture phiên Để capture image 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
}
}
}
Bắt lỗi này ngay bây giờ 'Chấm dứt ứng dụng do ngoại lệ còn tự do 'NSInvalidArgumentException', lý do: '*** Không thể thêm đầu ra để chụp phiên -> -> vì nhiều hơn một đầu ra cùng loại là unsupported.'' –
Bắt đầu bằng cách đưa ra khỏi dòng: captureSession.addOutput (self.stillImageOutput) và xem nơi bạn đang thêm. Điều đó sẽ khắc phục lỗi. – user3353890
@ user3353890 i cố định các lỗi (Tôi cập nhật các mã trên) nhưng bây giờ tôi chỉ nhận được một hình ảnh tĩnh cho xem trước của tôi thay vì video từ camera ...? –