【发布时间】:2017-01-27 01:44:04
【问题描述】:
我正在使用 AVCaptureVideoPreviewLayer(macOS,而不是 iOS)从连接的摄像头捕获视频输入。我已经设置了一个捕获会话并创建了一个 UIView 来显示图像:
self.captureLayer = AVCaptureVideoPreviewLayer(session: self.captureSession);
self.playerView.layer = self.captureLayer;
一切正常,我看到了来自相机的图像,但现在我想(垂直)镜像图像。我正在使用 CATransform3DMakeScale:
self.captureLayer.transform = CATransform3DMakeScale(-1.0, 1.0, 1.0);
然而,图层并没有镜像图像,而是变成空白(父视图的背景)。
我尝试了其他转换(例如调整大小),它们工作正常。我也尝试过镜像超级层:
self.captureLayer.superLayer?.transform = CATransform3DMakeScale(-1.0, 1.0, 1.0);
这很有效(尽管它反映了包括标题栏在内的整个窗口!)。
任何帮助表示赞赏。我相信转换是正确的,但由于某种原因它不适用于 AVCaptureVideoPreviewLayer。
【问题讨论】:
-
你可以试试我提供的解决方案吗?
-
感谢@manishganvir - 非常感谢答案和代码示例。本周末将尝试,但是如果这确实有效,我认为它只会提供跨水平访问的镜像,而使用 CATransform3DMakeScale 我也可以垂直镜像(这也在我的应用程序中使用)。
-
@manishganvir 刚刚运行了您的示例代码 - 效果很好。还发现
self.cameraLayer!.connection.videoOrientation = AVCaptureVideoOrientation.portraitUpsideDown将为我提供垂直镜像。感谢您的帮助!
标签: macos avfoundation