OBS Studio修改版by Craftwar (效能/功能強化, 減少資源使用, 畫質提高)

程式原始碼公開在github,我沒添加惡意程式碼,有需要的可以自行修改/編譯
編譯是用免費AppVeyor伺服器自動化 (不在我電腦做)
完整編譯各版本所需總時間約3hr 30min+ (不包含太難編譯或server時間不夠用的)


Win7需要Windows update後才能用,微軟停止更新,有任何問題自己解決
開發環境為Win10,以官方git開發版為基礎+我的修改


公告發在 我的Discord 不放在blog維持乾淨 (記得去#rules按一下收我發的通知)


設定和官方版OBS共用/相容,裝完就可使用,不用重新設定,不需先安裝官方版
不可安裝在系統目錄(ex: C:\Program Files\),會無法更新
想分別裝官方版和我的版本可用portable mode (設定檔會在程式的目錄內,不會共用)
updater不認識的參數都會丟給OBS吃,給updater -p的參數就可以跑portable mode


個人使用順便分享,一般建議使用官方版本
目前只有改寫的obs-text plugin發生問題才會處理
你想用就用,不想用就算了,我都沒差,反正不收錢,免費軟體就是這樣,作者高興就好
適合的人
  1. 想要更高效能 (多開遊戲,開高畫質實況,筆電或舊電腦或任何理由)
  2. 想跟上新的修改(bug修正,效能,功能...etc),官方約3~6個月發佈一次release (太慢了?)
  3. 想用我改寫效能/功能強化的obs-text plugin,裝我的OBS有內建比較省事 (也可獨立安裝)
不適合的人
  1. 穩定性優先,建議用只用我改的obs-text plugin,剩下用官方版較穩定 (雖有bug沒修,至少能確定不被bug影響到實況),開發版品質都不錯,還是有機率出錯
    ex: 靠實況賺錢的人
  2. 部分官方版功能會沒有

各OBS版本都適用的優化教學 (官方版,我的版本,或其他OBS衍生版都可用)
https://craftwarblog.blogspot.com/2018/07/obs-streaming-settings.html

[偏技術的細節介紹]  不看也能用
原作者(Jim)認為修改的東西夠多,希望使用者更新就把某個git開發版本定為release版
開發版有新的功能和修正,通常沒大問題(危險的新功能,都另開branch,不直接進master)
我會觀察有需要才更新 (bug修正,或是有興趣的新功能)

我用較好的編譯參數提高效能,不多有提升總比沒有好 (需要調整的請自己修改)
軟體壓縮用最新的x264穩定版效能較高,更新部分程式庫(lib)
硬體壓縮nvenc 使用較官方新的Nvidia Codec SDK,也許效果較好? (效能受顯卡驅動影響)
錄影用的ffmpeg我的版本比官方新,可能會比較好用?
有人問為啥不用ICC,因為使用的免費CI平台沒有 (而且Qt是MSVC,能用嗎?)


需要安裝x86和x64的Visual C++ 2015,2017,2019runtime整合包 (沒裝的不保證正常)
安裝也可提高官方版OBS效能 (VC++ 2015~2019開發的軟體都有效,不是只有OBS)
要升級runtime的請手動安裝,我的OBS自動更新不提供runtime更新 (M$有沒有我不知道)
我的OBS安裝檔會自動安裝2019 runtime,不用再另外安裝

AMD, Intel不同CPU架構對同樣指令需要的clock cycle數不同,所以compiler通常可以指定要針對哪個優化,不同CPU走不同instruction path,我才會出不同版本
OBS title會有"by craftwar"才是我做的版本 (和官方區別用)

[/偏技術的細節介紹]


推薦用安裝檔,自動把VC程式庫裝好(會跳兩次UAC),加桌面捷徑
因nsis安裝檔容易被誤判,不安心的可用7-zip解壓縮安裝檔再掃毒確認後執行
VirusTotal線上掃毒報告 只有極少數防毒(根本沒聽過的)判斷可疑,可證明是誤判
似乎沒有簽章Windows smartscreen會警告吧 (我不想浪費幾千塊去買簽章)



安裝時如不想用安裝檔,可手動下載 (這種安裝法,每次都要自己手動更新)
https://github.com/craftwar/obs-studio/releases/tag/git
移除只要把檔案砍掉就可以,不用反安裝,沒有額外寫入registry (和官方版不同)
版本更新內容參照官方版 https://github.com/obsproject/obs-studio/releasesgit commit log

優化分Intel及AMD CPU用版本,務必用安裝程式下載,才不會裝錯降低效能
一般版本(SSE2)和AVX2特化版共用安裝檔 (AVX2要改設定才會下載)


1.一般版本(SSE2),能用官方版的電腦就能跑 (懶人/一般人用)
相容性較高,CPU指令集參數同官方只下SSE2 (效能比AVX2版低)
如果沒加裝東西進OBS,保證系統相容,可直接轉換

執行安裝檔產生的桌面捷徑 craftwar OBS 來啟動(icon是借用OBS的,長一樣很好認)
和官方版不一樣,自動更新是在啟動updater時做,OBS沒關掉也會失敗 (無法寫入),updater在檢查完後會自動啟動OBS

如果實況的遊戲沒有反作弊程式(anti-cheat),可以在updater啟動參數拿掉-no_wc -no_gc (window capture,game capture不用開發版的意思)
使用開發版本的檔案,會有比較新的修正或功能,效能也略好一點
反之,有需要的就要加上去,會改用OBS簽署過的檔案 (通常反作弊會放行),否則game capture可能會擷取不到畫面
新安裝的installer預設都有加上,避免問題


[通常不看也可以用的和官方版差異,有問題再看]
多數官方plugin都有包含 (9成以上使用者可直接從官方版轉換過來)
沒加入會和我的優化衝突的非必要plugin (需要的去用官方版OBS)

RSSDK (Intel® RealSense™ camera, 官方CI也沒build,等OBS官方提供就加),官方說這個沒人在用,似乎新版已經移掉了?
mbedTLS (rtmps支援,目前只有facebook用,等twitch有就加進去)
scripting (python, lua 不會寫程式的人大概不會去用到,/GL build fail)
Freetype (在Windows官方推薦改用 GDI+ text去顯示文字,好像也關掉了,沒必要放進去)
service-integration (twitch/mixer控制面板和聊天室整合),OBS官方目前不支援其他客制版本使用 (開發者無法使用自己的twitch client_id),等官方支援吧
這功能我覺得有安全/隱私上的疑慮 (oauth token應該會被OBS網站拿到),OBS可以看到你的email和streamkey

其他紀錄
FTL,jansso會衝突,沒用vcpkg版本,jansso用官方版本

[/通常不看也可以用的和官方版差異,有問題再看]



2. AVX2特化版 (我使用的版本,更多優化需要AVX2)
我知道的加速全開, 我不用的功能都拿掉的減肥版
額外的nvenc參數 (會改進畫質,其他還有下了啥忘了)

只推薦進階使用者使用,有問題自行解決
壓縮檔<15MB,太舊或低階CPU/主機板不能用 (程式會當掉或自動關掉無反應)


使用方法: 給更新程式 craftwar-obs-updater.exe 加入參數 -vc_inc_arch AVX2
不會用的表示,你不算power user,別用吧




我改的obs-text plugin (我做的OBS都有內建,也可單獨安裝使用)
可能要安裝x86和x64的Visual C++ 2015,2017,2019runtime整合包 (沒裝的不保證正常)
修正減少不顯示時的資源用量 (file mode,回報obs team後,他們不打算修改)
增加的功能 (效能推測是其他採用polling的同功能兩倍以上)
  1. 顯示播放中歌名
  2. 顯示VNR(visual novel reader)的遊戲翻譯
兩種安裝方法,先關掉OBS後
  1. Win10安裝法,把下面的檔案放到OBS根目錄後執行 (根目錄下有bin, obs-plugins ...等目錄) https://raw.githubusercontent.com/craftwar/obs-updater/master/cmd_craftwar.obs_updater/get%20obs-text.cmd
  2. 下載obs-text.dll 後蓋掉原本的 (複製到 obs-plugins\64bit )
其他OBS衍生版本(ex: streamlabs obs)沒有測試過,應該是可以相容,有問題自行解決

回報問題 & FAQ
https://craftwarblog.blogspot.com/2020/08/obs-bug-report.html



AVX2特化版game capture的檔案比較圖 (左邊是我的,右官方,我的檔比較小)
https://imgur.com/a/Kx4gW
SSE2版用官方的game capture,沒有以下問題
因為沒簽名,anti-cheat可能會擋,防毒軟體也可能誤判 ,導致game capture不能用
data\obs-plugins\win-capture 目錄設例外,可解決防毒問題
可以用官方版的game capture檔案蓋回 (上圖的檔案)
簽名好像要花幾千塊,我不打算買,買了也不一定能通過
有想到解法了,有人要用再做 (在appveyor上cache obs release and game capture file)



以下有問題/想了解更多才看 (不看也可以用,有未整理資料,有些已過時)

https://superuser.com/questions/100249/how-to-pin-either-a-shortcut-or-a-batch-file-to-the-new-windows-7-8-and-10-task 


我直接抓Chatty拿聊天室對話 + 抓網頁拿NightBot放歌畫面,不需要用到browser plugin
https://craftwarblog.blogspot.com/2018/01/obs-capture-twitch-chat-from-chatty.html



FFmpeg的檔 (av開頭的5個檔)和 libx264-xxx.dll 可以保留數字最大的就好
舊的不會用到,但是會佔用硬碟空間


如果執行有問題,可能你很不幸剛好遇到我在改程式,出了點問題

或是原作者改了什麼會爆炸,我剛好用到
可以跟我回報,或是先從AppVeyor裡找舊一點版本的使用


使用的開發工具和lib比官方的新 (Qt, zlib...etc,官方是用mingw-gcc compile x264/ffmpeg)


混用不保證可以正常運作 (有一定機率無效,當api修改時 )
如果兩個版本日期接近,混用有高機率沒問題
或是保留兩份,看需求決定用哪一個版本,設定可通用,不衝突

有興趣的人可以看這個文件,有解釋原因 (非工程師請跳過?)
https://docs.microsoft.com/en-us/cpp/porting/binary-compat-2015-2017

混用最簡單方法,先備份後拿我的版本蓋過官方版本  (會用較多記憶體,連不用的功能也載入)
建議用 SandBoxie 測試,可以不用自己備份設定 
比較麻煩的方法,看缺什麼就拿官方版本補進我的版本
由於git版底層api可能不同,有可能無效 (程式碼版本不同)
不提供混用的技術支援,有問題請自行處理
 

OBS的開發人員程式寫得都不錯,開發者較多有人會review,通常不會有問題

想手動更新的話,可用RSS看有無更新
https://github.com/craftwar/obs-studio/commits/master.atom
我是用curl + 7zip來自動下載更新 (參考下面的script修改)
https://raw.githubusercontent.com/craftwar/scripts/master/Windows/update%20OBS.cmd


這個網誌中的熱門文章

OBS 抓不到畫面, 視窗, 遊戲擷取, 黑或白畫面, 當掉 ,卡住, black/white screen, window game capture, crash, freeze

優化實況(一) OBS設定 streaming settings

OBS plugin obs-text 顯示播放中音樂, display playing music