STEAM GROUP
Steam Remote Play homestream
STEAM GROUP
Steam Remote Play homestream
2,046
IN-GAME
30,403
ONLINE
Founded
November 7, 2013
loler_SK Nov 6, 2015 @ 1:30am
How to quickly enable/disable NVFBC encoder for Nvidia cards on Windows
Hi there,
I use the below batch scripts (*.bat) files to quickly enable/disable NVFBC hardware encoder on HOST PC for compatible Nvidia cards. When NVFBC is disabled, Steam uses NVIFR. Try it if you want, works for me on Windows 7 64bit. So I no more need to uninstall/reinstall GeForce Experience to do this. Don't forget to restart Steam on HOST PC once the encoder is disabled/enabled. I expect that you need to have GeForce Experience installed in order to enable NVFBC.

link:
http://www83.zippyshare.com/v/khwk87ip/file.html

Last edited by loler_SK; Nov 6, 2015 @ 1:34am
< >
Showing 1-15 of 94 comments
salxicha Nov 6, 2015 @ 3:29am 
Do you mind describing why should we do it? Any technical advantages compared to H264?

When I use hardware encoding on my host PC games using too much physics (Crysis series) stutters like hell :(
loler_SK Nov 6, 2015 @ 4:26am 
I have NVFBC disabled to use NVIFR encoder for most games as I have better performance with it on my GTX770. Hovewer GTA5 and some other games won't launch with NVIFR, they use software encoder or cannot launch at all (black screen), so then I enable NVFBC to play these games, because NVFBC works for every game and have better performance than software encoding. When you install GeForce experience and enable "streaming" in its setting, Steam always use NVFBC as hardware encoder, which is slower than NVIFR and has worse latency on GTX770. Maybe newer architecture (GTX 900 series) works better with NVFBC, but that's not my case. So I'm enabling it only when needed due to compatibility.
salxicha Nov 6, 2015 @ 4:41am 
Interesting! As I'm just started with in-home streaming I had no idea that I actually should enable streaming inside GeForce experience to change the codec.

I was receiving poor results while hardware encoding at my host GTX980 and using software encoding instead with overall better quality.

Thanks for the explanation and the files
roger Nov 6, 2015 @ 6:50am 
Interesting, witcher 3 on gtx770, seems NVFBC performance is much better than NVIFR
loler_SK Nov 6, 2015 @ 6:54am 
I play witcher 3 over streaming as well, and NVIFR works better for me, the game runs more smoothly, really interesting...
i can confirm the new nvidia 358.87 drivers give shadowplay over sli, if you turn shadowplay on then off to use NVFBC it appears to allow in home streaming to use sli.
Greg Nov 6, 2015 @ 7:19pm 
I really appreciate you making this script. I'll have to try it out tonight. My previous "solution" was to just uninstall the driver every time I wanted to go from FBC to IFR as toggling shadowplay off never turned off NvFBC.

To be honest I don't think NvIFR is "disabled" by any means. I think valve has it set higher than NvIFR on the encoder priority chain which in my (and many others) opinion is completely wrong. IFR should always take precedence over FBC.

Also I've managed to get GTAV to work using NvIFR. The trick is start the launcher, "launch" the game, and during the 3-4 second period before the game starts quickly start the stream. Unfortunately in my case I must have the stream started before the game actually launches otherwise it will not detect my controllers. It sounds like a pain in the ass, because it is. Though after doing it a few times it becomes pretty trivial.


For those wondering the difference.

NVFBC = Full framebuffer capture

NVIFR = Single game capture. (From what I can tell it does this is much more of a "push" than a "pull" if that makes sense)

NVIFR should always be faster than NVFBC

Q6) When should NvFBC and NvIFR be used?
A6) NvIFR is the preferred solution to capture the video output of one specific
application. NvFBC is better for remote desktop applications. For a more detailed
explanation of the differences, please refer to the “Amazon G2 Instance Getting Started
Guide” included with the SDK.

https://developer.nvidia.com/sites/default/files/akamai/gamedev/docs/GRID-SDK-FAQ.pdf
Last edited by Greg; Nov 6, 2015 @ 7:26pm
roger Nov 6, 2015 @ 7:57pm 
I hope steam can let user choose which hw encoder they want to use, and for my case - i5/gtx770/Windows 10, run withcer 3 with 1680x1050, the host machine can get nearly 50~60fps on normal situation, but with NVIFR, the fps drop down to 40~50 on client, and NVFBC still get 50~60, so its hard to tell which is better...

PS:
I use a trick to make steam pass the 30m network limit, the encode bit rate can reach 50m~70m
Nevermind my previous post, definately feels like hardware encoding is broken and performance across games is inconsistent.

To top it all off I can consistently reproduce an issue with Batman Arkham Knight where using NVFBC the game will freeze on client but sound continues. On the host, the game is still running fine ! but in the background the steam bootstrapper has stopped responding :(
Queuecumber Nov 7, 2015 @ 12:00pm 
Can you explain how this works or what the manual steps would be? I'm kind of opposed to running an encrypted executable delivered via script from a random internet download
Greg Nov 7, 2015 @ 12:24pm 
From what I can tell it's the standard "NvFBCEnable" executable that is provided with the GRID SDK. He embedded this into the batch file as I don't think it's installed with the GeForce experience software (it's probably embedded). I have not manually decrypted the file and run a virus scan on it although you could do this easily if you wish. Just remove this line "%temp%\NvFBCEnable.exe -enable/disable/checkstatus" from the batch file and then run it. Then scan the NvFBCEnable.exe in the temp directory.

https://developer.nvidia.com/sites/default/files/akamai/gamedev/GRID/grid22/GRID-SDK-FAQ.pdf

Q18) How do I enable NvFBC?
A18) Here are the NvFBC settings
a) Windows: NvFBC needs to be enabled after a clean installation.
{Installation Directory} \bin> NvFBCEnable.exe -enable
Use the NvFBCH264 SDK sample to capture the desktop to a H.264 file
Last edited by Greg; Nov 7, 2015 @ 12:27pm
loler_SK Nov 7, 2015 @ 12:50pm 
Yes exactly, the script uses NvFBCEnable.exe from Nvidia GRID SDK.
Greg Nov 7, 2015 @ 1:00pm 
Ironically if you just included the NvFBCEnable.exe with some shortcuts then people would probably freak out about "some random executable".
Last edited by Greg; Nov 7, 2015 @ 1:01pm
Seleuco Nov 7, 2015 @ 1:31pm 
NVIFR -> suited for windowed, borderless windowed games.
NVFBC -> suited for full screen games.

So you should configure full screen, not borderless window...

NVFBC is better for games at full screen.
Greg Nov 7, 2015 @ 1:31pm 
You're completely wrong (you have it backwards). Except for the running full screen part.

I'll again quote NVIDIA's own GRID FAQ

Q6) When should NvFBC and NvIFR be used?
A6) NvIFR is the preferred solution to capture the video output of one specific
application. NvFBC is better for remote desktop applications.

A3) The GRID SDK consists of two component software APIs: NvFBC and NvIFR.
a) NvFBC captures (and optionally H.264 encodes) the entire visible desktop
b) NvIFR captures (and optionally H.264 encodes) from a specific render target

https://developer.nvidia.com/sites/default/files/akamai/gamedev/docs/GRID-SDK-FAQ.pdf
Last edited by Greg; Nov 7, 2015 @ 1:36pm
< >
Showing 1-15 of 94 comments
Per page: 1530 50

Date Posted: Nov 6, 2015 @ 1:30am
Posts: 94