OBS Quality Preset Deep Dive
Published:
by:
Jack 'NavJack27' Mangano
Estimated reading time: ~6 minutes
Intro
Please throw some money my way either directly VIA PayPal or with my Ko-Fi maybe don’t do my Patreon until I fully set it up.
AMD recently stunned the entire world with this benchmark slide at E3
Isn’t it incredible! The 3900x can stream using such amazing quality that it leaves the 9900k in the dust! Anyone with half a brain knows that the Slow Quality Preset is the pinnacle of encoding technology. Or is it? Is using Slow Quality Preset worth all the related CPU overhead? Is it just something no one has been using because we weren’t able to use it until now? I decided to find out for myself and present the data to you so you can make an educated decision. I will be focusing on quality and not anything else, there won’t be an FPS graph or anything like that.
Testing Methodology
The first thing I did was pick a game that had relatively contrasting colors and fast movement. RAGE 2 seems okay for this. Then I used ShadowPlay to record a 1280x720p60fps video using the highest bitrate possible. Once I got that footage captured, I used the latest version of OBS at the time of writing this (23.2.1) and added the VLC Video source to the scene and loaded up that video I just captured. I adjusted the settings in OBS to not loop the video. Then I adjusted the CPU x264 encoder settings in OBS to use the Twitch.TV maximum of 6mbps. The only other settings that were changed were the presets for each run of the test. Then I adjusted the framerate to 30fps and did it again with each preset.
I used a python script plotbitrate to plot out a graph of each video’s bitrate over time. Lastly, I used a MATLAB script I wrote to compare the image quality metrics of each OBS encoding to the ShadowPlay source.
The reason for the 1280x720 resolution is simple, we’re limited on bitrate and we want a sharp picture for streaming. Making the frame smaller allows the encoder to use those bits more wisely. The reason for testing 60fps and 30fps is also simple, the lower the frame rate the more bits can be distributed to each individual frame.
Oh yeah, all tests were run on my main rig.
So, let’s get on to the results!
Encoding Bitrate Histograms - 720p60 6mbps
Bitrate Result - 720p60 - Veryfast
Bitrate Result - 720p60 - Faster
Bitrate Result - 720p60 - Fast
Bitrate Result - 720p60 - Medium
Bitrate Result - 720p60 - Slow
Bitrate Result - 720p60 – Thoughts
There is barely a difference between the presets in how the encoder can distribute the fixed bitrate budget of 6mbps. But this is just a graph of the bitrates, maybe further on we’ll see a visual improvement.
Encoding Bitrate Histograms - 720p30 6mbps
Bitrate Result - 720p30 - Veryfast
Bitrate Result - 720p30 - Faster
Bitrate Result - 720p30 - Fast
Bitrate Result - 720p30 - Medium
Bitrate Result - 720p30 - Slow
Bitrate Result - 720p30 – Thoughts
Definitely looks like it was able to distribute more bits per frame as I thought. Maybe this translates to higher quality?
Image Quality Metric Results - 720p60 6mbps
Quality Result - 720p60 - Veryfast
The Peak-SNR value is: 36.0747dB higher is better
The SNR value is: 25.5985dB higher is better
The SSIM value is: 0.9868 higher is better
The MSE value is: 16.0550 lower is better
Quality Result - 720p60 - Faster
The Peak-SNR value is: 36.4475dB higher is better
The SNR value is: 25.9713dB higher is better
The SSIM value is: 0.9874 higher is better
The MSE value is: 14.7343 lower is better
Quality Result - 720p60 - Fast
The Peak-SNR value is: 36.6758dB higher is better
The SNR value is: 26.1995dB higher is better
The SSIM value is: 0.9881 higher is better
The MSE value is: 13.9799 lower is better
Quality Result - 720p60 - Medium
The Peak-SNR value is: 36.6529dB higher is better
The SNR value is: 26.1767dB higher is better
The SSIM value is: 0.9882 higher is better
The MSE value is: 14.0536 lower is better
Quality Result - 720p60 - Slow
The Peak-SNR value is: 36.5311dB higher is better
The SNR value is: 26.0548dB higher is better
The SSIM value is: 0.9880 higher is better
The MSE value is: 14.4535 lower is better
Image Quality Metric Results - 720p30 6mbps
Quality Result - 720p30 - Veryfast
The Peak-SNR value is: 36.9089dB higher is better
The SNR value is: 26.4327dB higher is better
The SSIM value is: 0.9885 higher is better
The MSE value is: 13.2491 lower is better
Quality Result - 720p30 - Faster
The Peak-SNR value is: 37.0594dB higher is better
The SNR value is: 26.5832dB higher is better
The SSIM value is: 0.9890 higher is better
The MSE value is: 12.7980 lower is better
Quality Result - 720p30 - Fast
The Peak-SNR value is: 37.1740dB higher is better
The SNR value is: 26.6978dB higher is better
The SSIM value is: 0.9895 higher is better
The MSE value is: 12.4647 lower is better
Quality Result - 720p30 - Medium
The Peak-SNR value is: 37.2511dB higher is better
The SNR value is: 26.7749dB higher is better
The SSIM value is: 0.9897 higher is better
The MSE value is: 12.2453 lower is better
Quality Result - 720p30 - Slow
The Peak-SNR value is: 37.2965dB higher is better
The SNR value is: 26.8202dB higher is better
The SSIM value is: 0.9899 higher is better
The MSE value is: 12.1181 lower is better
Thoughts and Conclusions
While the Slow Quality preset looks better in both the 60 and the 30 fps videos it is up to you if it is worth the CPU strain. This would look even more pronounced at 1080p as AMD did the test. While the bitrate might not change over time as much due to the CBR nature of streaming settings the higher quality presets do allow for more accurate decision of where to apply the different frame types and the allotment of bitrate to each. I personally believe that AMD was wrong in showing this benchmark in such a way I think they might have fared better doing something like what I did here. Don’t smear the competition saying it can’t stream at 1080p60 Slow. Show the GAMER audience why they should think about using the Slow Quality preset. The quality is noticeable to the human eye but not really to the image quality metric analysis.