OBS development note

Jim說他想保持OBS簡單一點,不希望一堆niche被加入,這樣會讓其他人後續維護量增加
所以我改的冷門功能,官方也不會採用

API https://obsproject.com/docs/index.html

Contributing https://github.com/jp9000/obs-studio/blob/master/CONTRIBUTING.rst

Translation https://obsproject.com/forum/threads/how-to-contribute-translations-for-obs.16327/

scripting use the same api as C/C++ (python, lua)


C++17會讓amd-amf error,要開的話這個plugin要拔掉 (19/2/12)

加密client_id的原因,youtube要求保密
基本上這種加密也沒啥用,因為有source code,而且OBS又有pdb
deobfuscate_str()
給twitchclient_id (去twitch註冊,url放OBS內寫的)
hash是uint_64


source plugin
create new source的時候
get_properties is called before update


other notes

obs-text
scene沒切到還是一直在跑,設定file或抓歌的情況,就會一直在背景scan
要研究才知道是obs設計,還是plugin原本沒寫好
沒在用就把file/song都不勾吧

參考window-capture.c的tick,修完了w
不是active scene的情況,直接return (只有修正我改的版本,官方版沒有)

create內constructor會直接call obs_source_update,會去跑Update
Update內的東西大多不需要先放在new_內,都直接再assign給沒new_版本的變數

windows file lastwrite time的精準度相關問題 (只有寫入disk才更新)
https://github.com/obsproject/obs-studio/commit/2b085da63af1749c0c31a331d2fa473820e17337#diff-b5fdeb512c8f88a867de9261f1ad5ee1
原來那個神奇code原因是這樣,可是問題還是沒解決的感覺

OBS Classic的解法是這樣
https://github.com/jp9000/OBS/blob/88eee7aafcb2d3ff1d401a87953fe7c1131ce41a/OBSApi/Utility/XT_Windows.cpp#L1013



由於obs studio都是global source,source數量會影響到ram使用量
應該是obs啟動就都初始化吧,多數情況對使用者體驗沒影響

https://i.imgur.com/phAzSoQ.png

chrome不能用game capture我的猜測是,因為obs只抓top level window
目標window可能是child window (跑d3d11) 所以抓不到,spy++資訊猜的
d3d沒學過不確定


win-capture是抓window的DC ( getDC(hwnd) )
DC能抓到,bitblt也沒錯誤,就是沒東西
猜測可能是用DX11的?
沒改過的vnr obs是只能用display capture抓

記錄一些code
https://github.com/obsproject/obs-studio/pull/1339

win-capture\
get-graphics-offsets*.exe
inject-helper*.exe
這兩隻程式用到LoadLibrary都沒有FreeLibrary,由於程式會快速執行完
kernel object會被自動關掉,可無視cppcheck的訊息


ffmpeg的硬體加速
https://trac.ffmpeg.org/wiki/HWAccelIntro
nvenc要這這裡加進去,OBS才能用

https://trac.ffmpeg.org/wiki/HWAccelIntro#NVENC
https://superuser.com/questions/1299064/error-cuvid-requested-but-not-all-dependencies-are-satisfied-cuda-ffnvcodec
看來要加一個module, ffnvcodec


要有硬體壓縮是否要加進ffmpeg,未確認 (大概沒差? 因為Jim的 .sh 沒下參數)
libmfx = intel qsv
AMF = AMD VCE

留言

這個網誌中的熱門文章

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

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

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