基于OBS预编译二进制文件(Windows/Ubuntu)用CMake开发C/C++外部控制应用的疑问
OBS外部控制应用开发解惑与指引
概念区分
- OBS核心开发:指编译/修改OBS Studio本体,需要Qt、FFmpeg等全部依赖库,是构建完整OBS程序的工作,和你要的外部控制应用完全无关。
- OBS插件开发:编写运行在OBS进程内的扩展模块(滤镜、自定义源等),需要链接libobs,但这是扩展OBS自身功能,不是外部控制,所以不是你要的方向。
- 外部控制应用:独立于OBS进程的程序,通过API驱动OBS,有两种主流实现方式:直接链接
libobs库,或通过OBS WebSocket API通信。
预编译库与头文件获取(Windows/Ubuntu)
Windows平台
OBS官方提供包含头文件、库文件及依赖DLL的预编译开发包,可直接用于自建CMake项目:
- 从OBS GitHub Releases页面下载带有
dev后缀的压缩包(例如obs-studio-29.1.3-windows-x64-dev.zip) - 解压后包含:
include目录:所有OBS相关头文件(如obs.h、obs-frontend-api.h)lib目录:静态库(obs.lib)和动态库(obs.dll)bin目录:运行时所需的依赖DLL(如Qt、FFmpeg相关文件)
Ubuntu平台
直接通过系统包管理器安装官方维护的开发库:
sudo apt install libobs-dev
安装后自动获取头文件(位于/usr/include/obs)、共享库(/usr/lib/x86_64-linux-gnu/libobs.so),并自动安装Qt、FFmpeg等依赖,无需手动下载。
CMake项目配置示例
Windows环境
# 指定OBS开发包路径 set(OBS_DEV_PATH "path/to/obs-studio-dev") # 查找头文件和库 find_path(OBS_INCLUDE_DIR NAMES obs.h PATHS "${OBS_DEV_PATH}/include") find_library(OBS_LIBRARY NAMES obs PATHS "${OBS_DEV_PATH}/lib") # 构建你的应用 add_executable(obs_controller main.cpp) target_include_directories(obs_controller PRIVATE ${OBS_INCLUDE_DIR}) target_link_libraries(obs_controller PRIVATE ${OBS_LIBRARY}) # 复制依赖DLL到输出目录(可选,方便运行) add_custom_command(TARGET obs_controller POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy_directory "${OBS_DEV_PATH}/bin/$<CONFIG>" $<TARGET_FILE_DIR:obs_controller> )
Ubuntu环境
find_package(PkgConfig REQUIRED) pkg_check_modules(OBS REQUIRED libobs) add_executable(obs_controller main.cpp) target_include_directories(obs_controller PRIVATE ${OBS_INCLUDE_DIRS}) target_link_libraries(obs_controller PRIVATE ${OBS_LIBRARIES})
关于OBS Client API的疑问
文档中的plugin并非指外部控制的Client API:
- Plugin是运行在OBS进程内的扩展模块,需要基于完整OBS项目构建;而你要的外部控制应用是独立进程,直接调用
libobs或通过WebSocket与OBS通信,无需编译完整OBS项目。
替代方案:OBS WebSocket API
如果不想处理libobs的依赖问题,更推荐用OBS WebSocket API:
- OBS默认自带WebSocket服务,只需在OBS设置中启用
- 有成熟的C/C++客户端库,可直接发送控制命令(如切换场景、启停录制),无需链接libobs或处理Qt/FFmpeg依赖
依赖问题说明
- 若使用
libobs:Windows的预编译dev包已包含所有运行依赖DLL;Ubuntu通过libobs-dev安装会自动拉取所有系统级依赖,无需手动下载第三方库源码或二进制文件。
内容的提问来源于stack exchange,提问作者Walter
相关产品推荐
相关产品推荐

