iOS:如何在 AVCaptureSession 上激活图像稳定功能?
Posted
技术标签:
【中文标题】iOS:如何在 AVCaptureSession 上激活图像稳定功能?【英文标题】:iOS : How to activate image stabilization on an AVCaptureSession? 【发布时间】:2015-10-07 13:34:00 【问题描述】:我想在我的应用中捕获稳定的图像,但我没有找到实现它所需的配置。
这是我的代码:
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 ")
结果是: 不支持稳定 稳定未激活
【问题讨论】:
【参考方案1】:首先,您忘记将您的AVCaptureStillImageOutput
添加到AVCaptureSession
。在查询其功能之前,您必须这样做!
captureSession.addOutput(stillImageOutput)
其次,neither Digital nor Optical Image Stabilisation are supported on the front camera。
第三,在后置摄像头上,在支持的平台上(数字似乎在 5S 以上可用)AVCaptureStillImageOutput automaticallyEnablesStillImageStabilizationWhenAvailable
默认为 YES
,所以如果你切换到后置摄像头 - 那么你已经会 em> 正在使用某种形式的图像稳定。
注意:光学图像稳定is only available on the 6+ and 6S+(尽管链接的技术说明尚未针对 6S 型号更新)。
【讨论】:
我遵循了您的建议,但仍然无法正常工作。 (我编辑了问题) 我在 iPhone 5 上运行它 5S及以上可使用数字稳定 这回答了你的问题吗? 嗨@RhythmicFistman 感谢您分享您的知识。你碰巧在这里知道我们相关问题的答案吗? ***.com/questions/34912050/…。感谢您的宝贵时间!以上是关于iOS:如何在 AVCaptureSession 上激活图像稳定功能?的主要内容,如果未能解决你的问题,请参考以下文章
iOS 相机 AVCaptureSession 在纵向与横向大小或分辨率
AVCaptureSession addInput:不适用于 iOS7
iOS:AVCaptureSession 不会录制超过 11 秒的音频 [重复]
当发生 AVCaptureSessionInterruptionReasonAudioDeviceInUseByAnotherClient 时 AVCaptureSession 不在 ios 中录制视