Fox Cutter
New Member
For what I do, I primarily need to stream Word and Excel, but because of how they handle hardware acceleration OBS can't capture them with the normal window capture. This is also true of many browsers as well, such as Firefox, probably other applications that I'm unfamiliar with.
The normal solution for this is to do a Display Capture and crop it down to the window you want to stream. The problem is that this a security risk, as anything that shows up in that space on the display will be streamed. As you can imagine, when working in a corporate environment, this is a bad thing.
To that end, I want to suggest two alternate modes that Window Capture can work. I don't know how complicated it would be to implement them in OBS, but I was able to work up a standalone tool that used them as a workaround for the time being. ( https://github.com/FoxCutter/Tools/tree/master/SlowCapture if anyone is interested)
#1: Using the PrintWindow API. This is a standard part of the windows API, and makes a window to print itself with the provided device context. It's meant as a quick way to output something to the printer, but it works well enough for a screen capture in at least Word and Excel (not so much Firefox sadly). The downside is that this is that it will have some extra CPU usage, as it's forcing the application to do an extra draw cycle, so having a way to cap the capture speed might be a good idea.
#2: Display Capture, but being specific to a given window so you don't have to worry about cropping. In addition there needs to be an option to only capture the window if it is the currently active window in the system, otherwise it should just continue to display the last captured image of the window. This way if anything pops up over it, or you move away from it, you won't accidentally stream something you shouldn't. This works in the case of everything else failing, even for applications like Firefox.
Both of these method do work, and I've been using them with an custom tool as a workaround for the time being. (The tool displays the capture in it's own window, then I can stream that).
The normal solution for this is to do a Display Capture and crop it down to the window you want to stream. The problem is that this a security risk, as anything that shows up in that space on the display will be streamed. As you can imagine, when working in a corporate environment, this is a bad thing.
To that end, I want to suggest two alternate modes that Window Capture can work. I don't know how complicated it would be to implement them in OBS, but I was able to work up a standalone tool that used them as a workaround for the time being. ( https://github.com/FoxCutter/Tools/tree/master/SlowCapture if anyone is interested)
#1: Using the PrintWindow API. This is a standard part of the windows API, and makes a window to print itself with the provided device context. It's meant as a quick way to output something to the printer, but it works well enough for a screen capture in at least Word and Excel (not so much Firefox sadly). The downside is that this is that it will have some extra CPU usage, as it's forcing the application to do an extra draw cycle, so having a way to cap the capture speed might be a good idea.
#2: Display Capture, but being specific to a given window so you don't have to worry about cropping. In addition there needs to be an option to only capture the window if it is the currently active window in the system, otherwise it should just continue to display the last captured image of the window. This way if anything pops up over it, or you move away from it, you won't accidentally stream something you shouldn't. This works in the case of everything else failing, even for applications like Firefox.
Both of these method do work, and I've been using them with an custom tool as a workaround for the time being. (The tool displays the capture in it's own window, then I can stream that).