news 2026/7/17 5:03:18

使用LIBOBS: 采集桌面,保存图片

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
使用LIBOBS: 采集桌面,保存图片

OBS Studio是个很全面的采集和直播开源软件,并且通过Libobs支持二次开发。不过缺点是文档太少,代码的例子也少,只有一个test。而项目本身功能很全,但代码量比较大,想全面了解需要花费不少时间。最近花了点时间编译出来,通过debug OBS Studio,大致掌握了一些开发要点,写了一个小demo。

先说编译,源码是基于cmake的,依赖项又非常多。按官方教程一次编译通过不太可能。

提示几点:

1 设置https代理,能正常访问github。

2 windows下编译器使用vs2022。最初用2019碰到的问题,在2022下就没发生。

3 安装vcpkg,当cmake提示缺少库的时候,直接vcpkg install,节省很多时间。同样,vcpkg想顺利使用,也一定要有个代理。不过大多数在.deps里都能找的到。下面是我的cmake一个截图:

image

4 然后打开工程,全部编译,再install。

5 开始调试 obs studio, 在项目列表找到obs-studio,右键选:设置为启动项

image

然后 F5就可以了:

image

程序入口在OBSApp.cpp里。

从bool OBSApp::OBSInit()入手,开始大致看一下架构流程。然后,如果以前没接触过OBS的话,可以使用豆包或千问给你解释一下框架,然后再看代码。如果有一定经验,就按着以下几个API的顺序,查找相关代码,加断点,调试:

base_set_log_handler(do_log, nullptr);

obs_initialized

obs_startup

obs_add_module_path

obs_load_all_modules

obs_post_load_modules

obs_reset_video

obs_display_create

obs_source_create

//!!!!!!!!!!!!!!!!!!!!!!!!!!!!

//Without this sentence, the screen will be black

obs_source_inc_showing(desktop_source);

//!!!!!!!!!!!!!!!!!!!!!!!!!!!!

obs_scene_create

obs_display_add_draw_callback

上面是采集屏幕,其他采集窗口、摄像头等流程都一样的。

然后,在采集过程中需要保存成图的话,直接使用obs-studio里的一段代码就行:

OBSBasic ob;

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/15 17:06:44

linpack测试HPL.dat配置文件

测试设备为arm64嵌入式设备,16核心32G内存,HPL.dat内容如下 HPLinpack benchmark input file Innovative Computing Laboratory, University of Tennessee HPL.out output file name (if any) 0 device out (6stdout,7stderr,file) 1 …

作者头像 李华
网站建设 2026/7/15 16:20:05

sist2:构建高效文件检索系统的开源利器

在信息爆炸的时代,如何快速找到需要的文件?sist2作为一款开源的搜索工具,以其卓越的高效搜索能力和多线程处理技术,为文件检索带来了全新体验。无论您是个人用户管理海量文档,还是企业构建知识库系统,sist2…

作者头像 李华
网站建设 2026/7/16 17:09:41

技术视角深析:2025年TOP5 AI种草营销服务商的架构设计与工程实现

在AI工程化落地的浪潮中,营销领域正成为前沿技术的最佳试验场。本文将摒弃市场话术,从技术架构、算法实现与系统集成的工程角度,深入剖析2025年国内五家具有代表性的AI种草营销服务商。旨在为技术负责人、架构师及开发者提供一份关于如何将AI…

作者头像 李华
网站建设 2026/7/15 17:06:41

Citra模拟器终极解决方案:5步快速修复常见问题指南

Citra模拟器终极解决方案:5步快速修复常见问题指南 【免费下载链接】citra 项目地址: https://gitcode.com/GitHub_Trending/ci/citra Citra模拟器作为最优秀的3DS游戏模拟器之一,让玩家能够在PC上重温经典游戏体验。然而在使用过程中&#xff0…

作者头像 李华
网站建设 2026/7/17 4:52:37

揭秘Docker MCP网关常见错误:5个高频故障的根因分析与应对方案

第一章:Docker MCP网关错误处理概述在使用 Docker 构建微服务架构时,MCP(Management Control Plane)网关作为核心组件,承担着请求路由、负载均衡和安全控制等关键职责。当网关出现异常或配置错误时,可能导致…

作者头像 李华
网站建设 2026/7/15 4:26:42

提升Monaco Editor行号显示效果:三种实用优化方案

提升Monaco Editor行号显示效果:三种实用优化方案 【免费下载链接】monaco-editor A browser based code editor 项目地址: https://gitcode.com/gh_mirrors/mo/monaco-editor 你是否遇到过在Monaco Editor中编辑长代码文件时,行号显示不完整的问…

作者头像 李华