gpt4 book ai didi

ios - 让闪光灯与 AVFoundation Camera 一起工作

转载 作者:搜寻专家 更新时间:2023-11-01 05:53:41 24 4
gpt4 key购买 nike

我使用 AVFoundation 创建了一个相机。我想将闪光灯设置为自动,这样用户就不必处理它。我尝试添加代码 backCamera.flashMode = AVCaptureFlashMode.Auto 但它似乎不起作用。非常感谢您提供的任何反馈!!

     func setUpCamera() {

captureSession = AVCaptureSession()
captureSession!.sessionPreset = AVCaptureSessionPresetPhoto

let backCamera = AVCaptureDevice.defaultDeviceWithMediaType(AVMediaTypeVideo)

// CODE THAT SEEMS LIKE IT SHOULD WORK
if backCamera.hasFlash {

backCamera.flashMode = AVCaptureFlashMode.Auto
}
var error: NSError?
var input: AVCaptureDeviceInput!

do {
input = try AVCaptureDeviceInput(device: backCamera)

} catch let error1 as NSError {

error = error1
input = nil
}

if error == nil && captureSession!.canAddInput(input) {

captureSession!.addInput(input)

stillImageOutput = AVCaptureStillImageOutput()
stillImageOutput!.outputSettings = [AVVideoCodecKey: AVVideoCodecJPEG]

if captureSession!.canAddOutput(stillImageOutput) {

captureSession!.addOutput(stillImageOutput)
previewLayer = AVCaptureVideoPreviewLayer(session: captureSession)
previewLayer!.videoGravity = AVLayerVideoGravityResizeAspectFill
previewLayer!.connection?.videoOrientation = AVCaptureVideoOrientation.Portrait
previewVideoView.layer.addSublayer(previewLayer!)
captureSession!.startRunning()
}
}
}

@IBAction func onSnapPhotoButtonPressed(sender: UIButton) {

if let videoConnection = stillImageOutput!.connectionWithMediaType(AVMediaTypeVideo) {

videoConnection.videoOrientation = AVCaptureVideoOrientation.Portrait
stillImageOutput?.captureStillImageAsynchronouslyFromConnection(videoConnection, completionHandler: {(sampleBuffer, error) in

if (sampleBuffer != nil) {

let imageData = AVCaptureStillImageOutput.jpegStillImageNSDataRepresentation(sampleBuffer)
let dataProvider = CGDataProviderCreateWithCFData(imageData)
let cgImageRef = CGImageCreateWithJPEGDataProvider(dataProvider, nil, true, CGColorRenderingIntent.RenderingIntentDefault)

let image = UIImage(CGImage: cgImageRef!, scale: 1.0, orientation: UIImageOrientation.Right)
self.imageView.image = image

self.clearPhotoButton.hidden = false
self.nextButton.hidden = false
self.view.bringSubviewToFront(self.imageView)
}
})
}
}

最佳答案

来自文档:

Before you attempt to set properties of a capture device (its focus mode, exposure mode, and so on), you must first acquire a lock on the device using the lockForConfiguration: method. You can then set the properties and release the lock using the unlockForConfiguration method.

我没看到你这样做。

关于ios - 让闪光灯与 AVFoundation Camera 一起工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35303928/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com