【发布时间】:2021-06-07 03:05:36
【问题描述】:
我想记录整个 macOS 屏幕,并对图像做不同的事情,比如
- 计算不同区域的平均颜色
- 在
NSPanel或NSWindow中重新渲染屏幕模糊部分
现在我正在像这样使用AVCaptureScreenInput
let input = AVCaptureScreenInput(displayID: CGMainDisplayID())!
avCaptureSession.addInput(input)
let output = AVCaptureVideoDataOutput()
avCaptureSession.addOutput(output)
output.setSampleBufferDelegate(self, queue: .main)
self.avCaptureSession.startRunning()
这种方法的问题是图像的帧率似乎很低,我想达到30fps+。
在 macOS 上实现这些目标的好方法是什么。一方面是图像的“快速”获取,另一方面是捕获图像的实时处理/重新渲染。
问题 #1
上述带有捕获会话的解决方案会导致不可接受的延迟。这意味着在移动窗口时,响应呈现延迟超过 100 毫秒。我想要实时的。
【问题讨论】:
-
你设置
minFrameDuration属性了吗? -
是的。我试过没有成功
-
这是为了实现模糊或透明的窗口吗?如果是这样,还有更好的选择:stackoverflow.com/questions/11174918/…
-
非常接近,我想制作一个叠加层,使背景模糊,但也可以缩放和操纵
标签: xcode macos avfoundation metal screen-capture