Hi, not sure if this is necessarily the best place to ask but I figure it's a good start.
I need some input from people who are very knowledgeable about encoding in general.
I stream / record analog "glitch art" and have a pretty involved chain that involves downscaling signals from my PC to go into an analog hardware chain and then it gets upscaled back to 1080p by a retrotink 5x and captured by an avermedia live gamer hd2.
I have a pretty decent understanding of encoder settings in general for "normal" streaming but when it comes to the most extreme edge cases in terms of noise and motion I'm having a hard time finding much documentation or discussion. Currently I just use a CBR with a constant bitrate of 6000 for streaming (twitch "limit") and local recordings are done at 10-12k. Encoding is done with NVENC on a 3080.
I guess my question is if you were hypothetically trying to encode pure static (worst case scenario?) is CBR with the highest bitrate your system/service can handle the best option to minimize artifacts with high noise/motion? I've researched most of the settings for NVENC and encoding modes but very few really talk about their particular impact on high noise and motion, most discussion, documentation and tutorials are really focused on "general quality" of fairly normal content instead of edge cases like mine. I haven't messed with CQP or VBR much but conceptually it seems like both would be worse in these kinds of scenarios.
I'm definitely trying to find things that will help the most when it comes to live streaming (with Twitch's incredibly low bitrate cap) since I prefer doing this video art stuff live just noodling. Recordings are mostly fine just going with a really high bitrate (rip storage space), but I only do them when I am working on something like a music video where I'm capturing and editing.
A few things I've already tried just for reference (feel free to skip this stuff since most of it is pretty basic troubleshooting)
Helped:
CBR - 6000Kbps
Keyframe Interval - 2
Preset - Max Quality
Profile - High
Look Ahead - On
Psycho Visual Tuning - On
Max B-Frames - 3
TLDR: What encoding mode / settings are best if you are trying to stream something very high noise/motion like static?
Thanks, sorry for the long post.
I need some input from people who are very knowledgeable about encoding in general.
I stream / record analog "glitch art" and have a pretty involved chain that involves downscaling signals from my PC to go into an analog hardware chain and then it gets upscaled back to 1080p by a retrotink 5x and captured by an avermedia live gamer hd2.
I have a pretty decent understanding of encoder settings in general for "normal" streaming but when it comes to the most extreme edge cases in terms of noise and motion I'm having a hard time finding much documentation or discussion. Currently I just use a CBR with a constant bitrate of 6000 for streaming (twitch "limit") and local recordings are done at 10-12k. Encoding is done with NVENC on a 3080.
I guess my question is if you were hypothetically trying to encode pure static (worst case scenario?) is CBR with the highest bitrate your system/service can handle the best option to minimize artifacts with high noise/motion? I've researched most of the settings for NVENC and encoding modes but very few really talk about their particular impact on high noise and motion, most discussion, documentation and tutorials are really focused on "general quality" of fairly normal content instead of edge cases like mine. I haven't messed with CQP or VBR much but conceptually it seems like both would be worse in these kinds of scenarios.
I'm definitely trying to find things that will help the most when it comes to live streaming (with Twitch's incredibly low bitrate cap) since I prefer doing this video art stuff live just noodling. Recordings are mostly fine just going with a really high bitrate (rip storage space), but I only do them when I am working on something like a music video where I'm capturing and editing.
A few things I've already tried just for reference (feel free to skip this stuff since most of it is pretty basic troubleshooting)
Helped:
- Streaming at 720p60 instead of the preferred 1080p60 - (this obviously has more impact when streaming with the low Twitch bitrate)
- Local recording at very high CBR bitrates - Not a solution for streaming, works for local recordings with large file size (which is mostly fine)
- Retrotink Post Processing aperture grille - My retrotink 5x has a bunch of post processing options to simulate various types of CRTs, PVMs and BVMs. I've found that a couple of the simulated CRT shadow masks and grilles really help encoding, while some make it much worse. I'm guessing this is because it's introducing a lot of stable pixels into the video that don't move and don't really change color (except for some simulated bloom).
- Dropping the FPS to 30 - This didn't make as much difference as I thought it would and imo it also ruins the look of a lot of the analog NTSC glitches which are happening at 60hz. I guess it could potentially be an option for the most extreme cases.
- Going above the Twitch bitrate limit - This did help, but I only tried this once or twice doing 1080p60 at 8k bitrate (i'm an affiliate btw not partner). It did look slightly better, and even though I had encoding resolution options while streaming I still had a lot of viewers that were having buffering issues even when set to low resolutions. I guess there is some sort of deal with Twitch's internal encoding for downscaling where having a high bitrate still causes issues with lower resolution encodes from their servers. Also I think Twitch would likely just throw errors and not push my stream through if I went much higher than 8k.
- CPU Encoding - I rely on my 3080's NVENC for pretty much all my stream encoding. I know that quality can technically be better on CPU encoding but I'm running an i7-8700k overclocked, and even though the software I use for my video stuff isn't particularly CPU heavy, this is just not a great CPU for encoding. I do have a 2nd PC that I can encode with but the CPU is even worse and struggles to encode 1080p60 on CPU even when being used as a dedicated capture PC. I'm planning on upgrading CPU's soon, but I don't know if going to CPU encoding would actually help.
- Messing with most NVENC settings - It's hard to do a like for like comparison with some of these. I haven't been able to find any info at all about how things like psychovisual tuning, look ahead, keyframe intervals and max b-frames specifically affect high noise and high motion content. For the most part everything I find about these is about general image quality and I've basically set everything to what most guides say is "highest quality".
CBR - 6000Kbps
Keyframe Interval - 2
Preset - Max Quality
Profile - High
Look Ahead - On
Psycho Visual Tuning - On
Max B-Frames - 3
TLDR: What encoding mode / settings are best if you are trying to stream something very high noise/motion like static?
Thanks, sorry for the long post.