1 開發(fā)環(huán)境
Windows 10 ltsc 2019、Visual Studio 2017 Community、QT 5.4.12雏婶、OBS Studio 25.0.8留晚、Windows SDK
注意:我用的windows是一個干凈的環(huán)境错维,在虛擬機中全新安裝的赋焕。
用vs2019可以省略安裝sdk版本的那一步泽示,等有空我再試試械筛。
2 準備環(huán)境
2.1 VS2017
下載地址:https://docs.microsoft.com/en-us/visualstudio/releasenotes/vs2017-relnotes
安裝比較簡單埋哟,自行百度赤赊。
2.2 Windows SDK
在用CMake構(gòu)建OBS Studio 25.0.8 的VS2017工程時,會提示下面錯誤吹截。如果使用VS2019構(gòu)建應該不會報錯波俄,我這里使用VS2017懦铺,那么手動安裝一下提示中的Windows SDK版本冬念。
下載地址:https://developer.microsoft.com/zh-cn/windows/downloads/sdk-archive/
下圖中的安裝SDK和ISO任選一個,選擇安裝SDK簡單。
我這里偷懶直接全部安裝据块。
2.3 安裝QT5.4.12
下載地址:https://download.qt.io/official_releases/qt/5.14/5.14.2/
安裝QT:
(1) 運行安裝程序qt-opensource-windows-x86-5.14.2.exe,點擊next
(2) 輸入qt官網(wǎng)的賬號和密碼边篮,點擊next,沒有的可以去這里https://login.qt.io/login注冊一個思杯。
(3) 繼續(xù)一直點下一步色乾,直到選擇組件的那個地方,這里我除了VS2015相關(guān)的取消了澎办,其他的全部選了浮驳,根據(jù)自行情況自己調(diào)整至会。
2.4 安裝CMake
下載地址:https://cmake.org/download/昆著,安裝比較簡單凑懂,直接一直下一步到結(jié)束即可。
注意:編譯25.0.8要使用3.16以上版本的CMake
3 下載代碼
可以下載git上主干代碼塘匣,也可以下載release版本的代碼,我下載的OBS Studio 25.0.8 release版本的驰徊。
下載地址:https://github.com/obsproject/obs-studio/releases
4 構(gòu)建工程
4.1 解壓代碼
解壓縮代碼,運行CMake勋桶,選擇源代碼目錄例驹,再設(shè)置一個工程目錄鹃锈。點擊Configure,CMake會開始構(gòu)建工程盆驹,但是后面會出現(xiàn)一系列錯誤躯喇,我們一個個解決廉丽。
4.2 解決windows sdk版本過低的問題
上面已經(jīng)安裝過wnidows sdk 10.0.18362责球,但是還是會報錯。重裝也不行凿将,先裝sdk再裝cmake也不行,最后去控制面板中將低版本的sdk卸載了(忘記截圖)才解決了這個錯誤。如果不報這個錯誤的朋友可以直接跳過秋柄,看提示安裝vs2019應該不會報這個錯誤骇笔。
4.3 設(shè)置QT目錄
不設(shè)置QT目錄會報下面錯誤,在CMake界面上直接填寫QT安裝的目錄芦劣,再次點擊configure虚吟。
4.4 設(shè)置依賴庫目錄
未設(shè)置依賴庫時報錯如下唱蒸,我將依賴庫目錄放置在與OBS代碼根目錄同級目錄油宜。
編譯OBS Studio需要一些列的庫疼燥,這里我全部使用修改Findxxxx.cmake文件來解決
4.5 設(shè)置ffmpge庫目錄
我直接下載的編譯好的庫醉者,我用的是ffmpeg-4.2.2立磁。下載地址:https://ffmpeg.zeranoe.com/builds/需要下載dev和shared版本唱歧。
下載后解壓后將兩個目錄中的文件合并到一起,拷貝合并后的文件到到之前設(shè)置DepsPath目錄下D:\clib\third_party_binary沿后,修改目錄名稱尖滚。
修改FindFFmpeg.cmake文件中查找ffmpeg庫的目錄非剃,再次點擊configure將不會再提示找不到ffmpeg庫
4.6 設(shè)置curl庫目錄
(1)這里使用7.70.0版本券坞,需要手動編譯恨锚,下載地址https://curl.haxx.se/download.html。
(2)解壓縮源代碼他挎,進入代碼目錄,雙擊運行buildconf.bat.
(3)進入winbuild目錄
(4)打開vc命令行工具呢撞,輸入cd /d D:\clib\curl-7.70.0\winbuild切換到winbuild目錄摧阅。
(5)輸入命令“nmake /f Makefile.vc mode=dll VC=14 MACHINE=x86 DEBUG=no”
具體設(shè)置根據(jù)自己需求參考BUILD.WINDOWS.txt文件
(6)拷貝編譯后文件夾到之前設(shè)置DepsPath目錄下D:\clib\third_party_binary祝钢,修改一下目錄名稱太颤。
(7)修改FindLibcurl.cmake這個文件中查找curl庫的目錄,再次點擊configure不會提示找不到libcurl庫了做裙。
4.7安裝python
下載python:https://www.python.org/downloads/release/python-383/
我安裝在C盤根目錄,勾選添加到PATH肃晚。
修改FindPythonDeps.cmake文件锚贱,修改后再configure會找到python庫文件,輸出的紅色的信息不用管
4.8設(shè)置zlib目錄
下載編譯好的zlib:https://windows.php.net/downloads/php-sdk/deps/vc15/x86/
解壓zlib到之前設(shè)置DepsPath目錄下D:\clib\third_party_binary关串,注意文件路徑。
修改findzlib.cmake文件晋修,因為下載的zlib庫文件名稱是zlib_a.lib吧碾,所需要加上 zlib_a。由于之前安裝了git(包含了zlib)墓卦,再cmake搜索include目錄時會搜索錯誤倦春,手動修改一下。
4.9安裝vulkan
下載地址:https://vulkan.lunarg.com/sdk/home#windows落剪,下載完畢之后直接默認安裝到c盤即可睁本,再次CMake時會自動搜索到vulkan的lib和頭文件。
4.10設(shè)置libvlc
下載地址:http://download.videolan.org/pub/videolan/vlc/last/win32/
下載.7z版本里面會有sdk目錄忠怖,解壓縮整個文件到之前設(shè)置DepsPath目錄下D:\clib\third_party_binary呢堰。
修改FindLibVLC.cmake文件,修改include和lib查找路徑
再次點擊CMake的Configure會找到LIBVLC脑又。
4.11設(shè)置Libmbedtls
下載地址:https://github.com/ARMmbed/mbedtls/releases
(1)解壓縮代碼暮胧,在代碼目錄地址欄輸入“cmd”回車锐借,可以快速在命令行進入目錄。
(2)用cmake命令行配置工程往衷,輸入“cmake -R . -B ./vs2017”钞翔,會在代碼目錄自動創(chuàng)建一個vs2017目錄并,構(gòu)建出工程席舍。
(3) 打開工程并編譯布轿,打開目錄vs2017/mbed TLS.sln文件,直接編譯等待編譯完成来颤。
(4)拷貝生產(chǎn)的lib文件和需要用的頭文件目錄到之前設(shè)置DepsPath目錄下D:\clib\third_party_binary汰扭,注意文件路徑。
(5)修改FindMbedTLS.cmake文件中的查找路徑福铅,注意要修改4處萝毛。
(6)再次點擊CMake的Configure,會找到mbedtls相關(guān)文件滑黔。
4.12 設(shè)置x264
(1)編譯x264請看另外一篇文章笆包。
(2)修改FindLibx264.cmake文件
4.13 生成工程,終于生成成功略荡,打開工程庵佣。
5 編譯工程
直接點擊編譯,等待編譯完成汛兜,最后全部編譯成功巴粪。
6 調(diào)試運行
(1)按F5調(diào)試運行,報錯誤找不到Qt5Xmld.dll等一些列找不到dll錯誤粥谬。設(shè)置調(diào)試的運行目錄如下:$(ProjectDir)\..\rundir\Debug\bin\32bit肛根。
(2)再次F5運行,提示找不到libcurl.dll帝嗡,直接將libcurl庫的bin目錄添加到環(huán)境變量的path里面去晶通,添加完畢要重啟vs。
(3)再次F5運行哟玷,提示如下錯誤“Failed to create aac streaming encoder(simple output)”狮辽,拷貝ffmpge庫的bin目錄下的D:\clib\ffmpeg-4.2.1\bin\下的所有dll到D:\clib\obs-studio-25.0.8\build\rundir\Debug\obs-plugins\32bit目錄。(也可以直接把ffmpeg的bin目錄設(shè)置到環(huán)境變量path中)
(4)重啟vs巢寡,F(xiàn)5調(diào)試運行成功喉脖。