1. 程式人生 > >基於obs studio 的原始碼應用

基於obs studio 的原始碼應用

 OBS(Open Broadcaster Software)是一個廣泛使用的視訊錄製直播軟體。利用該軟體可以實現桌面視窗、遊戲、網頁、RTMP流、影象等的錄製直播。OBS也是一個開放原始碼的軟體,因此我們可以在原始碼的基礎上進行修改,來實現我們自己的定製功能。OBS Studio是當前正在維護的版本,老版本叫做OBS Classic。相對老版本而言,OBS Studio在架構上進行了重構,採用微核心+外掛的形式進行開發。作者意圖通過這種架構來獨立出核心程式碼,將周邊功能作為外掛形式實現。這在一定程度上提高了專案的可維護性,也讓新功能的擴充套件變得更加簡單。OBS Studio本身內建了一些常用的外掛,如視窗捕獲、視訊捕獲裝置、文字、影象、媒體源等。開啟OBS Studio的外掛安裝目錄,可以見到如下動態庫檔案:

      也就是說,OBS中的外掛是以動態連結庫的形式實現的。在正式開發之前,我們需要配置好開發除錯環境,後面的開發工作才能正常開展。

二、編譯步驟

(1)下載OBS Studio的原始碼。OBS Studio的工程託管在Github上面。OBS Studio工程使用CMake進行管理,因此在特定平臺進行編譯時,還需安裝CMake(https://cmake.org/)處理生成對應平臺的工程。

(2)OBS Studio依賴FFmpeg框架,因此還需要下載預編譯好的FFmpeg庫。官方提供了一個下載地址(http://code.fosshub.com/OBS/downloads)。該頁面提供了VS2013和VS2015兩個版本的預編譯庫。根據自己的開發環境選擇對應的庫版本。下載好後解壓到資料夾即可。

(3)設定好環境變數。這裡設定的環境變數其實就是為了指定FFmpeg的庫路徑。需要指定的路徑包括:

       DepsPath:包含所有依賴庫的路徑,但不包括Qt庫。

       FFmpegPath:僅包含FFmpeg庫的路徑。

       x264Path:僅包含x264庫的路徑。

       curlPath:僅包含cURL庫的路徑。

      如果需要編譯真個OBS Studio UI的話,還需要設定另外一個環境變數:

       QTDIR:指定Qt安裝的根目錄。如(C:\Qt\Qt5.5.1\5.5\msvc2013_64)

      當然如果僅僅只需要編譯外掛目錄下的外掛,可以不用指定QTDIR變數。

(4)開啟CMAKE,指定好原始碼資料夾路徑和輸出資料夾路徑。注意的是,OBS Studio工程預設情況下是編譯UI的。如果不想編譯UI,那麼需要在CMake中新建一個BOOL變數:DISABLE_UI。指定不需要編譯UI,否則CMake會嘗試搜尋QTDIR變數失敗,導致CMake過程也失敗。

(5)到此步時,可以點選Configure按鈕,CMAKE會根據環境來生成工程檔案了。在Windows平臺下可以選擇生成Visual Studio的工程。第一次Configure完成之後,勾選上面的COPY_DEPENDENCIES選項,然後再次點選Configure進行配置。這時可能會出現如下錯誤:

      這是因為我們在下載OBS Studio工程時沒有下載完整,因為工程中這部分程式碼給獨立成一個單獨的倉庫了:

      點選這個連結,即可跳到相應的程式碼倉庫中。下載好的程式碼放到如下位置:

      再次點選Configure,可以看到CMake順利生成了VS工程。

(6)開啟生成的VS工程BuildAll.sln,生成解決方案,發現出現了一大批的Error C2275。原來是VS對於C語言的嚴格要求導致的。VS要求C語言中所有的變數宣告都放到函式的起始位置。那就手動一個個把它修改一下吧。網上也可以找到其他解決方案。修改完之後即可成功生成解決方案了。

(7)啟動除錯的時候可能會出現如下錯誤:

      這是因為除錯時的工作目錄不一樣,需要在VS中進行設定:

      儲存設定之後,即可成功啟動除錯了。

三、總結

       OBS Studio工程的配置總體上來說步驟較多,但是好在不算太麻煩。遇到了很多問題,但是大多都能順利解決。另外,OBS Studio已經成為了一個跨平臺的開源軟體,在嘗試編譯的過程中,也發現了官方其實提供了一個安裝指南(https://github.com/jp9000/obs-studio/wiki/Install-Instructions)。該指南為Windows,Linux,Mac OS X平臺都提供了具體的指導。因此使用者在編譯安裝時,其實可以按照指南一步步跟著來。對於OBS Studio的程式碼,官方在開發的時候提供了程式碼註釋,可以利用Doxygen工具來提取這些註釋,從而生成幫助文件。開發初始階段,建議還是除錯OBS Studio內建的外掛,來熟悉下OBS Studio的外掛架構。