OBS二次开发编译
+ -

OBS模块关系

2025-12-26 1 0

OBS Studio 整体架构依赖图

┌─────────────────────────────────────────────────────────────────────┐
│                        OBS 应用程序层                                │
├─────────────────────────────────────────────────────────────────────┤
│ obs64.exe (主程序) ────┐  obs-ffmpeg-mux.exe ───┐                    │
│       │                │       │                 │                    │
│       ▼                │       ▼                 │                    │
│ obs-frontend-api.dll   │  obs-plugins/          │                    │
│       │                │  └─obs-ffmpeg.dll      │                    │
│       │                │                        │                    │
└───────┼────────────────┼────────────────────────┼────────────────────┘
        │                │                        │
        ▼                ▼                        ▼
┌─────────────────────────────────────────────────────────────────────┐
│                        核心服务层                                    │
├─────────────────────────────────────────────────────────────────────┤
│         obs.dll (核心库) ──────────────┐                            │
│                │                       │                            │
│                ▼                       ▼                            │
│    obs-scripting.dll           obs-winrt.dll                         │
│    (脚本支持)                  (Windows运行时)                       │
│                                                                      │
└─────────────────────────────────────────────────────────────────────┘
        │                │                │
        ▼                ▼                ▼
┌─────────────────────────────────────────────────────────────────────┐
│                       第三方依赖层                                   │
├─────────────────────────────────────────────────────────────────────┤
│  libavcodec.dll    Qt5Core.dll    jansson.dll      curl.dll         │
│  libavformat.dll   Qt5Gui.dll     FFmpeg相关     其他第三方库       │
│  libavutil.dll     Qt5Widgets.dll                                  │
└─────────────────────────────────────────────────────────────────────┘

1. 可执行文件 (EXE)

文件 依赖 功能描述
obs64.exe obs.dll, obs-frontend-api.dll, Qt5*.dll, 各种插件 主程序:用户界面、场景管理、推流录制控制、插件管理
obs-ffmpeg-mux.exe obs.dll, obs-ffmpeg.dll, FFmpeg库 独立混流器:将多个音视频流混合成单个文件(用于高级录制)
obs-browser-page.exe Chrome Embedded Framework 浏览器隔离进程:运行浏览器源的安全沙盒进程,防止浏览器崩溃影响OBS
obs-virtualcam-module64.dll<br>(注册为虚拟摄像头) obs.dll 虚拟摄像头:将OBS输出作为虚拟摄像头供其他程序使用

2. 核心动态库 (DLL)

文件 依赖 功能描述
obs.dll FFmpeg库、DirectX、显卡驱动 核心引擎:音视频采集、编码、渲染、场景图管理、源处理
obs-frontend-api.dll obs.dll, Qt5*.dll 前端API层:UI与核心的桥梁,提供高级接口、配置文件管理、UI回调
obs-scripting.dll obs.dll, Lua/Python 脚本支持:提供Lua和Python脚本接口,用于自定义插件和自动化
obs-winrt.dll Windows Runtime API Windows运行时支持:Windows音频/视频捕获API,用于Win10/11的音频捕获

3. 内置插件 (在obs-plugins/目录下)

视频相关

插件文件 依赖 功能描述
obs-x264.dll x264编码器 x264编码:H.264软件编码(CPU编码)
obs-qsv11.dll Intel Media SDK QuickSync编码:Intel核显硬件编码
obs-ffmpeg.dll FFmpeg库 FFmpeg封装:提供多种编码器(NVENC、AMD AMF)、格式支持
obs-vst.dll VST SDK VST插件支持:专业音频效果插件支持

输入源相关

插件文件 依赖 功能描述
win-wasapi.dll Windows Core Audio Windows音频捕获:系统音频、麦克风输入
win-dshow.dll DirectShow 视频设备捕获:摄像头、采集卡(DirectShow设备)
win-capture.dll Windows GDI/DXGI 窗口/游戏捕获:窗口捕获、游戏捕获、显示器捕获
image-source.dll 图像处理库 图像源:静态图片、幻灯片、GIF动画
text-freetype2.dll FreeType2 文字源:TrueType字体渲染,动态文字显示

输出相关

插件文件 依赖 功能描述
rtmp-services.dll 无特殊依赖 RTMP服务:预配置的直播平台(Twitch、YouTube等)
obs-outputs.dll obs.dll, 网络库 输出模块:推流和录制的基础输出功能

