objective-c – AVCaptureScreenInput和kCGWindowListOptionOnScreenBelowWindow

objective-c – AVCaptureScreenInput和kCGWindowListOptionOnScreenBelowWindow,第1张

概述我正在使用AVCaptureScreenInput进行屏幕捕获.该应用程序有一个包含配置选项的窗口. 我想记录屏幕但不记录录像机应用程序中的窗口.例如,如果您进行屏幕录制,Quicktime会执行此 *** 作. 我想我发现会做什么,但我不确定它们是如何以及是否可以一起使用. kCGWindowListOptionOnScreenBelowWindow位于Core Graphics框架的CGWindow. 我正在使用AVCaptureScreeninput进行屏幕捕获.该应用程序有一个包含配置选项的窗口.

我想记录屏幕但不记录录像机应用程序中的窗口.例如,如果您进行屏幕录制,Quicktime会执行此 *** 作.

我想我发现会做什么,但我不确定它们是如何以及是否可以一起使用.

kCGWindowListOptionOnScreenBelowWindow位于Core Graphics框架的CGWindow.h中. AVCaptureScreeninput是AVFoundation框架中AVCaptureinput.h的一部分.

如果您正在拍摄单个屏幕截图,则可以传递kCGWindowListOptionOnScreenBelowWindow和一个windowID,以便仅捕获该窗口级别下方的窗口.如果可以的话,我可以通过将捕获应用程序的窗口设置为非常高的水平来实现我的目标.

我对Objective-c比较新,如果可以将kCGWindowListOptionOnScreenBelowWindow与AVCaptureScreeninput一起使用,我也不清楚它.如果是,有人可以提供有关结果代码需要的提示吗?

How to access the pixel buffer of an NSWindow in OSX?

解决方法 据我所知,没有办法从OS X的内置显示记录API中排除特定的窗口:

> AVFoundation的AVCaptureScreeninput(10.7)
>核心图形CGdisplayStream(10.8)

当最终屏幕输出已经合成在一起时,上述两种方法似乎都在合成后抓取屏幕内容.
因此,排除您的录制窗口将要求您使用允许您自己合成窗口的API,然后将这些自定义框架附加到AVAssetWriterinput.

Quartz Window Services允许您通过CGWindowListCreateImage拍摄单个窗口的快照.一个很好的示例项目也展示了如何将多个窗口镜头组合在一起是Son of Grab.

检索拼接在一起的镜头后,您必须将其附加到AVAssetWriterinput. AVFoundation提供了一个便利类,可以将自定义像素缓冲区附加到电影中:AVAssetWriterInputPixelBufferAdaptor.

特别是AVFoundation部分可能变得非常令人沮丧,你可能会遇到性能问题,因为合成很可能比OS X的内置合成器慢,但总的来说应该可以实现你想要的.

总结

以上是内存溢出为你收集整理的objective-c – AVCaptureScreenInput和kCGWindowListOptionOnScreenBelowWindow全部内容,希望文章能够帮你解决objective-c – AVCaptureScreenInput和kCGWindowListOptionOnScreenBelowWindow所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1018214.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-23
下一篇2022-05-23

发表评论

登录后才能评论

评论列表(0条)

    保存