本文來自網易雲社區
作者:梁敏
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)
准備
從https://github.com/jp9000/obs-studio下載源碼。官方編譯說明 https://github.com/jp9000/obs-studio/wiki/Install-Instructions
下載依賴庫。VS2013: https://obsproject.com/downloads/dependencies2013.zip VS2015: https://obsproject.com/downloads/dependencies2015.zip
cmake,visual studio等工具下載安裝好。
生成工程
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
Config 選擇構建使用的vs版本,本文采用vs2013+QT5.9
Generate 構建成功。
打開D:\OBS\obs-build\obs-studio\build\obs-studio.sln
編譯工程
生成解決方案。ALL_BUILD會導致工程中所有項目被構建。一般由CMAKE構建的解決方案(Solution)中包含ALL_BUILD和ZERO_CHECK。
解決方案配置
想調試可以使用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
obs-browser 源碼和編譯說明: https://github.com/kc5nra/obs-browser obs-browser只在obs-studio的64位版本上才有。
obs-browser 當時使用的是2987版本的CEF,下載CEF http://opensource.spotify.com/cefbuilds/index.html
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。
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編譯各種問題。
這里有時候會遇到錯誤如下圖:
此時手動設置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
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不用拷貝)
libcef.dll依賴libEGL.dll和libGLESv2這兩個文件,但是QT也依賴這兩個文件,他們分別在不同的目錄,且使用的版本不統一。debug程序時,會報錯,把CEF下的這兩個文件統一使用D:\OBS\obs-build\obs-studio\build\rundir\Release\bin\64bit目錄下的。
網易雲大禮包:https://www.163yun.com/gift
本文來自網易雲社區,經作者梁敏授權發布
相關文章:
【推薦】 搜索湊單頁大促顯示延遲方案設計
【推薦】 2017年內容安全十大事件盤點
【推薦】 互聯網金融中的數據挖掘技術應用