OBS源码编译开发

本文来自网易云社区


作者:梁敏

OBS简介

OBS(Open Broadcaster Software)是免费开源的视频录制和直播软件,支持运行在windows,Mac和linux平台。官方链接 https://obsproject.com 。 OBS有OBS Classic和OBS studio两个版本。OBS classic是早期版本,已经不再维护和更新。现在推荐使用的是OBS studio版本,是在OBS经典版的基础上重构实现的,使用了更好的模块设计,提高了性能,同时支持DirectX和OpenGL渲染,还支持了多个平台。UI使用了QT制作皮肤。  

官方有较详细的说明文档,但是在实际编译开发过程中,还是遇到了一些问题。在此记录下来,以备查阅。  

OBS编译(Windows)

准备

生成工程

  • git命令行下载源码,如果没有用git下载,要把子模块也下载完全。git clone --recursive https://github.com/jp9000/obs-studio.git 

  • cmake-gui打开并设置obs-studio代码路径和build路径。本文将下载的obs-studio代码放在了D:/OBS/obs-build/下面。

  • ADD ENTRY增加依赖库,QT路径等,如下:

        DepsPath:D:/OBS/obs-build/dependencies2013/win64/include

        QTDIR:D:/Qt/Qt5.9.0/5.9/msvc2013_64

       20180904112111f934d135-0dc1-4bc5-ad0d-581cb3d6c3fd.png

  • Config 选择构建使用的vs版本,本文采用vs2013+QT5.9

  • Generate 构建成功。

  • 打开D:\OBS\obs-build\obs-studio\build\obs-studio.sln

编译工程

  • 生成解决方案。ALL_BUILD会导致工程中所有项目被构建。一般由CMAKE构建的解决方案(Solution)中包含ALL_BUILD和ZERO_CHECK。

          20180904112126c26be8a7-6383-4e1b-9db6-70a6363fae67.png

  • 解决方案配置

          20180904112138080974a9-108d-4852-930f-94c8b0a45938.png

想调试可以使用Debug或者RelWithDebInfo运行程序。

  • 调试运行

程序编译完成,可以运行D:\OBS\obs-build\obs-studio\build\rundir\Release\bin\64bit下obs64.exe。

Tip:直接运行D:\OBS\obs-build\obs-studio\build\UI\Release目录下的obs.exe,依赖的库都没在这个目录下,所以会报缺失文件什么的。使用ALL build为启动项,这里会从rundir下启动程序的。obs项目在生成后,会把相关文件拷贝到D:\OBS\obs-build\obs-studio\build\rundir\Release\bin\64bit下。obs定义了生成后事件:

C:\Program Files (x86)\CMake\bin\cmake.exe" -DCONFIG=RelWithDebInfo -DFNAME=obs64.exe -DINPUT=D:/OBS/obs-build/obs-studio/build/UI/RelWithDebInfo -DOUTPUT=D:/OBS/obs-build/obs-studio/build/rundir/RelWithDebInfo/bin/64bit -P D:/OBS/obs-build/obs-studio/cmake/copy_on_debug_helper.cmake   D:\OBS\  obs-build  \  obs-studio  \build\rundir\Release\bin\64bit

OBS-browser插件

      obs-browser是obs-studio的一个输入源插件,基于CEF开发实现的

编译CEF

CEF设置输入,输出目录,Configure,再Generate。

  • CEF编译

打开D:\OBS\obs-build\cef_binary_3.2987.1601.gf035232_windows64\build\cef.sln,生成解决方案。libcef_dll_wrapper默认的运行库是/MT。obs-studio的项目都是用/MD生成的,因此libcef_dll_wrapper生成时需要修改运行库为/MD,否则obs-studio无法正常生成obs-browser。    20180904112154b659d9ae-c34d-499a-aee4-bc40a05e1fa6.png

Building OBS and obs-browser

  • cmake时一定设置下面:

CEF_ROOT_DIR:D:/OBS/obs-build/cef_binary_3.2987.1601.gf035232_windows64

BUILD_BROWSER = TRUE 默认是不创建obs-browser的。

USE_STATIC_CRT = FALSE 设置构建的项目/MD,默认是/MT。这个配置之前没有设置false,导致CEF和obs-browser编译各种问题。

这里有时候会遇到错误如下图:  

