|
I've been quick to recommend people use DXTory instead of xsplit's screen region, but until now I hadn't really done much research on the subject. I decided to do some very rough benchmarks comparing screen region to game source and dxtory. These results will probably vary between systems a lot due to different CPU and video cards. This test is only testing capture, no streaming occurred.
The Results
- Baseline (no capture): 100 fps, 45% CPU usage.
I loaded a unit test map and spawned enough units to give me a nice stable 100 fps on my i5 2500k with an NVIDIA GTX 560 Ti, 1680x1050, medium graphics.
- XSplit screen region (1680x1050): 90 fps, 60% CPU usage.
As expected, CPU use within xsplit jumped once adding the screen region. I was actually surprised how low the FPS hit was though, if you have the spare CPU this seems like a good (and free) method to use.
- XSplit game source: 62 fps, 66% CPU usage.
Pretty terrible. Would not recommend, it maxed out XSplit's CPU usage across a single core and caused a 40% FPS drop in SC2. Despite SplitMedia's claims that game source is ready for prime time, it clearly has a long way to go.
- DXTory (with scaling): 82fps, 55% CPU usage.
Was surprised again by the FPS hit, I thought DXTory would cause the lowest FPS drop prior to these tests. This test involved scaling options set in DXTory to match the XSplit window size (1152 x 720).
- DXTory (no scaling): 82fps, 50% CPU.
Same as above, but with no scaling set so that XSplit has to do the scaling. The CPU hit from this is very low, which seems to indicate something else is causing the FPS drop as there is clearly a lot of CPU to spare.
- DXTory (Synchronous Surface Lock): 92fps, 55% CPU.
Enabling the advanced option 'Synchronous Surface Lock' seems to increase FPS considerably with a minor CPU hit. This option may be video card dependent, so do your own testing do determine whether this helps or not.
The Problem You might look at the results and think you'd be fine using the built in screen region in XSplit. Several pro-gamers have complained that even on high end PCs, streaming makes their game feel laggy. I tried to quantify this lag and found that screen region does indeed cause frame lag. If you capture your game using the screen region feature, expect to see a few frames of input lag.
You can tell if there is frame lag by dragging your mouse around the mini-map very fast and observing if the white rectangle keeps up with your mouse cursor. I shot video of my screen at 60fps and reduced it to 1fps to show the results here:
No Capture (regular SC2):
XSplit Screen Region:
DXTory:
(If the above images no longer work due to bandwidth use, you can download the test videos here).
You can clearly see that the XSplit screen region method introduces frame lag that is not present with no capture or DXTory. Another interesting thing I noticed is that screen region will still cause increased CPU use and frame lag even if it is disabled in the xsplit sources window. I strongly recommend removing all unused screen regions for this reason.
Update: Disabling Aero seemed to remove the frame lag issue with screen capture for me. Your results may vary as this is probably video card dependent.
DXTory Worth It? DXTory isn't free and costs around $50. Whether this is worth it to you depends on whether you are sensitive enough to notice the frame lag caused by xsplit screen capture. If you want the best gameplay experience when you stream, then DXTory is a must. If you aren't at the level where frame lag is affecting your game, then xsplit's screen region is surprisingly efficient, if a little CPU hungry. Another benefit of DXTory is being able to capture in Fullscreen mode, which some pro-gamers prefer to use instead of Windowed Fullscreen.
|
DXtory helps reduce the amount of bitrate as well, no? I know someone showed almost near HQ quality with a below 1MB upload.
http://www.teamliquid.net/forum/viewmessage.php?topic_id=272764
I use DXtory because GameSource is still terrible and screen region is, as you show above, still pretty bad. What's great about DXTory is that it stays on the game-screen, so I can alt-tab to a private skype conversation and it won't show the audience what I am doing.
|
DXTory is just a capture method, none of them will have any effect on bitrate or CPU used during the encoding.
|
I think Rich is saying that streaming with dxtory is better than with xsplit. That's... good I guess. Yes let's go with that. Good.
|
No, you need to stream with DXTory + XSplit.
|
R1CH, you're a savior to all streamers mate. Thanks very much for the research
|
R1ch, you're fucking amazing.
|
I didn't even know there was this synchronous surface lock, I've got an ati 7970 so we'll see how that effects my performance. And not sure if others do this, but disabling flash/having only one browser tab up for stream control will significantly increase fps. Playing with flash enabled in the background reduces my fps by like 20%, and cause the occasional stutter.
|
Hahah i read it as Xsplit captures meth i was confused for a bit but haha R1ch the hacker man.
|
Yeah closing all background applications using GPU / CPU is important when streaming. Browsers especially can be playing flash-based ads that will use CPU and GPU resources. On that note, the TwitchTV dashboard video preview must be paused, pressing "Hide Video" does not actually stop it from playing and consuming resources, it only hides it.
|
Thanks R1CH, was looking at streaming options and messing around with Xsplit's free version, good to have extra advice. 5/5
|
Had no clue it was this noticeable. Wow.
|
T.O.P.
Hong Kong4685 Posts
How about other video capture software like VHScreenCap and SCFH
|
VHScreenCap is essentially the same as XSplit (SplitMedia bought vhscreencap and vhmulticam and made xsplit out of it). Haven't tested enough with SCFH, think it's probably on par with xsplit but it's incredibly annoying to setup.
|
Nice tests. Just drove by here to point out that the title in the sidebar is:
XSplit capture meth…
which could have been the title of an entirely different kind of thread.
|
Very nice tests, was planning on doing the same. Ive gotten the same results as you with region vs game source. Shocked to see dxtory beeing that better though.
|
R1CH, I noticed that I get way better framerates when I keep Aero enabled (like 180-220 fps with various screen capture methods (x-split inbuild, uscreen, scfh, dxtory), while I only get 20-50 fps when I disable aero.
When aero is disabled opening X-Split and having it visible on my 2nd screen without any screen capture alone reduces it from 250 to 90.
I always thought that Aero is bad for performance so I am a bit confused now.
Also game source is at 150fps for me with Aero enabled and at 20-30 fps with Aero disabled.
Does gamesource also cause the framelag?
|
R1CH you are a god amongst men! Thanks for this post.
|
Are your tests done in fullscreen or fullscreen windowed mode? I've noticed that while using XSplit and fullscreen mode, the UI flashes, and thus you have to run it in fullscreen windowed, but DXTory works fine in fullscreen mode.
|
Forgot to mention, these tests were with Aero enabled. Will re-test a bit later with Aero disabled but I suspect this will not make any difference unless there are layered windows.
|
ah I guess it just makes a difference when you have x-split not minimized. When I minimize it I get good performance without Aero as well. And really hast to be minimized not just hidden behind the sc2 window.
Actually it's just for gamesource where it makes a big difference...
I still get way worse performance without aero even when minimized (and scaleport 10%), with the x-split screen capture method and also with various directshow filters.
|
I think it really depends on your configuration. I benchmarked as well now and Xsplit screen region recorded average 150fps on high quality setting in SC2. DXtory did average 125-130fps. And for me Aero needs to be disabled, it actually boosts 30-40fps with it off. And i got the xsplit window open in another monitor.
|
Interesting, time to test it on my computer. Kind of sad that 3600 yen is $44 though.... since when did it drop below 100 yen per dollar -_-;;
|
What about FMLE+camtasia, with 2.5 and VP6. From my tests it seems to have the best performance
|
finally a good comparisson. Good that I am using DXTORY
|
Is there an option to downscale with either method (Xsplit or DXTory) with actually downsample the picture instead of just removing pixels? Xsplit offers an optimization for text but this only works well for exact factor 2 downscaling. If I want to scale down by lets say factor 3, I still get very much aliasing due to the pixel discarding instead of proper downsampling.
|
Will you ever test other methods such as using Adobe's Flash Media Encoder?
|
On April 18 2012 22:03 [F_]aths wrote: Is there an option to downscale with either method (Xsplit or DXTory) with actually downsample the picture instead of just removing pixels? Xsplit offers an optimization for text but this only works well for exact factor 2 downscaling. If I want to scale down by lets say factor 3, I still get very much aliasing due to the pixel discarding instead of proper downsampling. DXTory and XSplit both downsize via resampling. Nearest neighbor would look way worse than it actually does.
On April 18 2012 22:28 Valeranth wrote: Will you ever test other methods such as using Adobe's Flash Media Encoder? No since xsplit's x264 encoder is far superior in every way.
|
Oh this is nice. I thought it was just me noticing frame lag when streaming, and I have a 2600k. Might give Dxtory a shot and see if the difference is noticeable.
|
Tested some more with Aero disabled. No change in FPS or CPU usage in either xsplit or dxtory, however with Aero disabled, the frame lag from xsplit screen capture seemed to disappear for me.
|
That's weird, I typically have Aero disabled while streaming and have been getting frame lag until now.
What is the "synchronous surface lock" you speak of in the OP by the way?
edit: nvm, found it
|
So I guess you would recommend, if using xSplit, to use screen capture opposed to game capture. Looks like I'll be switching it up and see if I notice a difference as I do notice some frame lag when I play and use game mode. Thank you for the blog R1CH, much appreciated.
|
On April 18 2012 23:29 R1CH wrote:Show nested quote +On April 18 2012 22:03 [F_]aths wrote: Is there an option to downscale with either method (Xsplit or DXTory) with actually downsample the picture instead of just removing pixels? Xsplit offers an optimization for text but this only works well for exact factor 2 downscaling. If I want to scale down by lets say factor 3, I still get very much aliasing due to the pixel discarding instead of proper downsampling. DXTory and XSplit both downsize via resampling. Nearest neighbor would look way worse than it actually does. It does look bad. The "Optimize text resize" option only seems to use bilinear downsampling for optimized resizing, but this only works when the factor to scale down is 2.0 at max, otherwise again pixels are lost without being weighted into downsampled pixels.
Same for DXTory: If I scale down 1920x1080 to 640x480 (factor 3.0) pixels are lost.
|
On April 18 2012 23:29 R1CH wrote:Show nested quote +On April 18 2012 22:03 [F_]aths wrote: Is there an option to downscale with either method (Xsplit or DXTory) with actually downsample the picture instead of just removing pixels? Xsplit offers an optimization for text but this only works well for exact factor 2 downscaling. If I want to scale down by lets say factor 3, I still get very much aliasing due to the pixel discarding instead of proper downsampling. DXTory and XSplit both downsize via resampling. Nearest neighbor would look way worse than it actually does. Show nested quote +On April 18 2012 22:28 Valeranth wrote: Will you ever test other methods such as using Adobe's Flash Media Encoder? No since xsplit's x264 encoder is far superior in every way. i get better performance with VP6 codec on FMLE than xsplit lowest quality encoder. Just saying.
|
On April 19 2012 02:20 storkfan wrote:Show nested quote +On April 18 2012 23:29 R1CH wrote:On April 18 2012 22:03 [F_]aths wrote: Is there an option to downscale with either method (Xsplit or DXTory) with actually downsample the picture instead of just removing pixels? Xsplit offers an optimization for text but this only works well for exact factor 2 downscaling. If I want to scale down by lets say factor 3, I still get very much aliasing due to the pixel discarding instead of proper downsampling. DXTory and XSplit both downsize via resampling. Nearest neighbor would look way worse than it actually does. On April 18 2012 22:28 Valeranth wrote: Will you ever test other methods such as using Adobe's Flash Media Encoder? No since xsplit's x264 encoder is far superior in every way. i get better performance with VP6 codec on FMLE than xsplit lowest quality encoder. Just saying. Well VP6 looks like ass compared to x264, so it's not surprising that it would be faster.
|
On April 19 2012 01:53 [F_]aths wrote:Show nested quote +On April 18 2012 23:29 R1CH wrote:On April 18 2012 22:03 [F_]aths wrote: Is there an option to downscale with either method (Xsplit or DXTory) with actually downsample the picture instead of just removing pixels? Xsplit offers an optimization for text but this only works well for exact factor 2 downscaling. If I want to scale down by lets say factor 3, I still get very much aliasing due to the pixel discarding instead of proper downsampling. DXTory and XSplit both downsize via resampling. Nearest neighbor would look way worse than it actually does. It does look bad. The "Optimize text resize" option only seems to use bilinear downsampling for optimized resizing, but this only works when the factor to scale down is 2.0 at max, otherwise again pixels are lost without being weighted into downsampled pixels. Same for DXTory: If I scale down 1920x1080 to 640x480 (factor 3.0) pixels are lost. The scaling done when you add sources that aren't 1:1 to xsplit is pretty bad and you have no control over it. There's two solutions, either scale on the capture side so your sources are 1:1 in xsplit (dxtory scaling I believe is bicubic) or run your xsplit scene at 1920x1080 or whatever size your source is, then use one of the resize options on the channel page.
|
I use Own3D, can I set a resize there?
My issue is low upstream bandwidth (currently I use 440 kBit for video) so I would like to test 640x360 instead of streaming in 960x540.
I did not find any resampling options in DXTory, I can just set a new size as percentage or in pixels.
|
I knew there was some inexplicable lag on xsplit...
|
Wow, I had practically zero lag whatsoever today when streaming with Dxtory. Couldn't even tell the difference when it comes to lag had I been streaming with it or not been streaming. This combined with the AutoSceneChanger that I just found this week makes me a super happy panda. Gaming performance while streaming is now much better.
|
I advice people to do some individual benchmarking cause with my benchmark xsplit actually outperforms dxtory.
XSplit -> 140-160 fps Dxtory -> 60-90fps
Thats a huge difference. Havent changed any option in dxtory except turned off recording to a file, set fps to 30 (same as xsplit) and recording in 720 (same as xsplit).
|
i'm using vlc with screen capture recorder as directshow source for streaming (& ffmpeg to translate the rtsp into rtmp for own3d, but that should not be relevant for your tests). it does not have the advantages of scene switching & such, but i'm not noticing any lag (i7-2600 & 560-ti). maybe an alternative test candidate for your analysis ?
|
Interesting. I'd be interested in reading something similar exploring more "pure hardware" style streaming - possibly splitting video out from one computer into a capture card on a second computer that does the conversion & streaming.
But then I've got 4 computers sitting around, and only use one of them. (3 of them cannot play SC2.)
|
Was curious if you could maybe run some tests on the gamesource function for streaming DOTA2? I was considering getting a license for xsplit to get the gamesource function but im a little worried after seeing the results here.
|
Dxtory is great. It's actually manageable to stream Dota with Dxtory + Xsplit on my AMD cpu. Also you guys might find this exciting. I read this on Reddit a few days ago from the AMA:
Why is dxtory superior to xsplits game source capture when it comes to dropped in-game fps performance?
[–]MSgtGunny[S] 6 points 4 days ago*
On the whole it tends to be better (although we have seen some cases where it caused a higher frame drop) than game source. Why I don't really know. What i do know is that the 64 bit version of game source will be part of version 1.1 which is penciled in for May and we are always optimizing it to try to reduce fps drop.
|
DXtory is absolutely terrific. Improves framerate so much and lets you get rid of that pesky frame lag. IMHO if you're serious about streaming quality/gameplay, it's a MUST; 50$ invested on streaming isn't that much for what you get.
|
I dont know how you guys manage to get better fps with dxtory. You sure you guys clicking add region and clicking the sc2 window and not using game source or dragging a region manually ? Xsplit gives me 40fps more than dxtory.
|
Have anybody tried DXtory with LoL streaming?
|
Just wanted to say thanks for making this post it clears up a lot of confusion for me about the different methods. Response issues are fixed now, all thanks to you.
|
Blazinghand
United States25546 Posts
On April 20 2012 06:57 Avean wrote: I dont know how you guys manage to get better fps with dxtory. You sure you guys clicking add region and clicking the sc2 window and not using game source or dragging a region manually ? Xsplit gives me 40fps more than dxtory.
I'm typically just clicking on my desktop, and it adds the 1366x768 region as "Screen Region". Are you using that or the Sc2.exe process?
|
Yeah it still adds as a region, but still xsplit is so much faster than dxtory. Must be CPU related or something. (i7-960)
|
I have a question for R1CH because no one seems to know what would be causing my issue with Dxtory and Xsplit. I can capture video with Dxtory, and it works great. If I use direct show output to xsplit, and stream, it appears smooth in the xsplit window. The stream, however, seems to be dropping frames like crazy. This is with Battlefield 3. I don't bother using Dxtory with SC2 because I like to show my desktop. With BF3, screen capture lags way too much, so I'm trying Dxtory. Do you have any idea why the game would run fine, the xsplit preview would look ok, but the stream would lag when using Dxtory? I only have the problem with Dxtory. I have probably tried all combinations of settings between xsplit and dxtory without fixing it.
EDIT: To be more specific about the lag on stream, it's not a skip here and there. It's almost as if I'm broadcasting at a much lower frame rate than I am. I'm only resorting to asking because I can't think of any other settings to change. I've been over the settings off and on for a month or two now. Some settings change severity of the problem, but noting fixes it.
|
Frame drops are caused by excessive CPU usage or poor network conditions. Try a different ingest server.
|
Sorry, but that FFMPEG stuff sounded interesting. Would it be possible to go from DXTory -> FFMPEG(h264) -> Own3d/Twitch?
|
|
|
|