基於OBS的插件開發總結


一、介紹

       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的插件架構。

四、參考鏈接

1. http://blog.csdn.net/leixiaohua1020/article/details/14215391

2. http://www.cnblogs.com/dwdxdy/p/3713990.html

3. http://www.cnblogs.com/dwdxdy/p/3713968.html

4. http://www.tuicool.com/articles/iYjAFn

5. http://yul100887.blog.163.com/blog/static/200336135201211143525930/

6. http://blog.csdn.net/bweaglegao/article/details/8540860


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM