Here is the story of how we’re improving the video encoder settings and customizing them by game. This effort is an on-going effort and will likely continue for years to come. There is no silver bullet here, just a series of small, incremental improvements that all combined can result in some legit gains.
The inspiration for this project came from work currently being done by Netflix and others.
Our thesis was that games are actually a lot more predictable in terms of the type of video content than movies. So if others are seeing serious gains on movies, we should be able to see just as good, if not better gains on gaming.
We spent a few months recruiting a team of video encoding engineers that have worked on this problem set before. And then we started to experiment. Over a period of 6 months, we ran about 20K tests. By focusing on a small set of games (LoL, Dota2, Destiny2, Fortnite, Pubg), we tested hundreds of combinations in the x264 encoder and measured the corresponding result in video quality using industry benchmarks like psnr and vmaf.
Eventually we automated this process & trained a machine learning system to encode video games. The hard part here was getting data sets to train these models. It’s not fully finished yet, but automation + machine learning is resulting in significant improvements. As I said before, there is no silver bullet here. Just many small improvements, that collectively add up.
Important to note here is we are not changing the encoder (say from x264 to Nvenc). For now, we only have optimized settings for x264. The NVENC and AMD optimizations are being generated and will be available soon.
Now if you’re from the industry, you’re probably skeptical. And you would be right. Industry standards are standards for a reason. They’ve been developed over many years by large groups of people and tested thoroughly. When we showed our results to folks at Twitch and other platforms, they were initially skeptical as well. But here is the key insight: x264 profiles (as used in OBS) were developed for a generalized use case; not for gaming and certainly not for a specific game. So by specializing the use case, there are gains to be made.
The gains (images and videos below) we found were the following:
- Weak CPUs — for users with weak CPUs and who are forced to use presets like ultrafast or superfast, the gains are immense.
- Low bit rate conditions — if your internet is weak and you’re streaming at or under 3k.
- If a user has a weak CPU and bit rate limitations, then the gains are incredible.
Eventually we’ll publish more research and data sets but for now, here are some results you can check out. The results are meaningful and conclusive — at least in our humble opinions! And this is certainly not the end — we will keep doing constant updates to further improve the results. What we’re sure about is that this approach works and there are meaningful gains to be had.
All these tests have the same CPU usage (encoded using x264). On the left is with our optimizations, and on the right is the ultrafast preset. Bitrate for both is 2.5K.
Destiny 2
High res video can be downloaded here. Use VLC to open.
Fortnite
High res video can be downloaded here. Use VLC to open.
League of Legends
High res video can be downloaded here. Use VLC to open.
PUBG
High res video can be downloaded here. Use VLC to open.