Best options for smooth video capture

I had been using OpenBroadcaster for awhile, but it suddenly began recording only a reduced-scale image and then later began choking completely (it would freeze at certain points or not record at all). Even when it had worked, the framerate was often low and choppy.
What are good options? Would Unity’s built-in CaptureScreenshot work, or is it too slow and asychronous?
For the current video I’m working on, I’ll just be capturing an automated sequence rather than interactive gameplay, so that gives me more leeway; but I don’t have much time to do it, so I’m hoping to draw upon other people’s experience rather than having to spend hours experimenting.

The smoothest video capture option is Nvidia Shadowplay.

2 Likes

Unity’s built-in CaptureScreenshot is going to be slow. FRAPS has worked fine for me.

Use the Syphon plugin to get video out from a Syphon enabled camera into your video editing or projection app. This is OS X… There is a similar one for Windows. with a name like Spigot or smiler…

If you have an Nvidia GTX 600+ series card, I would strongly recommend using ShadowPlay. It’s free for anyone with such a card. (it comes as part of the Nvidia software) And it is designed to have a minimal impact on performance while recording, which gives it a definite advantage over programs like FRAPS. It also has plenty of options for recording at different resolutions, and has great compression options.

If you’re sitting on a laptop with integrated graphics, or your machine is using a Radeon card, than it’s not an option.

I have a tower desktop PC with integrated graphics, so Shadowplay isn’t an option.

That is too bad. If you are really serious about making smooth videos, you might want to consider buying an Nvidia card. Shadowplay is definitely worth it when you need smooth videos. You could look at something like the Nvidia GTX 960 or 970.

Get uRecord, you can record your video at 4k 60fps as it renders each frame then puts it all together, no matter how weak your hardware is.

n

That sounds promising, but it apparently requires you to use a fixed time factor for each frame (based on one of the customer comments), just as with CaptureScreenshot . I could do that, but it means rewriting a bunch of scripts.

Yes, very similar. It’s called Spout.

http://spout.zeal.co/

Unfortunately it seems to only work ideally when you have dedicated graphics hardware. Some have gotten it to run with Intel HD, but support seems to be very spotty.

I’ve been using Action! and it works well. It’s a paid program, but seems worth it. It was the only one I found that would let me create tutorial videos at full speed (meaning playing in the editor while recording). It uses hardware acceleration, and it’s really fast.

1 Like

How does it handle cases in which music has to be synced with action on the screen?

For professional result (what press use as well as AAA) is usually achieved with a capture card. A good quality capture card will capture each pixel in blu ray quality, and it’s what we invested in for things like trailers. A good one will set you back $200 or more, but pay off with incredibly high quality results.

Failing this you can try one of the many Unity assets that allow to capture on a per-frame basis (or make your own) and these will always be top quality however you may struggle to play the game with the lower framerates as it will slow down rather than frame skip - however the result will probably be of constant FPS ie 60. Not sure what happens with sound in these cases!

Software solutions like fraps or shadowplay, will always have a mild loss of quality as the emphasis for these are for realtime capture without being a hog on resources, so something has to give.

Unfortunately sounds can’t be captured, these need to be added during editing. Another idea I had is to record the cutscene in realtime at a much lower quality, then sync up the audio track with the rendered version.

For this video, I won’t be playing it manually (I’m setting up an automated sequence to show the game’s features), and I suppose I can add the music with video editing software. The only issue with using a per-frame capture method is making sure my combat code (and Unity’s physics, particle effects etc) run at the correct rate… I assume if I set TIme.captureFramerate, then Time.deltaTime will always return the new fixed rate? Right now I’m using Time.deltaTime to drive everything, and I’d rather not change all the code.

fraps

I think this should work, or it’s at least worth a shot. It would be pretty crappy if it slows it down but doesn’t account for fixedupdate.

I tested Unity’s CaptureScreenshot (using the script at: http://wiki.unity3d.com/index.php?title=ScreenShotMovie ) and it seems to work fine. Setting Time.captureFramerate seems to cause Time.deltaTime to return that value, so there’s no need to rewrite any code that uses Time.deltaTime. I used Blender to assemble the output files (lots of them) into a video, and then added music. It works fine (Blender isn’t the easiest thing to use, but the results are good).