.kkapture 0.01 - demo capturing made easy (hopefully)

category: code [glöplog]
After all, it has been passed some time since the last release, would be great to kapture some recent demos too?
added on the 2014-10-05 17:31:41 by Sapphire Sapphire
Yeah, and people seem to be doing exactly that without problems all the time, so what is the problem you are having that needs to be fixed, or if there is no problem, why do you need a new version?
Dunno if this is the right place for a video request, hopefully it is. I just want to ask if it's possible to get a video capture of this demo: http://www.pouet.net/prod.php?which=1912 Thanks and sorry if I'm in the wrong place!
added on the 2014-11-12 12:35:09 by highlife highlife
I have been doodling around with a little fork of .kkapture for KG since we wanted to show a bunch of demos/intros that run in 320x240 and that's no longer in the drivers for most video cards. So I took the .kkapture code and made a little app that tricks the demo to render in 320x240 but itself runs in desktop resolution and scales the image up: https://github.com/Gargaj/upskkale - it still has some quirks but it fixes a bunch of old stuff I haven't seen for a while. :)
added on the 2014-11-12 13:52:39 by Gargaj Gargaj
If you get the version at https://github.com/Gargaj/upskkale/releases/tag/v0.1 you'll be able to run Scream fairly well.
added on the 2014-11-12 18:13:04 by Gargaj Gargaj
havent seen that one in ages <3, thanks :)
hmm, that is a very nice use of video capture. Passing this on to DrClaw so we can add some more variety to our downtime demo playlist at the party . . . kudos Garg!
Thank you, Gargaj! It worked!
added on the 2014-11-18 13:27:34 by highlife highlife
How to use upskkale?
added on the 2014-11-18 23:55:33 by Gracek Gracek
Same way as kkapture, you just select the demo you wanna upscale and boom.
added on the 2014-11-19 21:11:19 by Gargaj Gargaj
hmm could this thing also be used to just watch old lowres demos the upscaled way without actually capture/encode them (which is super cool, of course)?
added on the 2014-11-19 21:16:29 by wysiwtf wysiwtf
That's pretty much what it does yes. The actual video capturing part was removed, all I kept was the DDRAW hooks.
added on the 2014-11-19 21:19:07 by Gargaj Gargaj
oh, i didnt realise (mostly because of not actually trying the tool because of being on the office computer)!
looks really neat, maybe capturing will work in combination with shadowplay regardless, even.
brb, hunting for demos.
added on the 2014-11-20 00:34:43 by wysiwtf wysiwtf
and thanks for your effort :)
added on the 2014-11-20 00:35:48 by wysiwtf wysiwtf
Well, to answer Saga's question: I'm trying to kkapture an intro that uses the windows Speech API (SAPI), and it hangs right when the voice should start. I only see DirectSound, WaveOut and "some popular sound systems" mentioned on the kkapture homepage, I suppose SAPI isn't part of that.

The contact details at the homepage don't work anymore, so I'll put this here, even though I'm not sure it's feasible to fix this.
added on the 2015-03-21 13:50:38 by Seven Seven
It seems that kkapture has issues with a lot of newer demos:

- Fairlight's "Ziphead" crashes right at the start. The good news here it that's a trivial-to-fix bug in kkapturedll.grabFrameD3D10(): it tries to create a buffer texture from the swap chain it receives (which works), then queries that texture for its parent device (which fails), gets a NULL pointer, but tries to dereference it anyway. Once that's fixed, that demo seems to work just fine.

- The newer Still and Cocoon demos don't run at all due to their 64-bitness. (Still actually use .net, which should theoretically be kkapturable on 32-bit systems, but the launcher executable is 64-bit native code.) I tried to generate a 64-bit version of kkapture (which should be reasonably easy; the only heavily architecture specific part, the hooking library, is already 64-bit compatible) and already replaced the few 32-bit assembly functions by their equivalent C code, but gave up when the linker told me I need to go hunting for 64-bit .lib files for the DirectX and DirectShow crap.

- Conspiracy's "Offscreen Colonies" shows the loader bar (but doesn't capture it -- kkapture hasn't seen any frames so far), but then stops and kkapture generates "app is hammering dsound GetCurrentPosition" messages every few seconds, ad infinitum. Playing around with the auto-skip options didn't change anything for me.

- Mecury's "The Timeless" captures the loader bar just fine, but after that, it only generates black frames without audio, without any warning or error messages whatsoever.

