利用Cmake 将最新版本OBS编译成windows版本。
准备工作:
1. VS2013 的最新更新版或者VS2015
2. QT Creater 5.7 https://www.qt.io/
3. CMake (cmake-gui)
4. obs 依赖包,下载下来后放在自己的obs主目录下
根据自己的VS版本来下载
- VS2013: https://obsproject.com/downloads/dependencies2013.zip
- VS2015: https://obsproject.com/downloads/dependencies2015.zip
编译步骤:
打开 CMake (cmake-gui).exe , 然后输入如下配置选项
OBS build path
E:\CSource\directx\workplace\obs-studio-master\buildOBS path
E:\CSource\directx\workplace\obs-studio-master
进入plugins\win-dshow
执行git clone https://github.com/jp9000/libdshowcapture.git
---这个库要另外下载,因为工程中这部分代码给独立成一个单独的仓库
配置目录:(根据自己的QT目录、obs依赖库目录来选择)
D:/ProgramFiles/QT/5.7/msvc2015
Libavcodec_DIR
E:\CSource\directx\workplace\obs-studio-master\dependencies\bin
DepsPath
E:\CSource\directx\workplace\obs-studio-master\dependencies
true
然后configure,gennerate,文件夹下就生成了sln文件(配置如下图)
可能出现的问题
1. 编译错误: 无法包含atlbase.h
解决办法:visual studio installer - 修改 - 安装msvc 桌面开发工具
2. 链接错误:
错误 LNK2019 无法解析的外部符号 "bool __cdecl DShow::IsVendorVideoHDR(struct IKsPropertySet *)" (?IsVendorVideoHDR@DShow@@YA_NPEAUIKsPropertySet@@@Z),函数 "public: void __cdecl DShow::HDevice::Receive(bool,struct IMediaSample *)" (?Receive@HDevice@DShow@@QEAAX_NPEAUIMediaSample@@@Z) 中引用了该符号 win-dshow (plugins\win-dshow\win-dshow) D:\Space\CSource\opensource\obs-studio-27.2.4\build\plugins\win-dshow\device.obj 1
解决办法:尼玛 为什么报HDR的错误?? 因为不用到HDR 所以相关代码我注释了