OBS 抓不到畫面, 視窗, 遊戲擷取, 黑或白畫面, 當掉 ,卡住, black/white screen, window game capture, crash, freeze
0. 遊戲初始化還未完成
這時讓OBS去game capture擷取會造成卡住或當掉 (OBS嘗試inject去hook會失敗)
OBS先切到其他scene,等遊戲啟動完才切回去
或遊戲啟動完再開OBS
1. OBS設定錯誤
全螢幕和視窗的定義,不是遊戲畫面多大 (很多人以為畫面塞滿就是全螢幕)
可以切換game capture的mode試看看
全螢幕的遊戲,切出來看OBS預覽似乎一定是黑畫面 (可用手機或別台電腦確認實況畫面)
不行就改回window capture/display capture試試吧
Windows.Graphics.Capture (新視窗擷取)
Win10 1903+限定,可抓到開啟硬體加速的firefox/chrome或cef,UWP程式
一般而言開啟硬體加速的程式效能會比沒開高,畫面比較順,延遲比較低
https://github.com/obsproject/obs-studio/pull/2208
調整Allow transparency (每個遊戲不一定)
在東方th14打開會變成黑畫面,只有按Esc時有畫面
在HackNet要打開,否則抓不到畫面
如果你有把多張顯卡連接,SLI/Crossfire Capture mode要打開 (效能會降低,沒用別開)
多顯卡的系統 (通常是NB/laptop),OBS和遊戲使用的顯卡不同,要改一樣
2. 權限不合,遊戲用管理者跑,OBS也必需用
ex: Garena LOL (Garena沒有好的理由強迫全部要用admin跑,riot官方就不用)
右鍵選擇以系統管理員身分執行
覺得每次都要跳提示很煩,可以參考 OBS跳過UAC提示的方法
https://craftwarblog.blogspot.com/2017/10/obs-run-obs-as-administrators-without.html
3. 遊戲公司擋掉或其他因素
a) 被擋掉
ex: 客服超濫的Garena,關於這個問題4次填單客服都是文不對題或罐頭回應及敷衍
第2次我就指出真正問題點,客服還是一樣,沒有溝通意願
過了一個月也沒解決,所我不再完他們遊戲了
在玩G社遊戲時沒有一次填單問題被解決/回答過,我哪有這麼M繼續玩他們遊戲
Destiny2有擋 (官方說不給用game capture,不知道政策改了沒)
b) 因為Garena盜用OBS程式碼,會和OBS做同樣的事造成衝突 (GTV的功能內有盜用)
ex: 台服LOL,所以從競時通按下啟動LOL後,一定要重開OBS,否則無法使用game capture,其他Garena代理的遊戲應該也會有相同問題
已經退坑了,不確定問題還在不在
4. 防毒擋掉
https://github.com/jp9000/obs-studio/pull/1124#issuecomment-354619901
把 data\obs-plugins\win-capture加入例外
5. 不支援的模式或支援不完全
畫面根本抓不到,或是放影片時就抓不到 (變黑畫面)
以WA2為例,放影片時會生出一個child window,game capture抓原本的,當然沒畫面
有些遊戲可以調模式,改成不同模式試試
1) OpenGL常會有問題 (當掉或是擷取不到)
Mac新版不打算支援OpenGL,OBS應該也不太修正了
實例: nox https://craftwarblog.blogspot.com/2017/12/obs-android-emulator-nox-crash.html
2) 可以嘗試改成DirectX或是改變DirectX使用的版本
據說DX12有些遊戲抓不到,要改DX11
DirectDraw不支援
打開 obs-studio\plugins\win-capture\get-graphics-offsetsddraw-offsets.cpp
/* TODO */
根本沒做阿
DirectDraw已被Direct2D/DirectWrite取代,應該不會有人做,也只有舊程式有影響
ex: diablo2, starcraft聽說是用directdraw
OBS Classic 好像有支援DirectDraw (沒加進OBS Studio)
有問題的話,可以試試
DirectX hook大概還不完全
所以遊戲明明是寫說用DirectX9或8做,卻抓不到只能用Window capture,
遊戲跑到一半game capture突然抓不到影片畫面 (應該是改成不支援的模式)
Vulkan遊戲已在OBS 25.0.0支援 (選擇game capture就可以了)
其他API的可能也會抓不到,沒有遊戲測試
6. 瀏覽器
改用上面1.提到的Windows.Graphics.Capture,下面保留給舊系統使用者看
Google Chrome (含使用cef的程式 ex: Discord)
某版後? 用game capture會抓不到
Win7可直接用window capture抓到 (不用關硬體加速)
Win8/10要關掉硬體加速 (Chrome會降低效能) 才能用window capture擷取,或用display capture
Win8以後Direct2D是用Direct3D 11.1 API做的
DirectWrite底層好像也是Direct2D
obs game capture對D3D11似乎沒有很完全,可能是這原因抓不到
或是程式使用了非一般的寫法
用Spy++可以看到Chrome是D3D11的window
建議改用Firefox,可在開啟硬體加速下,用Window capture抓到
如果白畫面可以去檢查是否webrender被打開
去about:support看,Compositing是否為webrender
2019/6/13 目前好像只有nvidia顯卡會開啟webrender
Graphics
Features
Compositing Direct3D 11 (Advanced Layers)
↑我關掉webrender後,Firefox就改回舊模式,在D3D下還是有硬體加速比Chrome要全關好一點
解法是強制關掉webrender
要去about:config 在webrender.force-disabled改成true
或是用sandboxie開Firefox,可擷取到
7. Window Capture無法抓取最小化的視窗
Windows的系統限制,無解,只能換別種擷取法嘗試
視窗不可最小化,可以不用在最上層 (實際上實況主看不到,較不影響體驗)
8. 軟體衝突 (會在遊戲顯示overlay的軟體都可能,沒有overlay有hook 的也有可能)
可能有時候成功,有時候失敗 (不是每次都發生)
也有可能出現遊戲, 程式或OBS當掉的訊息提示
已知衝突名單 https://github.com/obsproject/obs-studio/wiki/Known-Conflicts
解法,關掉和OBS衝突的程式
關掉Windows 10 Gaming Features
game bar和game dvr最好都關掉
某レミリア嫁的蘿莉控 反映game dvr關掉後,就能用game capture擷取到HELLDIVERS
放鳥星提供,razor的程式會影響csgo的game capture
顯示卡的驅動程式可能也有關係 (特別是使用硬體壓縮的場合)
我有遇過某幾版Nvidia driver會導致nvenc不穩定
9. 如果都抓不到最後一招就是用display capture,直接抓螢幕畫面
OBS擷取效能最差,通常是其他方法都不能用才考慮
這時讓OBS去game capture擷取會造成卡住或當掉 (OBS嘗試inject去hook會失敗)
OBS先切到其他scene,等遊戲啟動完才切回去
或遊戲啟動完再開OBS
1. OBS設定錯誤
全螢幕和視窗的定義,不是遊戲畫面多大 (很多人以為畫面塞滿就是全螢幕)
可以切換game capture的mode試看看
全螢幕的遊戲,切出來看OBS預覽似乎一定是黑畫面 (可用手機或別台電腦確認實況畫面)
不行就改回window capture/display capture試試吧
Windows.Graphics.Capture (新視窗擷取)
Win10 1903+限定,可抓到開啟硬體加速的firefox/chrome或cef,UWP程式
一般而言開啟硬體加速的程式效能會比沒開高,畫面比較順,延遲比較低
https://github.com/obsproject/obs-studio/pull/2208
調整Allow transparency (每個遊戲不一定)
在東方th14打開會變成黑畫面,只有按Esc時有畫面
在HackNet要打開,否則抓不到畫面
如果你有把多張顯卡連接,SLI/Crossfire Capture mode要打開 (效能會降低,沒用別開)
多顯卡的系統 (通常是NB/laptop),OBS和遊戲使用的顯卡不同,要改一樣
2. 權限不合,遊戲用管理者跑,OBS也必需用
ex: Garena LOL (Garena沒有好的理由強迫全部要用admin跑,riot官方就不用)
右鍵選擇以系統管理員身分執行
覺得每次都要跳提示很煩,可以參考 OBS跳過UAC提示的方法
https://craftwarblog.blogspot.com/2017/10/obs-run-obs-as-administrators-without.html
3. 遊戲公司擋掉或其他因素
a) 被擋掉
ex: 客服超濫的Garena,關於這個問題4次填單客服都是文不對題或罐頭回應及敷衍
第2次我就指出真正問題點,客服還是一樣,沒有溝通意願
過了一個月也沒解決,所我不再完他們遊戲了
在玩G社遊戲時沒有一次填單問題被解決/回答過,我哪有這麼M繼續玩他們遊戲
Destiny2有擋 (官方說不給用game capture,不知道政策改了沒)
b) 因為Garena盜用OBS程式碼,會和OBS做同樣的事造成衝突 (GTV的功能內有盜用)
ex: 台服LOL,所以從競時通按下啟動LOL後,一定要重開OBS,否則無法使用game capture,其他Garena代理的遊戲應該也會有相同問題
已經退坑了,不確定問題還在不在
4. 防毒擋掉
https://github.com/jp9000/obs-studio/pull/1124#issuecomment-354619901
把 data\obs-plugins\win-capture加入例外
5. 不支援的模式或支援不完全
畫面根本抓不到,或是放影片時就抓不到 (變黑畫面)
以WA2為例,放影片時會生出一個child window,game capture抓原本的,當然沒畫面
有些遊戲可以調模式,改成不同模式試試
1) OpenGL常會有問題 (當掉或是擷取不到)
Mac新版不打算支援OpenGL,OBS應該也不太修正了
實例: nox https://craftwarblog.blogspot.com/2017/12/obs-android-emulator-nox-crash.html
2) 可以嘗試改成DirectX或是改變DirectX使用的版本
據說DX12有些遊戲抓不到,要改DX11
DirectDraw不支援
打開 obs-studio\plugins\win-capture\get-graphics-offsetsddraw-offsets.cpp
/* TODO */
根本沒做阿
DirectDraw已被Direct2D/DirectWrite取代,應該不會有人做,也只有舊程式有影響
ex: diablo2, starcraft聽說是用directdraw
OBS Classic 好像有支援DirectDraw (沒加進OBS Studio)
有問題的話,可以試試
DirectX hook大概還不完全
所以遊戲明明是寫說用DirectX9或8做,卻抓不到只能用Window capture,
遊戲跑到一半game capture突然抓不到影片畫面 (應該是改成不支援的模式)
Vulkan遊戲已在OBS 25.0.0支援 (選擇game capture就可以了)
其他API的可能也會抓不到,沒有遊戲測試
6. 瀏覽器
改用上面1.提到的Windows.Graphics.Capture,下面保留給舊系統使用者看
Google Chrome (含使用cef的程式 ex: Discord)
某版後? 用game capture會抓不到
Win7可直接用window capture抓到 (不用關硬體加速)
Win8/10要關掉硬體加速 (Chrome會降低效能) 才能用window capture擷取,或用display capture
Win8以後Direct2D是用Direct3D 11.1 API做的
DirectWrite底層好像也是Direct2D
obs game capture對D3D11似乎沒有很完全,可能是這原因抓不到
或是程式使用了非一般的寫法
用Spy++可以看到Chrome是D3D11的window
建議改用Firefox,可在開啟硬體加速下,用Window capture抓到
如果白畫面可以去檢查是否webrender被打開
去about:support看,Compositing是否為webrender
2019/6/13 目前好像只有nvidia顯卡會開啟webrender
Graphics
Features
Compositing Direct3D 11 (Advanced Layers)
↑我關掉webrender後,Firefox就改回舊模式,在D3D下還是有硬體加速比Chrome要全關好一點
解法是強制關掉webrender
要去about:config 在webrender.force-disabled改成true
或是用sandboxie開Firefox,可擷取到
7. Window Capture無法抓取最小化的視窗
Windows的系統限制,無解,只能換別種擷取法嘗試
視窗不可最小化,可以不用在最上層 (實際上實況主看不到,較不影響體驗)
8. 軟體衝突 (會在遊戲顯示overlay的軟體都可能,沒有overlay有hook 的也有可能)
可能有時候成功,有時候失敗 (不是每次都發生)
也有可能出現遊戲, 程式或OBS當掉的訊息提示
已知衝突名單 https://github.com/obsproject/obs-studio/wiki/Known-Conflicts
解法,關掉和OBS衝突的程式
關掉Windows 10 Gaming Features
game bar和game dvr最好都關掉
某レミリア嫁的蘿莉控 反映game dvr關掉後,就能用game capture擷取到HELLDIVERS
放鳥星提供,razor的程式會影響csgo的game capture
顯示卡的驅動程式可能也有關係 (特別是使用硬體壓縮的場合)
我有遇過某幾版Nvidia driver會導致nvenc不穩定
9. 如果都抓不到最後一招就是用display capture,直接抓螢幕畫面
OBS擷取效能最差,通常是其他方法都不能用才考慮
ex: layered window必須用display capture
10. 多顯卡的配置 (筆電Laptop/Notebook)
遊戲和OBS必須跑在同一個GPU (說顯卡可能比較好懂?)
否則會抓不到,詳細情況不清楚,我沒用過筆電實況
要去筆電或顯卡的程式設定目標程式使用哪個GPU
11. Vulkan game 當掉
可能是OBS Vulkan implicit layer和遊戲衝突,可在環境變數設定DISABLE_VULKAN_OBS_CAPTURE=1關掉
或等OBS嘗試修正
其他原因不明的問題
抓不到畫面 (game capture設定畫面有抓到,OBS控制面板/實況無畫面)
這是我朋友的問題,原因未知,有問題的人可以嘗試看看,我以前用Win7完全正常
猜測: Win7必須windows update更新到最新,否則會有這問題
非常感謝你!原來是硬體加速的關係才導致視窗擷取都全黑…找了好久的問題終於解決了QAQ
回覆刪除(幫你多點幾下文章旁的廣告♥)
寫文分享用意是受惠於其他前輩寫的文,該做點回饋,廣告只是順便,能有點收入當然更好。我寫的文太冷門讀者數不多(通常只對沒人寫過的東西有興趣), 累積不到能領出,幫忙分享給更多人知道就可以了。
刪除想請教遊戲擷取突然無法擷取的問題 這是我的dc:The Killing Juke#3403 希望能幫個忙
回覆刪除