You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 03:40:26