iOS:如何在AVCaptureSession上激活图像稳定功能?
我想在我的应用程序中捕获稳定的图像,但我还没有找到实现它所需的配置 这是我的代码:iOS:如何在AVCaptureSession上激活图像稳定功能?,ios,swift,avcapturesession,ios-camera,Ios,Swift,Avcapturesession,Ios Camera,我想在我的应用程序中捕获稳定的图像,但我还没有找到实现它所需的配置 这是我的代码: let frontCamera = cameraWithPosition(AVCaptureDevicePosition.Front) let captureSession = AVCaptureSession() if captureSession.canSetSessionPreset(AVCaptureSessionPresetPhoto) { captureSession.sessionPre
let frontCamera = cameraWithPosition(AVCaptureDevicePosition.Front)
let captureSession = AVCaptureSession()
if captureSession.canSetSessionPreset(AVCaptureSessionPresetPhoto) {
captureSession.sessionPreset = AVCaptureSessionPresetPhoto
print("Session preset has been set ")
}
else {
print("Session preset couldn't be set ")
}
var error: NSError?
var input: AVCaptureDeviceInput!
do {
input = try AVCaptureDeviceInput(device: frontCamera)
} catch let error1 as NSError {
error = error1
input = nil
}
if error == nil && captureSession!.canAddInput(input) {
captureSession.addInput(input)
let stillImageOutput = AVCaptureStillImageOutput()
stillImageOutput.outputSettings = [AVVideoCodecKey: AVVideoCodecJPEG]
if stillImageOutput.stillImageStabilizationSupported {
stillImageOutput.automaticallyEnablesStillImageStabilizationWhenAvailable = true
print("Stabilization supported ")
}
else {
print("Stabilization is not supported ")
}
}
因此,会话预设设置正确,但不支持图像稳定
我可以做些什么来支持图像稳定
**有节奏的拳击手反应后的第二次尝试:** 我切换到后摄像头,在设置之前,我已将输出添加到captureSession,但我的图像仍然没有稳定:
let backCamera = cameraWithPosition(AVCaptureDevicePosition.Back)
let captureSession = AVCaptureSession()
if captureSession.canSetSessionPreset(AVCaptureSessionPresetPhoto) {
captureSession.sessionPreset = AVCaptureSessionPresetPhoto
print("Session preset has been set ")
}
else {
print("Session preset couldn't be set ")
}
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)
let stillImageOutput = AVCaptureStillImageOutput()
stillImageOutput.outputSettings = [AVVideoCodecKey: AVVideoCodecJPEG]
if captureSession.canAddOutput(stillImageOutput) {
captureSession.addOutput(stillImageOutput)
if stillImageOutput.stillImageStabilizationSupported == true {
stillImageOutput.automaticallyEnablesStillImageStabilizationWhenAvailable = true
print("Stabilization supported ")
}
else {
print("Stabilization is not supported ")
}
if stillImageOutput.stillImageStabilizationActive == true {
print("Stabilization is active ")
}
else {
print("Stabilization is not active ")
}
}
}
结果是:不支持稳定化
稳定功能未处于活动状态首先,您忘记将
AVCaptureStillImageOutput
添加到AVCaptureSession
。您必须在查询其功能之前执行此操作
captureSession.addOutput(stillImageOutput)
其次
第三,在后置摄像头上,在受支持的平台上(数字显示在5S以上可用)AVCaptureStillImageOutput自动启用可启用的静态图像稳定,当可用时
默认为YES
,因此如果您切换到后置摄像头,那么您将已经在使用某种形式的图像稳定
注意:光学图像稳定(尽管6S车型的链接技术说明尚未更新)。我按照您的建议操作,但仍然不起作用。(我编辑了这个问题)我正在iPhone 5上运行它。数字稳定功能在5S上可用,这回答了你的问题吗?嗨@RhythmaticFistman谢谢你分享你的知识。你知道我们相关问题的答案吗。谢谢你的时间!