The existence of various YouTube videos tell me that somebody *did* manage to capture these demos though. How did they do it? Is there any specific option that solves these issues? Please don't tell me they just used Fraps or some HDMI recorder ...
added on the 2015-04-19 15:15:24 by KeyJ KeyJ
I guessed most YT captures nowadays are made from a HDMI hardware capture device. I personally use Hauppauge PVR, but since it only captures 1080p/30FPS its "useless" now with 60FPS beeing the norm.
added on the 2015-04-20 00:25:33 by Salinga Salinga
... oh, and then there is NVIDIA's "Shadowplay"
added on the 2015-04-20 00:29:06 by Salinga Salinga
by KeyJ:
The existence of various YouTube videos tell me that somebody *did* manage to capture these demos though. How did they do it? Is there any specific option that solves these issues? Please don't tell me they just used Fraps or some HDMI recorder ...
Try asking annikras, he makes quite a lot of high quality demo captures, and has as of late started posting 60fps versions. He's the first I think of to ask. This is his YouTube channel. They may be a way to ping him there, or just reply to one of [his comments on one of] his videos.
I record almost anything with OBS ... It's used for live streaming but performs well when just recording to HD, try it: https://obsproject.com/
by Salinga:
... oh, and then there is NVIDIA's "Shadowplay"
So actually, this works pretty well with a few things to note. I already GeForce Experience, a kind of annoying app that contained the settings for ShadowPlay. Once I figured out all the requisite bits, I was able to capture a > 720p but < 1080p video at 60fps. I uploaded it to YouTube which gives a max of 720p60.

(This is what I got when I asked YouTube to trim off the 1.4s of the desktop, and man did it take forever to process the video. I know I asked for it to be a separate video, but why couldn't they just copy it as is, and set the player to only request the parts of the video from the new start to the end? No reencoding required.)

Notes for future people attempting with ShadowPlay:

  • You need to enable the "Allow desktop capture" setting.*
  • To enable ShadowPlay, open GeForce Experience, click the ShadowPlay button in the top right, then hit the top of the switch button on the left of the new dialog.**
  • ShadowPlay seems to like to go back to the desktop after hitting Alt+F9 to start capturing, so you need to click to refocus the demo app.
  • Due to the previous, you may end up with a second or so of the desktop that needs trimming from the finished video.
  • I did set ShadowPlay to 1080p and 60fps, but my screen resolution tops out at 1680x1050 so that's why I maxed out with 720p60 after uploading to YouTube. The video it saved on my harddrive was has a frame width of 1680x1050. ShadowPlay's settings indicate it can go up as far as 1440p.
  • No stuttering! The demo seemed at least as fast as it would be without ShadowPlay running.

Since Pouet's bb-code implementation doesn't handle nested lists correctly ...

* Annotation for the first list item above:

  • Open GeForce Experience.
  • Go to the Settings tab and the ShadowPlay subsection.
  • Check the option below the monitor image on the right.

** Annotation for the second list item above:

  • This may crash Firefox. Did for me. Driver updates also make my Firefox render fonts wonky, so I think it's a general issue. Firefox will behave fine with ShadowPlay enabled, so just reopen it and restore your session.
  • The screen, at least for me, flashed a few times to black and various other wonky renderings before finally returning me to a usable desktop after I turned on ShadowPlay.

Anyway, maybe people have reasons
already had GeForce Experience*

(It notifies me when there's driver updates and facilitates updates, otherwise I would have tried to uninstall it long ago. It goes unresponsive when click the update button sometimes, can crash, and definitely goes wonky if you accidentally click the update button more than once while it is temporarily unresponsive. Blargh. Hate!)
KeyJ: the precalc bar in the Conspiracy intros is designed to be as minimally intrusive as possible (it's only rendered if at least 40ms has elapsed since the last render). For kkapture, which takes over the timing this means that optimally the precalc bar is perceived as part of the very first frame, and thus not shown at all. This is expected, and intended. Not sure why it shows up at all, and I also have no idea what might be causing the other issue you saw.

As for the videos seen on our youtube channel, they are based on exact frame by frame dumps straight from our tool (the 4k test render we did at 60hz for Offscreen Colonies took the better part of a day due to lack of hdd space and thus going with png compression), you can't really hope to get better than that.
added on the 2015-04-20 06:29:39 by BoyC BoyC
BoyC, niiiice. :) But not everyone releases their own capture or has a tool that can just do that. In general though it is nice, if I can't run it myself (or am not at home to do so) I'd prefer captures from the original developers, and Annikras second. :)

On an unrelated note, I guess Firefox only crashes the first time you turn on ShadowPlay. After that it doesn't care.
This guy also takes perfect 60fps captures (without a capture-credit overlayed like Annikras does in the end of his videos):
added on the 2015-04-20 12:16:31 by Salinga Salinga