Bug Report Black screen when trying to game capture Battlefield 3

andreibsc

New Member
I'm getting black screen. Before I could stream without problem, later, only the loading screen wasn't blank, and now, the stream records the sound, but not the video. All Steam games are working fine (at least the ones I tested). I tried to stream with Crysis 3, everything is ok, so why is it happening to the Battlefield 3?

I checked a lot of solutions, tried re-installing, update all drivers, resetting OBS, tried the Test Build too, but none of them seem to work. I would thank a lot if someone could help me with this problem since the BF3 is basically the only game I stream.

Here is the log:
Code:
09:53:16: Open Broadcaster Software v0.542b - 32bit (´・ω・`)
09:53:16: -------------------------------
09:53:16: CPU Name: Intel(R) Core(TM) i5-2500K CPU @ 3.30GHz
09:53:16: CPU Speed: 3300MHz
09:53:16: Physical Memory:  4095MB Total, 4095MB Free
09:53:16: stepping id: 7, model 10, family 6, type 0, extmodel 1, extfamily 0, HTT 1, logical cores 4, total cores 4
09:53:16: monitor 1: pos={0, 0}, size={1920, 1080}
09:53:16: Windows Version: 6.1 Build 7601 S
09:53:16: Aero is Disabled
09:53:16: -------------------------------
09:53:16: OBS Modules:
09:53:16: Base Address     Module
09:53:16: 01390000         OBS.exe
09:53:16: 64D60000         OBSApi.dll
09:53:16: 6AE60000         DShowPlugin.dll
09:53:16: 6AFB0000         GraphicsCapture.dll
09:53:16: 6A820000         NoiseGate.dll
09:53:16: 6A840000         PSVPlugin.dll
09:53:16: ------------------------------------------
09:53:16: Adapter 1
09:53:16:   Video Adapter: AMD Radeon HD 7900 Series
09:53:16:   Video Adapter Dedicated Video Memory: 3202543616
09:53:16:   Video Adapter Shared System Memory: 1092358144
09:53:16: =====Stream Start: 2013-08-02, 09:53:16===============================================
09:53:16:   Multithreaded optimizations: On
09:53:16:   Base resolution: 1920x1080
09:53:16:   Output resolution: 1920x1080
09:53:16: ------------------------------------------
09:53:16: Loading up D3D10...
09:53:16: Playback device Default
09:53:16: ------------------------------------------
09:53:16: Using desktop audio input: Alto-falantes (SB Audigy)
09:53:16: Using 7.1 surround speaker setup
09:53:16: ------------------------------------------
09:53:16: Using auxilary audio input: Microfone (3- Logitech G930 Headset)
09:53:16: ------------------------------------------
09:53:16: Audio Encoding: AAC
09:53:16:     bitrate: 128
09:53:16: Using Monitor Capture
09:53:16: ------------------------------------------
09:53:16: Video Encoding: x264
09:53:16:     fps: 30
09:53:16:     width: 1920, height: 1080
09:53:16:     preset: veryfast
09:53:16:     CBR: yes
09:53:16:     CFR: no
09:53:16:     max bitrate: 1000
09:53:16: ------------------------------------------
09:53:17: Total frames rendered: 19, number of frames that lagged: 0 (0.00%) (it's okay for some frames to lag)
09:53:17: =====Stream End: 2013-08-02, 09:53:17=================================================
09:55:10: =====Stream Start: 2013-08-02, 09:55:10===============================================
09:55:10:   Multithreaded optimizations: On
09:55:10:   Base resolution: 1920x1080
09:55:10:   Output resolution: 1920x1080
09:55:10: ------------------------------------------
09:55:10: Loading up D3D10...
09:55:10: Playback device Default
09:55:10: ------------------------------------------
09:55:10: Using desktop audio input: Alto-falantes (SB Audigy)
09:55:10: Using 7.1 surround speaker setup
09:55:10: ------------------------------------------
09:55:10: Using auxilary audio input: Microfone (3- Logitech G930 Headset)
09:55:10: ------------------------------------------
09:55:10: Audio Encoding: AAC
09:55:10:     bitrate: 128
09:55:10: Using Monitor Capture
09:55:10: ------------------------------------------
09:55:10: Video Encoding: x264
09:55:10:     fps: 30
09:55:10:     width: 1920, height: 1080
09:55:10:     preset: veryfast
09:55:10:     CBR: yes
09:55:10:     CFR: no
09:55:10:     max bitrate: 1000
09:55:10: ------------------------------------------
09:55:16: Total frames rendered: 153, number of frames that lagged: 4 (2.61%) (it's okay for some frames to lag)
09:55:16: =====Stream End: 2013-08-02, 09:55:16=================================================
09:56:39: =====Stream Start: 2013-08-02, 09:56:39===============================================
09:56:39:   Multithreaded optimizations: On
09:56:39:   Base resolution: 1920x1080
09:56:39:   Output resolution: 1920x1080
09:56:39: ------------------------------------------
09:56:39: Loading up D3D10...
09:56:39: Playback device Default
09:56:39: ------------------------------------------
09:56:39: Using desktop audio input: Alto-falantes (SB Audigy)
09:56:39: Using 7.1 surround speaker setup
09:56:39: ------------------------------------------
09:56:39: Using auxilary audio input: Microfone (3- Logitech G930 Headset)
09:56:39: ------------------------------------------
09:56:39: Audio Encoding: AAC
09:56:39:     bitrate: 128
09:56:39: Using Monitor Capture
09:56:39: ------------------------------------------
09:56:39: Video Encoding: x264
09:56:39:     fps: 30
09:56:39:     width: 1920, height: 1080
09:56:39:     preset: veryfast
09:56:39:     CBR: yes
09:56:39:     CFR: no
09:56:39:     max bitrate: 1000
09:56:39: ------------------------------------------
09:56:40: ++++++++++++++++++++++++++++++++++++++++++++++++++++++
09:56:40:   New Scene
09:56:40: Using graphics capture
09:56:40: SharedTexCapture hooked
09:56:42: GraphicsCaptureSource::NewCapture:  eliminating old capture
09:56:42: SharedTexCapture hooked
09:58:18: Exit signal received, terminating capture
09:58:20: Total frames rendered: 3008, number of frames that lagged: 6 (0.20%) (it's okay for some frames to lag)
09:58:20: =====Stream End: 2013-08-02, 09:58:20=================================================
09:58:42: 
09:58:42: Profiler results:
09:58:42: 
09:58:42: ==============================================================
09:58:42: frame - [100%] [avg time: 3.807 ms (cpu time: avg 2.462 ms, total 7831.25 ms)] [avg calls per frame: 1] [children: 99.9%] [unaccounted: 0.105%]
09:58:42: | frame preprocessing and rendering - [28.4%] [avg time: 1.082 ms (cpu time: avg 0.367 ms, total 1170.01 ms)] [avg calls per frame: 1] [children: 13.6%] [unaccounted: 14.8%]
09:58:42: | | scene->Preprocess - [13.6%] [avg time: 0.519 ms (cpu time: avg 0.215 ms, total 686.404 ms)] [avg calls per frame: 1]
09:58:42: | video encoding and uploading - [71.5%] [avg time: 2.721 ms (cpu time: avg 2.089 ms, total 6645.64 ms)] [avg calls per frame: 1] [children: 70.8%] [unaccounted: 0.63%]
09:58:42: | | flush - [12.5%] [avg time: 0.477 ms (cpu time: avg 0.049 ms, total 156.001 ms)] [avg calls per frame: 1]
09:58:42: | | CopyResource - [0.158%] [avg time: 0.006 ms (cpu time: avg 0 ms, total 0 ms)] [avg calls per frame: 0]
09:58:42: | | conversion to 4:2:0 - [0.867%] [avg time: 0.033 ms (cpu time: avg 0 ms, total 0 ms)] [avg calls per frame: 0]
09:58:42: | | call to encoder - [57.1%] [avg time: 2.175 ms (cpu time: avg 2.011 ms, total 6396.04 ms)] [avg calls per frame: 0]
09:58:42: | | sending stuff out - [0.158%] [avg time: 0.006 ms (cpu time: avg 0.009 ms, total 31.2 ms)] [avg calls per frame: 0]
09:58:42: | Convert444Threads - [1.74e+003%] [avg time: 66.405 ms (cpu time: avg 2.03 ms, total 6458.44 ms)] [avg calls per frame: 1]
09:58:42: ==============================================================
09:58:42:

And here, the capture hook log:
Code:
2013-08-02, 09:56:40: we're booting up: 
09:56:40: D3D9 Present
09:56:40: DXGI Present
09:56:40: DXGI: Found D3D 11
09:56:40: setting up d3d11 data
09:56:40: ---------------------- Cleared D3D11 Capture ----------------------
09:56:40: found dxgi format (dx11) of: 28, size: {1920, 1080}, multisampled: false
09:56:40: DoD3D11Hook: success
09:56:40: successfully capturing d3d11 frames via GPU
09:56:41: ---------------------- Cleared D3D11 Capture ----------------------
09:56:42: DXGI: Found D3D 11
09:56:42: setting up d3d11 data
09:56:42: ---------------------- Cleared D3D11 Capture ----------------------
09:56:42: DoD3D11Hook: success
09:56:42: successfully capturing d3d11 frames via GPU
09:56:42: NV Capture available
09:56:42: FBO available
09:56:42: GL Present
09:56:42: (half life scientist) everything..  seems to be in order
 
I've had issues with BF3 due to the way the game passes through a shell executable. The BF3.exe application loads a level, but a different executable actually renders the game once the level is live, hooking through the BF3.exe application. This sometimes means the hook the GameCapture method uses gets attached to the wrong executable and you basically get to record only stats and loading screens rather than the game.

My solution (for all games with different menu apps actually) is to assign a hotkey to the GameCapture method rather than let it choose the game itself. Once you're in the game and ready to play, hit your hotkey and it'll swap to the currently-active fullscreen application. In the case of BF3, I had to hit my hotkey whenever a level ends / stats screen pops up, then again once the next level boots up.

I use an AVerMedia LPG now so that makes the problem moot as all display information is captured, so that's another more expensive option if you're hardcore into capturing footage. If not, I'd try the hotkey (I recommend CTRL+F12) and report back your results. If that still doesn't fix things we may be talking a hardware or driver issue.
 

andreibsc

New Member
carbonFibreOptik said:
I've had issues with BF3 due to the way the game passes through a shell executable. The BF3.exe application loads a level, but a different executable actually renders the game once the level is live, hooking through the BF3.exe application. This sometimes means the hook the GameCapture method uses gets attached to the wrong executable and you basically get to record only stats and loading screens rather than the game.

My solution (for all games with different menu apps actually) is to assign a hotkey to the GameCapture method rather than let it choose the game itself. Once you're in the game and ready to play, hit your hotkey and it'll swap to the currently-active fullscreen application. In the case of BF3, I had to hit my hotkey whenever a level ends / stats screen pops up, then again once the next level boots up.

I use an AVerMedia LPG now so that makes the problem moot as all display information is captured, so that's another more expensive option if you're hardcore into capturing footage. If not, I'd try the hotkey (I recommend CTRL+F12) and report back your results. If that still doesn't fix things we may be talking a hardware or driver issue.

That's odd because it worked before. I had some trouble trying to make it wok with previously version of the OBS, but it worked sometimes... I'll try your suggestion, many thanks for the information and the solution ^^
 

andreibsc

New Member
So, I tried but still getting a bug, the first time I think it stopped working due the multiple alt+tab. The second time, it worked in the preview, but the image froze when I went back to the game.
 
Okay, I came across an interesting bug that may be related, and at the same time may NOT be an OBS bug at all. Apparently HDMI connections on NVidia cards make a discrete disctinction between RGB color and YUV color profiles (for nVidia Control Center this means PC versus HDTV resolution). The non-game elements of certain apps (Just Cause 2, any Unreal Engine game [ROTT 2013 in this case], BF3) render in RGB and report as desktop mode. This records just fine. Then the color field changes to YUV standard (usually 4:2:0 like x264 uses) when the game itself kicks into gear. Upon this happening, I capture the last good image of my PC mode image (usually a desktop image) and it never updates. ALT-Tab to the desktop and the image captures like normal. Go back to the game, and the last good PC mode RGB image displays again.

The interesting thing is that killing my stream and then starting a new one while in YUV color mode does the exact opposite, where the game will capture correctly but the desktop comes in as if it were the Y prong on component all by itself (luminence) and nothing else. My guess is that the color field change isn't being picked up by the encoder correctly. turning off the encoder in the preview fixes the issue there at least, so it seems likely.

The real solution is to have games that don't report they use HDTV mode. Console ports are the only games that seem to do this. However as this is more and more prevalent that's not truly a solution, is it?

This seems to happen both with the GameCapture procedure and my LGP device, meaning it's likely not a problem directly coded into OBS. This could be drivers or something, but since nVidia encompasses half of all PC users if it were a driver issue I'd love to help work out a solution through OBS rather than wait for nVidia themselves to fix things.

Yeah, it seems to be an issue, but one I can easily replicate across more than just BF3. Saints Row 3, ROTT 2013, Just Cause 2, LIMBO, Deus Ex: Human Revolution, Sniper Elite V2, and many more console ports exhibit the exact same issues via hardware and software capture methods. I'd be interested to hear what the development team has to say about this as it could be as extensive as re-writing the encoder core or as minor as an overlooked variable pass-through.

That said though, it is an issue, and one that apparently DXTory handles well enough. Anyone know how DXTory handles color space transitions? :/
 
Top