20180904112217719c39f8-bfba-4d23-8f7b-697316e3f2d4.png  

此时手动设置CEFWRAPPER_LIBRARY路径:  

D:/OBS/obs-build/cef_binary_3.2987.1601.gf035232_windows64/build/libcef_dll_wrapper/Release/libcef_dll_wrapper.lib(注意:如果CEF没有编译过,这需要先CEF构建编译)  

  • 运行调试

需要把D:\OBS\obs-build\cef_binary_3.2987.1601.gf035232_windows64\Resources下的所有资源文件拷贝到OBS的rundir目录下:D:\OBS\obs-build\obs-studio\build\rundir\Release\obs-plugins\64bit

2018090411223266d11e75-5da8-4c20-bd58-123b0ac9ae0c.png

Release版本,需要D:\OBS\obs-build\cef_binary_3.2987.1601.gf035232_windows64\Release下的文件拷贝到OBS的rundir目录下:D:\OBS\obs-build\obs-studio\build\rundir\Release\obs-plugins\64bit (.lib不用拷贝)

20180904112248c4408805-e578-4499-95f4-8fe75e088bbc.png

libcef.dll依赖libEGL.dll和libGLESv2这两个文件,但是QT也依赖这两个文件,他们分别在不同的目录,且使用的版本不统一。debug程序时,会报错,把CEF下的这两个文件统一使用D:\OBS\obs-build\obs-studio\build\rundir\Release\bin\64bit目录下的。

 


网易云大礼包:https://www.163yun.com/gift

本文来自网易云社区,经作者梁敏授权发布


相关文章:
【推荐】 Question | 网站被黑客扫描撞库该怎么应对防范?
【推荐】 【大数据之数据仓库】GreenPlum优化器对比测试
【推荐】 Question|网站被黑客扫描撞库该怎么应对防范?

### 编译 OBS 源码并处理超级键相关问题 对于希望编译 OBS (Open Broadcaster Software) 并解决其中涉及的超级键(Super Key)相关问题的情况,可以遵循一系列特定的操作流程。虽然提供的参考资料未直接提及此过程[^1],但基于广泛认可的最佳实践以及社区贡献者的经验分享,以下是详细的指南。 #### 准备工作环境 确保开发环境中已安装所有必需的依赖项。这通常包括但不限于 CMake、Qt库及其开发包、FFmpeg及相关编码器支持等。具体到超级键的支持可能还需要额外配置X11或Wayland输入事件监听机制。 #### 获取最新源代码 通过官方 GitHub 仓库克隆最新的 OBS Studio 项目副本: ```bash git clone https://github.com/obsproject/obs-studio.git cd obs-studio ``` #### 配置CMake选项以启用高级功能 为了更好地控制键盘快捷方式特别是超级键的行为,在调用`cmake`之前可以通过设置参数来自定义行为特性。例如: - 启用对 Wayland 协议的支持以便更精确地捕捉全局热键; - 修改默认绑定策略允许重新映射特殊按键如 Super 键; ```bash mkdir build && cd $_ cmake .. \ -DUNIX_STRUCTURE=ON \ -DBUILD_BROWSER=OFF \ # 如果不需要浏览器插件可关闭以减少复杂度 -DCMAKE_BUILD_TYPE=Release \ -DLINUX_JACK_SUPPORT=ON \ -DENABLE_PIPEWIRE=ON \ -DQT_WAYLAND=ON # 对于现代桌面环境非常重要 ``` #### 构建与安装 一旦完成了上述准备工作,则可以直接利用 `make` 命令来进行实际编译操作,并最终将其部署至本地系统中去。 ```bash make -j$(nproc) sudo make install ``` #### 处理超级键冲突或其他异常情况 如果发现存在某些应用程序抢占了超级键作为其内部使用的快捷方式而导致 OBS 中无法正常使用该组合键的话,那么就需要排查这些潜在的竞争关系。一种方法是在启动时禁用不必要的后台进程和服务;另一种则是调整其他软件中的相应设定使之避开冲突区域。 此外,还可以考虑修改 OBS 的配置文件(位于用户主目录下的隐藏文件夹 `.config/obs-studio/basic/profiles/default/hotkeys.json`),手动指定新的替代方案用于触发相同的功能动作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值