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
所以我改的冷門功能,官方也不會採用
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
留言
張貼留言