this post was submitted on 26 Oct 2024
42 points (97.7% liked)
Asklemmy
44115 readers
674 users here now
A loosely moderated place to ask open-ended questions
Search asklemmy ๐
If your post meets the following criteria, it's welcome here!
- Open-ended question
- Not offensive: at this point, we do not have the bandwidth to moderate overtly political discussions. Assume best intent and be excellent to each other.
- Not regarding using or support for Lemmy: context, see the list of support communities and tools for finding communities below
- Not ad nauseam inducing: please make sure it is a question that would be new to most members
- An actual topic of discussion
Looking for support?
Looking for a community?
- Lemmyverse: community search
- sub.rehab: maps old subreddits to fediverse options, marks official as such
- [email protected]: a community for finding communities
~Icon~ ~by~ ~@Double_[email protected]~
founded 5 years ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
Because it's just for personal archival, I would recommend recording in super high bitrate 264 or 265 depending on what your card can do in real time, then compressing that file later using either av1 or 265, depending on which works better for the content.
If you're playing in 1440p165, then you should record that to start although if it's an option I would play and record at 1080p120. 1440 is a bit of an odd duck resolution that some stuff doesn't really like, but it's getting better all the time so it's not a huge deal. More important is 120fps because if you decide to go down to 60 or even 30fps they split evenly, which is important since it means the extra frames just get thrown out. There's no 82.5 frame so it either has to blend two together or pick one that's at the wrong time, and neither looks good.
Record in OBS using like, 25-40mbps in whatever your graphics card can do realtime, with all the audio tracks in something lossless like FLAC. High enough it might as well be uncompressed.
Once you have your gameplay recording from OBS, use either Handbrake or FFMPEG to convert it to your long term storage format. Since this is such a big project I would make some samples using cheats to get an idea what the bullet-hell-iest parts will look like, then try a few different handbrake or ffmpeg settings, and see what gives you the tradeoff of file size and quality that you like. It'll also give you a ballpark idea about how much long term storage you'll need.
Non-realtime encoding like ffmpeg and Handbrake is much more efficient than realtime done by your graphics card, like on the order of like half the file size for the same quality - that's why you want the two step process. It also allows you to play in 120fps for that responsiveness, but watch at 60 or even 30fps to save some file size.
When you set up handbrake, you'll have a few settings to play with and make samples from - encoder, quality level, speed, fps, and rescaling.
Encoder is probably the most important. Use either x265 or SVT-AV1. In my experience, they're close in terms of efficiency, but AV1 pulls ahead in certain situations. AV1 is more efficient about large static sections and when it breaks up it just looks blurry. 265 is better at retaining texture, but when it fails its gross digital blocks. 265 is faster than AV1, but when you push AV1 and it takes 1000 years it does a better job. Basically, run a lot of tests and then decide.
Scaling is where you go from 1440 to 1080 and is probably the least important for file size. I honestly wouldn't bother with it, but you can try. Like I said, technically some TVs don't like 1440, and everything supports 1080, but I wouldn't worry about it too much.
FPS I have the least experience with. My guess is that going do something lower is going to save you some size, but its really going to depend on the codec and the content.
Quality level is the most important setting - just set it to what you think is watchable. It doesn't use a bitrate, it adjusts the bitrate to get a constant quality level, so it's much more efficient. It's important to note that they aren't exactly the same at every speed setting, so be careful.
Lastly is the speed. 265 goes from very fast to very slow, and AV1 goes from 9 (fast) to 0 (stupid slow). Personally I use slow or very slow for 265 and about 4 for AV1, but if you have a lot of video to crunch through you might want to crank that up a bit.
For audio use OPUS. 96 is the default "bitrate" and I find it to be enough. Some players don't like it but if you're thinking about using AV1, anything that would support AV1 supports opus.
The main thing will just be doing a bunch of video encode samples and finding the settings and workflow that's right for you.
I am doing that since I made that post, making educated guesses at AV1 configs. Every single one of my AV1 encoded files turned out larger than the original. I recorded the original with 15mbps, and that seems enough (as I did the cheating my self a teaser of lategame thing).
I set the OBS's recording to 60fps, hopefully that way I dodge the weird half frames, that you are talking about.
I set the quality RF to 30 in HandBreak, and as you can see it almost doubled the filesize. how?
Can you post a screenshot of your Handbrake settings? You should definitely be getting better efficiency than that.
"15k hard" is the control h264 file rest doesn't matter I think
but in the meantime I did some encoding to h265, and I managed to get a smaller file size however the quality sucked, so I lowered the crf and it's larger again.
In the third screenshot, preset is on 7, change that to 4. That's the speed setting - 7 is trying to do it in close to real time, 4 will take much longer but be much more efficient.
it became 504 MiB, the original was 306.
while it was doing that I tried compressing a 50Mbps clip. And I think you're gut feeling will be right, I managed to compress it with AV1 rf47 it got reduced to a 4th of it's size and it looks almost the same as the 15Mbps one. However, sadly I saw how good the raw 50Mbps one looks, so I don't think I'll go that low. Finding the sweet spot will take forever! Also isn't 50Mbps too high, the video looks amazing, but isn't that abnormally high?
If you're seeing any artifacts in the original video, you probably need to re-record in a higher bitrate. It needs to look identical to uncompressed. Your later encodes will be trying to encode all the artifacts in the original video, which could be why the file sizes keep getting bigger - you're giving it noisier video than the original.
50mbps for recording as an intermediate like that is well within the realm of normal. You can try having obs record in 264 with a quality setting instead of a bitrate setting, which can save space when things are more static - something like cq 6 or lower can do pretty well.
Unfortunately, yeah finding the sweet spot does take forever. One thing I would recommend is once you have an idea where you want to land, try a few much longer videos and see what the differences are. Slower paced sections might compress much better than the fast action stuff in one codec or another. Again it's all kind of a balancing act on where you want to be.
Oh that's a great tip, I set it to "indistinguishable" and it 3x-ed the (almost) same gameplay clip, but it does look the best so far. But if what you are saying is true, with the encoding the previous encoder's artifacts, doesn't that mean I should record in lossless?
I did try a video of my desktop doing almost nothing, and AV1 rf23 compressed it 17x. That's nice. I'll now try re-coding this "indistinguishable" h264 preset video and to record a lossless one and to re-code that as well.
From a technical level you should use something lossless in this situation, but it really quickly becomes impractical. Actually lossless 1080p60 is going to be something like 500mbps, so if you're playing for an hour I hope you have a spare 2tb drive laying around. The artifacts in really high bitrate compressed video are so minimal that they basically don't matter. Often codecs do noise removal first thing so whatever minor artifacts still exist will get smeared over by that anyway.
Also when you are testing make sure there's some movement in the video. AV1 especially has modes for presentations and things that basically make a PowerPoint, so sizes might be unrealistic if you're just recording your desktop. I don't think that gets enabled in handbrake but it's been a while since I looked.
I settled for this:
ffmpeg -i "$file" -map 0:0 -c:v libsvtav1 -preset 3 -crf 23 -maxrate 85M -map 0:a -c:a copy "${file%.mp4}-av1.mp4" -y
The files is still very large, but you can't notice any artifacts or any blurry parts, I transcode it with 7fps.