obs模塊介紹

核心庫

libobs:   obs的核心庫,其他的插件都基於他的基礎上,同時它也會操作管理各個插件資源。就好像爪子一樣,伸向各個地方,暫且可以這麼理解。

基礎庫

glad  對OpenGL函數的封裝  使用 dlopen和dlsym是用於打開動態鏈接庫中的函數,將動態鏈接庫中的函數或類導入到本程序中,爲了解決 沒有lib庫,只有dll庫的尷尬情況。這種方法在obs中很多地方用到,例如:vlc插件的加載。

ipc-util   進程間通信,主要封裝了pipe管道的實現,用於在hook 遊戲進程時,傳遞原始畫面數據,所以用到。

jansson 用於編碼,解碼和操作JSON數據

w32-pthreads:  開源庫,Windows下的pthread線程庫

ffmpeg-mux:  封裝了ffmpeg有關複用的函數

下面三個模塊使用hook技術,共同完成遊戲畫面的抓取

graphics-hook: 鉤子庫實現,用於獲取其他進程的圖像數據。

inject-helper : 將graphices-hook注入到其他進程。

get-graphics-offsets: 注入庫時,通過虛表偏移獲取d3d8,d3d9,dxgi的函數,從而實現API重定向,即用自己的函數替換原本的函數。

當然還需依附進程間通信,在win-capture中,使用pipe實現。

兩種顯卡渲染的實現,使用gpu,解放cpu壓力,同時提高渲染效率與質量。 使用着色器語言渲染(定點和片着色器,分別控制位置矢量和色值,感興趣的同學可以詳細瞭解一下)。gpu映射

libobs-d3d11

libobs-opengl

obs-ffmpeg: nvenc(N卡硬編),aac編碼,複用,以及編碼,解碼流程控制等。

obs-filters:  圖像濾鏡(如亮度,色度,飽和度調節,摳像等)

obs-outputs: 輸出模塊(如寫錄製文件flv,rtmp調用控制等)

obs-transitions:  場景間切換時的過渡效果

obs-x264:  x264編碼器

rtmp-services:  rtmp推流

obs-qsv11:  intel 硬件編碼,效果好於軟編和N卡硬編

obs-text:  GDI+渲染文字

text-freetype2:  開源字體引擎,支持多種格式,較GDI+更高效,渲染效果也更好。

win-capture:  窗口、顯示器、遊戲(涉及到進程間通信)捕捉

win-dshow:   攝像頭採集

win-decklink:  針對decklink採集卡的抓取

win-wasapi:  對聲音輸入(麥克風等)輸出(揚聲器等)設備的抓取

image-source: 圖片資源(包括動態圖),可多張圖幻燈片放映。

obs: Qt實現的界面展示。

 

發佈了273 篇原創文章 · 獲贊 126 · 訪問量 113萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章