Log in

View Full Version : HQ Machinima Fine-tuned


Xandrino
16th December 2011, 20:49
Oi!

How would you go about making 'rips' of game footage from modern pc games. Id mainly like to hear the opinion of people who have experience in this area or at least have got a firm idea on why they would do it this or that way.

What im lookin for is a sophisticated, refined method (settings) for achieving highest (about) quality with this kind of encode. I dont need mediocre, i can do decent, my output is ok, but that aint enough.

Say FRAPS is used to record 1920x1200x24bit YUV and 960x600x24bit YUV (resize on the fly, and its dump quality (note: 600 is not devidable by 16)) at 60 FPS. This prog seems to be recording a compressed video at about 50-60% quality (size) of what a raw 8bit YUV should be.
MeGUI + x264 with Sharktooth's unrestricted 2pass insane profile (almost untouched).
Target weight is say, of 6000 kb/sec.

Im not gonna stress any settings, state any or all (yes the whole picture plz!) you feel like mentioning, avisynth, filters, resizing, x264 itself (hope some ppl are actually intrested in this kind of 'filming' other than i).

What do you think about that Sharktooth profile? Refinements for this task?
Is there anythin that might be significantly better than x264 (AVC itself) for this kind of source?
How is it possible to record in (uncompressed) 1920x1200 x30 bit at 60 FPS (more?) without noticable frame rate drop ingame?
BTW how long should an x minut file take to code under said curcumstances?

What are your thoughts about higher bitrate coupled with lower resolution vs higher res with fewer bits per pixel? Like 1280x800 at 6000kbps vs 1920x1200 at 9000kbps (125% more pixels, only 50% more bits). Would your opinion on this be different assuming a BD rip scenario for example? Why, if so? I aint slackin, ive been messin with this to death, but since im far from satisfied with the knowledge i got doin it, i'd like to hear your point of view on how/why etc.

Also is there a limit how many jobs one can queue up by one click encode in MeGUI? Its trippin all over if i do too many apearently (like more than 20 individual files). If no limit, any tips what might cause it?



Regards
Xan

Asmodian
21st December 2011, 03:06
How is it possible to record in (uncompressed) 1920x1200 x30 bit at 60 FPS (more?) without noticable frame rate drop ingame?

Sorry I don't have more to offer on your workflow but Fraps isn't capturing at 50-60% quality, it is using lossless compression. Don't bother trying to capture uncompressed video, it is just bigger not better. You can keep everything in RGB for maximum quality (I am not sure staying RGB is worth it, that is for you to test ;)).

Is final file size an issue? If not go crf instead of two pass.

gyth
21st December 2011, 05:08
How is it possible to record in (uncompressed) 1920x1200 x30 bit at 60 FPS (more?) without noticable frame rate drop ingame?
It would be more than 500MBps, so you'd need a 6+ drive RAID. ~2TB per hour.

I don't know too much about what you're looking for, but maybe this will help?
http://www.genadmission.com/vdubguide.html

mariush
21st December 2011, 16:09
Fraps will work best and with minimum CPU usage if you keep the color space YV12 (or NV12) as it's the internal format in the video card - so fraps simply does a copy instead of converting between color formats.

As Youtube will convert any video it gets into YV12, it's not really worth capturing with fraps to RGB24 and encoding with x264 with RGB24, only to have Youtube reconvert it to YV12.

30bit video means 10bit per color component, so 30 bits per pixel, but as computers work with bytes, it means the capturing software would use 32 bits or 4 bytes for each pixel.
So 1920 wide x 1200 tall x 4bytes per pixel x 60 frames a second = 552,960,000 or 527 MB/s

This could be sustained with 3 SSD drives in a RAID... but for example if you'd have 3 x 256 GB SSD drives, you'd have about 600 GB of disk space or about 20 minutes of capture time.

Well, that's raw 32 bits per pixel... but if you do the same tricks like converting RGB 24 to YV12, you could probably pack 2 pixels of 30 bits into 40 bits or something like that, so now you'd have 1920x1200 /2 * 5 bytes and you're already down to 329 MB/s. If you go further by packing four pixels (120 bits) into 60-80 bits .... you could go as low as 250 MB/s and might just sustain that with two regular SATA drives.

nm
21st December 2011, 16:28
Fraps will work best and with minimum CPU usage if you keep the color space YV12 (or NV12) as it's the internal format in the video card - so fraps simply does a copy instead of converting between color formats.

The internal format for game graphics is RGB32, but conversion to YV12 is cheap on the GPU and it reduces the amount of data to half compared to storing RGB24.

As Youtube will convert any video it gets into YV12, it's not really worth capturing with fraps to RGB24 and encoding with x264 with RGB24, only to have Youtube reconvert it to YV12.

I agree. Even if the distribution is through a custom website, most playback solutions require YV12 video.

mariush
21st December 2011, 18:39
You're correct.

We could also get into technicalities like texture compression algorithms game use to shove more textures into the video card, which basically lower the number of colors you actually see on the screen and so on.... there is a difference between RGB24 and YV12 when capturing games but in my opinion it's debatable if lowering the color information actually damages or affects in any way how the game is "felt" by the viewer.

