如何使用swift在ios上的AVCaptureVideoPreviewLayer上添加叠加?

时间:2017-06-11 04:30:03

标签: ios swift avfoundation avcapturesession

我正在使用swift构建一个ios应用程序,需要QR扫描仪功能。

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

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

我知道这可以通过在一个VideoPreviewLayer之上添加另一个VideoPreviewLayer来实现。

我的问题是:

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

  2. 如何在后台更改VideoPreviewLayer的亮度级别?

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

2 个答案:

答案 0 :(得分:1)

长话短说:你可以使用AVCaptureVideoPreviewLayer进行视频捕捉,创建另一个CALayer()并使用layer.insertSublayer(......,上面:...)来插入你的" custom"视频图层上方的图层,按照自定义我的意思是另一个CALayer,比如说

layer.contents = spinner.cgImage

这里多了detailed instructions

答案 1 :(得分:1)

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

请查看此repo中的源代码作为示例。

要将视频捕获限制在遮罩区域,您必须设置rectOfInterest中的AVCaptureMetadataOutput

let rectOfInterest = videoPreviewLayer.metadataOutputRectConverted(fromLayerRect: rect)
metadataOutput.rectOfInterest = rectOfInterest