我正在使用swift构建一个ios应用程序,需要QR扫描仪功能。
我已经使用AVFoundation实现了QR扫描仪,现在我的捕获屏幕看起来与视频录制屏幕相同,即AVCaptureVideoPreviewLayer显示相机捕获的内容。
但由于它是QR扫描仪而不是常规图像或视频捕获,我希望我的VideoPreviewLayer看起来像这样:
我知道这可以通过在一个VideoPreviewLayer之上添加另一个VideoPreviewLayer来实现。
我的问题是:
如何将寄宿生仅添加到上层(或更小)预览层的边缘?
如何在后台更改VideoPreviewLayer的亮度级别?
如何忽略背景图层捕获的媒体?
答案 0 :(得分:1)
长话短说:你可以使用AVCaptureVideoPreviewLayer进行视频捕捉,创建另一个CALayer()并使用layer.insertSublayer(......,上面:...)来插入你的" custom"视频图层上方的图层,按照自定义我的意思是另一个CALayer,比如说
layer.contents = spinner.cgImage
答案 1 :(得分:1)
您不应使用其他VideoPreviewLayer。相反,您应该添加两个子层-一个用于遮罩的背景区域,另一个用于拐角。
请查看此repo中的源代码作为示例。
要将视频捕获限制在遮罩区域,您必须设置rectOfInterest
中的AVCaptureMetadataOutput
。
let rectOfInterest = videoPreviewLayer.metadataOutputRectConverted(fromLayerRect: rect)
metadataOutput.rectOfInterest = rectOfInterest