OBS Studio 的插件架构提供了一个模块化扩展系统,允许在不修改核心应用程序的情况下添加新功能。本文档解释了插件系统的工作原理,包括其架构、构建系统和模块管理。
有关特定插件实现(例如视频源、编码器、输出、服务或滤镜)的信息,请参阅第 3.2 到 3.6 节中的相关页面。
OBS Studio 插件系统遵循模块化架构,可在运行时动态加载和集成插件。
来源:plugins/CMakeLists.txt
插件系统由几个关键组件组成
OBS Studio 支持多种类型的插件,可扩展其功能的各个方面
来源:plugins/CMakeLists.txt
源插件为 OBS 提供输入源
来源:plugins/CMakeLists.txt:45-56, plugins/CMakeLists.txt:88-90
编码器插件用于压缩音频和视频,以便进行流式传输和录制
来源:plugins/CMakeLists.txt:63-70, plugins/CMakeLists.txt:82
输出插件处理编码媒体的发送目的地
来源:plugins/CMakeLists.txt:65, plugins/CMakeLists.txt:61
服务插件提供与流媒体平台的集成
来源:plugins/CMakeLists.txt:84
滤镜插件通过效果处理音频和视频
来源:plugins/CMakeLists.txt:57, plugins/CMakeLists.txt:62
转场插件提供场景转场效果
来源:plugins/CMakeLists.txt:72
OBS Studio 使用 CMake 管理其插件构建系统。该构建系统允许根据平台限制和用户偏好灵活地包含插件。
来源:plugins/CMakeLists.txt
ENABLE_PLUGINS CMake 选项控制是否构建插件
当此选项为 ON(默认)时,OBS 将构建 plugins/CMakeLists.txt 文件中定义的插件。
来源:plugins/CMakeLists.txt:3-10
add_obs_plugin 宏用于将插件添加到构建中。它可以指定平台约束,以确保插件仅在受支持的平台上构建
来源:plugins/CMakeLists.txt:34-90
许多插件是平台特定的,并且只在受支持的平台上构建
| 平台 | 插件 |
|---|---|
| Windows | win-capture, win-dshow, win-wasapi, nv-filters, obs-text |
| macOS | mac-capture, mac-avcapture, mac-syphon, mac-videotoolbox, mac-virtualcam |
| Linux/BSD | linux-capture, linux-v4l2, linux-pulseaudio, linux-alsa, linux-jack, linux-pipewire |
来源:plugins/CMakeLists.txt:39-56, plugins/CMakeLists.txt:71-89
某些插件在单独的存储库中维护,并作为 Git 子模块包含
.gitmodules 文件定义了这些子模块关系
[submodule "plugins/obs-browser"]
path = plugins/obs-browser
url = https://github.com/obsproject/obs-browser.git
[submodule "plugins/obs-websocket"]
path = plugins/obs-websocket
url = https://github.com/obsproject/obs-websocket.git
来源:plugins/CMakeLists.txt:12-31, plugins/CMakeLists.txt:59, plugins/CMakeLists.txt:80, .gitmodules:4-9
OBS Studio 插件分为几类
这些插件包含在 OBS Studio 主存储库中,并且当 ENABLE_PLUGINS 为 ON 时默认构建
来源:plugins/CMakeLists.txt:34-90
这些插件在单独的存储库中维护,并作为 Git 子模块包含
来源:plugins/CMakeLists.txt:12-31, plugins/CMakeLists.txt:59, plugins/CMakeLists.txt:80, .gitmodules:4-9
这些插件是独立开发的,可以单独安装。它们遵循相同的插件 API,但不包含在 OBS Studio 的主发行版中。
OBS Studio 启动时,它通过以下过程加载插件
这种模块化架构使得 OBS Studio 能够高度可扩展,同时保持核心应用程序的稳定性。