【发布时间】:2020-07-17 22:06:02
【问题描述】:
我发现了两个类似的线程:Save what user see, Add layer on top 但它们没有帮助。
以下部分显示了captureSession 中的PreviewLayer。然后我在上面放了一个蓝色的CGLayer。一切都正确显示。
func showCameraOutput(in videoView: UIView) {
previewLayer = AVCaptureVideoPreviewLayer(session: self.captureSession)
previewLayer?.videoGravity = .resizeAspectFill
previewLayer?.frame = CGRect(x: 0, y: 0, width: videoView.frame.width, height: videoView.frame.height)
previewLayer?.connection?.videoOrientation = .landscapeRight
let blueLayer = CALayer()
blueLayer.backgroundColor = UIColor.blue.withAlphaComponent(0.5).cgColor
blueLayer.frame = CGRect(x: 0, y: 0, width: videoView.frame.width/2, height: videoView.frame.height)
previewLayer?.addSublayer(blueLayer)
videoView.layer.sublayers?.removeAll(where: { $0 is AVCaptureVideoPreviewLayer })
if let previewLayer = previewLayer {
videoView.layer.insertSublayer(previewLayer, at: 0)
}
}
当我保存视频时,蓝色层不再存在。
func fileOutput(_ output: AVCaptureFileOutput, didFinishRecordingTo outputFileURL: URL, from connections: [AVCaptureConnection], error: Error?) {
UISaveVideoAtPathToSavedPhotosAlbum(outputFileURL.path, nil, nil, nil)
}
不能将图层保存到实时视频吗?还是保存了其他东西?那我该如何访问这个资源呢?
我不想不之后编辑视频。目标是在实时视频上放置一个图层并将其保存。也许我只是需要谷歌的提示。
【问题讨论】:
标签: swift camera avfoundation video-recording