一,簡介
OBS(open boardcast server),是一個用於直播的開源軟件。
二,結構
項目文件結構如下圖:
三,分析
最新的OBS只能在vista以上操作系統中運行,顯卡必須至少支持DX10。
OBS的編譯需要visual studio 2013(C++11重寫了部分代碼),當然你也可以switch到老版本下進行編譯,但新的特性或bug修正就無法啟用了。
OBS包括五大組件,以及一些附加功能:
video source :
a,DShow的capture filter;
b,游戲畫面,hook部分通過minihook實現,獲得的surface分別通過D3D10共享在OBS主窗口上顯示,以及通過共享內存發送到OBS進程中進行encode;
c,桌面窗口畫面,通過GDI實現;
d,圖片;
audio source:
a,麥克風及桌面聲音,通過MMDevice獲取;
b,blank,無聲音;
video encoder:
a,x264;
b,nvidia cuda video encoder;
c,intel QSV video encode;
audio encoder:
a,MP3,通過lame庫實現;
b,aac,通過libfaac庫實現;
stream destination:
a,rtmp stream,通過librtmp實現;
b,file stream,可生成FLV/MP4的文件;
附加功能:
a,音頻重采樣,通過libsamplerate庫實現;
b,音頻去噪;
c,自動更新;
四,總結:
OBS邏輯上區分的很清楚,但是代碼部分非常雜揉。因而作者正在寫一個新的跨windows/linux/mac平台的C++11適配的project。