如何在AVCaptureVideoPreviewLayer上添加叠加层?

问题描述 投票:1回答:2

我正在使用Swift构建iOS应用,该应用需要QR码扫描仪功能。

[我已经使用AVFoundation实现了QR码扫描仪,现在我的捕获屏幕看上去与视频录制屏幕相同,即AVCaptureVideoPreviewLayer显示了摄像机正在捕获的内容。

但是由于它是QR码扫描仪,而不是常规图像或视频捕获,我希望我的VideoPreviewLayer看起来像这样:camera overlay screenshot

我知道可以通过在一个VideoPreviewLayer的基础上再添加一个VideoPreviewLayer来实现。

我的问题是:

  1. 如何仅将边框添加到上(或更小)预览层的边缘?

  2. 如何更改背景中VideoPreviewLayer的亮度级别?

  3. 如何忽略背景层捕获的媒体?

ios swift avfoundation avcapturesession
2个回答
1
投票

长话短说:您可以使用AVCaptureVideoPreviewLayer进行视频捕获,创建另一个CALayer()并使用layer.insertSublayer(...,上方:...)在视频层上方插入“自定义”层,并通过自定义我的意思是再说一次CALayer,请说

layer.contents = spinner.cgImage

这里还有detailed instructions


1
投票

您不应该使用其他VideoPreviewLayer。相反,您应该添加两个子层-一个用于遮罩的背景区域,另一个用于拐角。

以示例的形式查看此repo中的源代码。

为了将视频捕获限制在屏蔽区域,您必须设置rectOfInterestAVCaptureMetadataOutput

let rectOfInterest = videoPreviewLayer.metadataOutputRectConverted(fromLayerRect: rect)
metadataOutput.rectOfInterest = rectOfInterest
© www.soinside.com 2019 - 2024. All rights reserved.