obs-studio代码分析系列文章(一):窗口和桌面显示器捕捉
发布时间
阅读量:
阅读量
windows下窗口、桌面捕捉有多种方式。如下:
1:采用GDI函数或Windows Media API函数
2:借助DirectX技术
3:运用api hook技术(例如D3D游戏捕捉)
4:借助图形驱动技术
在obs的窗口及桌面捕捉功能中,所依赖的是win-capture插件,其核心原理基于GDI技术。
与api hook或图形驱动技术相比,GDI在效率和性能方面确实存在一定劣势。然而,这种方法依然具有操作简便的优势。
其实质在于获取窗口或桌面的快照(值得注意的是,桌面本身也可视为一种特殊的窗口形式,并具备对应的窗口句柄)。
只要能够获取到句柄,即可获得设备上下文(DC),从而将其中的内容通过blit(复制)方式传输至我们创建的DC中。
步骤如下:
1:通过调取上层界面中的窗口或桌面信息,将所选窗口的名称及相关属性传递至该插件内部。
static void update_settings(struct window_capture *wc, obs_data_t *s)
2:依据参数信息定位相应的窗口或桌面界面。
HWND find_window(enum window_search_mode mode,
enum window_p
全部评论 (0)
还没有任何评论哟~