滤镜效果

插件文件 依赖 功能描述
obs-filters.dll obs.dll 内置滤镜:色度键、色彩校正、裁剪、滚动等
obs-transitions.dll obs.dll 场景过渡:淡入淡出、滑动、缩放等切换效果

4. 第三方依赖库

多媒体处理

库文件 功能描述
avcodec-58.dll FFmpeg编解码核心(H.264/HEVC/AAC等)
avformat-58.dll FFmpeg容器格式(MP4/FLV/MKV等)
avutil-56.dll FFmpeg工具函数(内存、数学运算等)
swscale-5.dll FFmpeg图像缩放和色彩空间转换
swresample-3.dll FFmpeg音频重采样
libopus.dll Opus音频编解码器(高质量低延迟)

UI框架

库文件 功能描述
Qt5Core.dll Qt核心功能(信号槽、多线程、文件IO)
Qt5Gui.dll Qt图形绘制(字体、图像、2D绘图)
Qt5Widgets.dll Qt控件库(按钮、列表、窗口等)
Qt5WinExtras.dll Windows特有功能(任务栏、跳转列表)

其他工具库

库文件 功能描述
jansson.dll JSON解析和生成(配置文件、API通信)
libcurl.dll HTTP客户端(更新检查、插件下载)
zlib.dll 数据压缩(日志、配置文件)
mbedtls.dll 加密和TLS支持(安全连接)

启动流程依赖链

obs64.exe (启动)
    ├── 加载 Qt5Core.dll, Qt5Widgets.dll (UI框架)
    ├── 加载 obs-frontend-api.dll (前端API)
    │       └── 加载 obs.dll (核心引擎)
    │               ├── 加载 FFmpeg库 (avcodec, avformat等)
    │               └── 加载显卡相关 (D3D11.dll等)
    ├── 扫描 obs-plugins/ 目录
    │       ├── 加载 win-capture.dll (捕获插件)
    │       ├── 加载 win-wasapi.dll (音频插件)
    │       ├── 加载 obs-x264.dll (编码插件)
    │       └── 加载 obs-ffmpeg.dll (更多编码器)
    └── 加载脚本支持 (obs-scripting.dll)

模块交互示例:开始推流

用户点击"开始推流"按钮
    ↓
obs64.exe (UI层)
    ↓ 通过Qt信号槽
obs-frontend-api.dll
    ↓ 调用高级API
obs.dll (核心层)
    ├── 准备视频编码器 (如obs-x264.dll)
    ├── 准备音频编码器 (通过avcodec.dll)
    ├── 启动渲染线程 (Direct3D)
    └── 调用obs-outputs.dll
            ↓
        rtmp-services.dll (获取服务器地址)
            ↓
        libcurl.dll (建立RTMP连接)
            ↓
        FFmpeg库 (封装FLV格式并发送)

插件扩展机制

OBS的插件架构基于以下依赖关系:

第三方插件.dll
    ├── 依赖 obs-frontend-api.dll (用于UI集成)
    ├── 依赖 obs.dll (用于核心功能)
    └── 可选依赖 Qt5*.dll (如果自带UI)

故障排查指南

当OBS启动失败时,可按此顺序检查:

  1. obs64.exe无法启动

    • 检查 Qt5Core.dll 等Qt库是否存在
    • 检查 MSVCRT 运行时库
  2. 启动后崩溃

    • 检查 obs.dll 完整性
    • 检查显卡驱动 (影响 win-capture.dll)
  3. 功能缺失

    • 特定源无法使用 → 检查对应的插件dll
    • 编码器不可用 → 检查编码插件 (obs-x264.dll, obs-ffmpeg.dll)
  4. 录制/推流出错

    • 检查 obs-outputs.dll
    • 检查 FFmpeg 库文件
    • 检查磁盘空间和权限

这种模块化设计使得OBS可以:

  • 灵活更新单个组件而不影响整体
  • 第三方开发者可以扩展功能
  • 用户可以选择性安装所需插件
  • 问题可以更容易地隔离和修复

0 篇笔记 写笔记

作者信息
我爱内核
Windows驱动开发,网站开发
好好学习,天天向上。
取消
感谢您的支持,我会继续努力的!
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

您的支持,是我们前进的动力!