But to get into the original question:


How would you go about making 'rips' of game footage from modern pc games. Id mainly like to hear the opinion of people who have experience in this area or at least have got a firm idea on why they would do it this or that way.


If I were to do something like this, I would probably configure the video card to clone the output to the second "monitor" and then connect a HD capture card on the hdmi port. The second computer would then be fast enough to compress to a nearly lossless h264 using x264... maybe using Virtualdub and the external encoder feature? Or maybe I could just leave the capture card use its hardware mpeg2 encoder or whatever it has to deliver a 40-80 mbps mpeg2 stream that I would later edit....

However, quality HDMI capture cards are expensive ... Unigraph ufg-06 is about 2000$ for example. Blackmagic cards are cheaper at less than 300$ but I remember they had some bugs or issues.

Asmodian
22nd December 2011, 05:38
Blackmagic cards are cheaper at less than 300$ but I remember they had some bugs or issues.

They don't do 1080p60, they max out at 1080p30 or 1080i60.

Zerofool
26th December 2011, 03:45
Hi, I'm a bit late for the party, and most of the things I wanted to say were already said by the people before me, so I'll just add just a few more things.

If you really care about quality, you can totally forget about YouTube. Besides the fact that it converts the colorspace to YV12 (4:2:0), TV range, and uses fast compression settings in combination with low bitrate, it also only supports up to 30fps, half of the frames from your 60fps "rips" will be discarded.

Also, use CRF instead of 2pass encoding, as suggested by Asmodian, that way you'll get persistent image quality, no matter the bitrate ;). For example, in one of my tests with a racing game, a 720p60 capture of a replay from the bumper-cam needed 18Mbps to look good enough to my eyes (CRF 20,5). So in your case, just experiment with values between 19 and 24, (lower value means better quality but higher overall bitrate) and see which value fits your needs/quality standards.

Now a few words on the capture cards:
Yes, the most of them can only receive up to 1080p30/1080i60, and also only in 4:2:0 and 4:2:2, no 4:4:4 full chroma unfortunately. The only cards I've seen that can do 1080p60 RGB (full chroma) captures are professional DVI capture cards, costing more than 1100$, I think there was a thread about them in the past. I'm not sure if high bit-depth, full chroma capture-cards even exist.

Talking about 4:4:4, in my opinion this is very important for video-game footage, mostly for a bit older games, without too much post-processing effects, and especially when no anti-aliasing is used. The difference is also clearly visible on areas with colored text (like chatboxes, logs, briefings, subtitles, etc.). So my advise is to capture your footage in lossless RGB, and use the 4:4:4 mode x264 now offers. You'll need to use avisynth 2.6 and convert the RGB clips to YV24, than feed that script to x264 (or any GUI you're using).

On the software capturing side, good alternative to FRAPS is "Dxtory", although not as fast, it has some unique, useful features, especially if you have many HDDs.
And another useful piece of software is ".kkapture", it's great for games/demos/benchmarks that have cutscenes/replay/demo features. It basically slows down the application to the needed speed (sometimes it's like slideshow), so that it can render the desired fps, no matter how much time it needs. So you can crank up the settings, resolution, SSAA and whatnot, and still get super smooth 60fps video ;). Unfortunately, it doesn't work with some games, and as I said, it's useless for realtime capturing. It's such a pity that very few games offer demo/replay saving/playback features these days :(. Although, most machinima guys are using mostly the source engine, which has the demo feature, as well as demo-rendering feature (similar to what .kkapture does) so just check the console commands for the games you intend to work with.

Just a few more suggestions, quality-wise. To retain good color gradients (in theory), you'd better use full (PC) range (0-255), instead of converting to limited (TV) range (16-235) (the conversion is done by default!). And also I'd suggest using the 10bit encoding mode, no matter that your source is only 8bit. The result of that will be smaller files (as well as better color gradients, and more accurate colors as a whole). The bad side (besides slower encoding) is that your clips will not be easily playable, the people watching them will have to know what they're doing (or at least you'll have to attach a link to a guide on how to setup their player/decoder to watch your clips), but I hope in time these settings will be more widely adopted, and I also hope that DXVA on both AMD and NVIDIA (future) cards will work with 4:4:4 10bit video (Hi444PP) sooner rather than later but I'm not very optimistic about that :).

So decide for yourself: Highest possible quality (probably somewhat of a placebo effect :)) [60fps, 4:4:4, 10bit, full range] > Easily playable [60fps, 4:2:0, 8bit, limited range] > Lower quality, widely available (through YouTube) [30fps, 4:2:0, 8bit, limited range]. Or some combination, like uploading "low-quality" version to Youtube, and providing download links for "ub3r-quality" version in the description/comments, or at the end of the YT video itself...

Good luck, I'll be happy to explain in more detail if you have any questions or even provide some screenshots/clips for comparison between 4:4:4 and 4:2:0 (although, you'll be better off experimenting by yourself with your own footage).