gpt4 book ai didi

macos - 无法在 macOS 上镜像 AVCaptureVideoPreviewLayer

转载 作者:行者123 更新时间:2023-12-04 02:07:35 24 4
gpt4 key购买 nike

我正在使用 AVCaptureVideoPreviewLayer(macOS,而不是 iOS)从连接的摄像头捕获视频输入。我已经设置了一个捕获 session 并创建了一个 UIView 来显示图像:
self.captureLayer = AVCaptureVideoPreviewLayer(session: self.captureSession);
self.playerView.layer = self.captureLayer;

一切正常,我从相机看到了图像,但现在我想(垂直)镜像图像。我正在使用 CATransform3DMakeScale:
self.captureLayer.transform = CATransform3DMakeScale(-1.0, 1.0, 1.0);
然而,不是镜像图像,图层只是空白(父 View 的背景)。

我尝试过其他转换(例如调整大小)并且它们工作正常。我也试过镜像 super 层:
self.captureLayer.superLayer?.transform = CATransform3DMakeScale(-1.0, 1.0, 1.0);
这有效(尽管它反射(reflect)了包括标题栏在内的整个窗口!)。

任何帮助表示赞赏。我相信转换是正确的,但由于某种原因它不适用于 AVCaptureVideoPreviewLayer。

最佳答案

您可以使用 avcaptureconnection 属性来执行此操作。

self.cameraLayer = AVCaptureVideoPreviewLayer(session: frontVideoSession)
self.cameraLayer!.videoGravity = AVLayerVideoGravityResizeAspectFill

if (self.cameraLayer!.connection.isVideoMirroringSupported)
{
self.cameraLayer!.connection.automaticallyAdjustsVideoMirroring = false
self.cameraLayer!.connection.isVideoMirrored = true
}

您可以在 https://developer.apple.com/reference/avfoundation/avcaptureconnection/1389172-isvideomirrored 阅读更多相关信息。

isVideoMirrored 标志允许您选择是否要镜像视频。如果设置为true,它将镜像视频,如果设置为false,则不会镜像。为了使用此标志,您必须将automaticAdjustsVideoMirroring 标志设置为false。

为你写了一个示例代码 https://github.com/manishganvir/mac-camera-mirror-example .请检查相同。下面的片段
do {
let input = try AVCaptureDeviceInput(device: camDevice)


VideoSession.addInput(input)

self.cameraLayer = AVCaptureVideoPreviewLayer(session: VideoSession)
print(" connection " , self.cameraLayer!.connection.isVideoMirroringSupported , self.cameraLayer!.connection.automaticallyAdjustsVideoMirroring);

if (self.cameraLayer!.connection.isVideoMirroringSupported)
{
self.cameraLayer!.connection.automaticallyAdjustsVideoMirroring = false
self.cameraLayer!.connection.isVideoMirrored = true
}
self.cameraLayer!.frame = self.view.bounds

self.view.layer = self.cameraLayer!
self.view.wantsLayer = true

VideoSession.startRunning()
}

关于macos - 无法在 macOS 上镜像 AVCaptureVideoPreviewLayer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41885927/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com