基於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的外掛架構。
相關推薦
基於obs studio 的原始碼應用
OBS(Open Broadcaster Software)是一個廣泛使用的視訊錄製直播軟體。利用該軟體可以實現桌面視窗、遊戲、網頁、RTMP流、影象等的錄製直播。OBS也是一個開放原始碼的軟體,因此我們可以在原始碼的基礎上進行修改,來實現我們自己的定製功能。OBS S
[原始碼和文件分享]基於Android Studio實現的論壇網站Android客戶端和JAVA EE後臺
第一章 概述 1.1 開發環境 本安卓程式在Windows 10系統下使用Android Studio開發,後臺使用MyEclipse開發,測試環境為安卓系統5.1、4.4、4.3、5.0,螢幕尺寸5.0、5.1、5.5的安卓手機。 1.2 安裝配置 本安卓程式要求安卓SDK為API
徐鬆亮軟體應用教學-基於Visual Studio Code的C語言開發環境搭建
工欲善其事,必先利其器。後續,本博主要帶領大家,會做多種資料演算法和資料結構的實現,比如說記憶體管理,排序,三次樣條,二叉樹,九宮格,蟻群演算法。。。這些主要用C語言來實現。雖然其他語言有現成的庫,但因為本人主要擅長的是做嵌入式產品開發,目前大多數嵌入式晶片資源仍然有
《Flask Web開發 基於Python的Web應用開發實戰(第2版)》中文PDF+原始碼
下載: https://pan.baidu.com/s/1qz3Jpi4XuKQsSZJK0oMXBA 《Flask Web開發:基於Python的Web應用開發實戰》第2版 下載:https://pan.baidu.com/s/19APvGHguDOhognthTSw9JQ《Pyt
obs-studio模組簡介與原始碼編譯
一:直播簡介 線上教育,娛樂直播等近幾年已是遍地開花,其中核心脫離不了低延時音視訊技術。我們拋開互動技術不談,來了解一下視訊直播技術。 採集: Windows(dshow,dsound), ios,mac(AVFoundation,
c++語言應用------基於visual studio的聊天軟體的實現
本博文介紹了使用c++語言實現基於visual studio的聊天程式。 相關的project連結為 (伺服器的下載請仔細看資源描述) 請使用visual studio2012及其以上的版本開啟,否則可能發生錯誤。 相關分析: 1.課題目標和主要內容 課題目標:通過
電子書 flaskweb開發:基於Python的Web應用開發實戰.pdf
商業 機器 免費 影評 而且 視頻軟件 python程序 規範 初級 作為PythonWeb開發的微框架,Flask獨樹一幟。它不會強迫開發者遵循預置的開發規範,為開發者提供了自由度和創意空間。 《圖靈程序設計叢書·Flask Web開發:基於Python的Web應用開
基於EON.Studio的高級VR開發工具EON
UCam v8.01\ 開目 KMCAD 3.81\ 天正電氣軟件\ 25\ Bentley.ProSteel.3D.v18.0.Rev.8.10.0.9結構軟件.rar Datamine Studio v3.0.rar flow3d初級入門教程.rar jztsoft.bak.rar
基於python的web應用開發-添加關註者
templates maps classes else 解決方法 必須 簡化 head html 社交web允許用戶之間相互聯系。 例如: 關註者、好友、聯系人、聯絡人或夥伴。 記錄兩個用戶之間的定向聯系,在數據庫查詢中也要使用這種聯系。 一、論數據庫關系 一對多關系
第一個基於ArcGIS的Android應用
pmap utf end state xtend required ani empty n) 使用Android Studio創建第一個工程 打開Android Studio,新建工程。在Application name處填寫項目名稱,company domain是公司地
實驗:CentOS6編譯LAMP基於FPM模式的應用wordpress
linux實驗:CentOS6編譯LAMP基於FPM模式的應用wordpress軟件版本ls /root/srcapr-1.6.2.tar.gz apr-util-1.6.0.tar.gz httpd-2.4.28.tar.bz2 mariadb-5.5.57-linux-x86_64.tar.g
mozillaplaydoh基於django的web應用模板
pup upd aep sad iap his md5 dp2 mmx 看著我們一行人肩膀上的殘月聯盟徽記,清風城的土著居民大驚失色“我*!那……那不是傳說中的雪月嗎?天啊,這幾個美女真漂亮啊……難道,這是雪月行會的那幾個核心成員?天啊,一定是了!” 甚至有人去哄搶同伴的裝
制作自己的Setup.exe-程序打包詳解(基於Visual Studio 2015)
忘記 圖片 安裝文件 for int .com create rtc gis 序言 第一次打包程序,新手,遂作筆記如下,以供自己忘記細節時翻看,也供同樣新手或有需要者以為參考。不敢班門弄斧,大神若是誤入還請莫要見笑。 以下所述基於Visual Studio 2015
《Flask Web開發——基於Python的Web應用開發實踐》一字一句上機實踐(下)
屬性 一個用戶 臨時 target 說明 實戰 分享圖片 ace 庫文件 目錄 前言 第8章 用戶認證 第9章 用戶角色 第10章 用戶資料 第11章 博客文章 第12章 關註者 第13章 用戶評論 第14章 應用編程接口 前言
FlaskWeb開發:基於Python的Web應用開發實戰pdf
數據庫查詢 各類 啟動服務 管理 jin 軟件 請求 服務 inter 下載地址:網盤下載 內容簡介 · · · · · ·本書不僅適合初級Web開發人員學習閱讀,更是Python程序員用來學習高級Web開發技術的優秀參考書。? 學習Flask應用的基本結構,編寫示例應
基於Spring Boot構建應用開發規範
SpringBoot 項目規範 1.規範的意義和作用 編碼規範可以最大限度的提高團隊開發的合作效率 編碼規範可以盡可能的減少一個軟件的維護成本 , 並且幾乎沒有任何一個軟件,在其整個生命周期中,均由最初的開發人員來維護 編碼規範可以改善軟件的可讀性,可以讓開發人員盡快而徹底地理解新的代碼 規範性編碼
基於git的管理應用程序基線包和版本
指定 有一個 行合並 禁用 remote AC 優雅 覆蓋 部分 由於工作的需要,身為git的小白的我開始研究git相關的命令和操作。結合網上收集和廖雪峰的git教程,記錄所學知識點。 相關的效果就不再這裏顯示了。 首先我們看一下git的常用命令: 常用命令 git i
《Flask Web開發:基於Python的Web應用開發實戰》pdf 免費下載
需求 png 入行 14. 導入 框架 錯誤 pla 引用 《Flask Web開發:基於Python的Web應用開發實戰》pdf 免費下載鏈接: https://u253469.ctfile.com/fs/253469-292665036 第一部分 Flask
《Flask Web開發:基於Python的Web應用開發實戰》pdf 完整版免費下載
項目 工廠 技術分享 各類 視圖 第2章 靜態文件 閱讀 擁有 《Flask Web開發:基於Python的Web應用開發實戰》.pdf pdf 完整版免費下載: https://u253469.ctfile.com/fs/253469-292665036 更多電子書下
基於spring-boot的應用程序的單元測試方案
supported nsa action throws 接口 insert tomat clas 資料 概述 本文主要介紹如何對基於spring-boot的web應用編寫單元測試、集成測試的代碼。 此類應用的架構圖一般如下所示: 我們項目的程序,對應到上圖中的web應用部