So, as a lot of you guys know by now, I do enjoy doing live-streams when time permits me to. Lately, in fact, I’ve been making more of an effort to get back into doing them. For a while, I would do a live-stream maybe once a week, if that, and because of that my channel has been very slow-growing. Now, there’s nothing inherently wrong with that, and everyone has their own schedules with things to do, and I’m also not looking for fame (and yes, this is a run-on sentence!). Yet, I do want to grow things some, and thus I’ve gotten more into streaming lately.
Recently, though, I started noticing things were amiss with my stream settings in XSplit. When I was streaming Rockman 3, I noticed there were occasional lag spikes. At the time, I attributed this to Genesis-lag emulation from the emulator itself, but when I started streaming a couple other games, I noticed that this was present there too. Obviously, XSplit must have changed some things in terms of efficiency and threading within the program, but likely there were also some changes to how Twitch handles incoming video. Most likely, it is a complicated combination of these things that was leading to some snagging of the stream and my computer, despite me having a fantastic graphics card and a powerful 8-core CPU running non-overclocked at 4.0 GHz.
Now, I feel that I should point out here that there is a significant difference between what you need to do a local recording of a game to your disk drive versus what you need to stream video over the internet. For me, I can produce very high bit-rate video through local recordings which, when cleaned up and edited, will be full 1080p (or even experimentally 4K) video for viewers to enjoy on YouTube. This is accomplished through XSplit using the Video Codec Engine (H.264), which allows you to use your graphics card to dump frames immediately from the game processing right onto your drive, resulting in essentially no system lag. But, live-streaming currently requires use of your CPU rather than the GPU (using X.264), and this tends to be a bottle-neck because of all the other things that your system is doing in the background that you don’t even know about, let alone that most people don’t have suped-up processors. In addition to that, there is the fact that you need a solid upload speed to stream high-quality video, and regardless of the fact that your ISP may report that you have, say, 10 Mbps upload speeds (which you could verify via tests online), the only thing that matters is your connection between your computer and the Twitch ingest server you select.
Where things start to get complicated is when you consider the different settings within XSplit (or OBS, for that matter) and how they relate to your stream. For one, you have the actual “Max Bitrate” that you need to set. This bit-rate refers to the maximum amount of video data you will allow to stream to Twitch. First, you should run the set-up Wizard within XSplit itself and allow it to determine what the maximum sustained bit-rate is between you and the best server it selects is. With that in mind, you should use that bit-rate as a baseline and run some stream tests (at least a few minutes, to see how it runs in the longer term) to determine if there is any lag on the end product or on your system itself. You should make sure to not exceed the bit-rate reported as the maximum during the test (e.g. if it says you can do 1.5Mbps, you should keep within that range). Keep in mind, too, that you have audio to buffer as well, so if you are using 128kbps of audio, and you want a maximum of 2000kbps sent to the server, you should set your Max Bit-Rate for video to 1872kbps.
For the VBV Buffer, keep it at whatever XSplit or OBS (if applicable) sets it to, which is usually matching your maximum bit-rate setting. Some people may tell you to raise it to twice the bit-rate, but this is generally unnecessary, though you can experiment with it if you wish and see if it helps your stream quality any.
Now, what about these CPU Presets the application talks about…What do they do?
In short, since the stream is using your CPU to do the X.264 encoding, these settings have to do with how much of the video is compressed during the encoding process. The simplified answer is that the “slower” you set this, the more the CPU will work to compress the video, allowing you to send more data with a lower bit-rate to your viewers on Twitch. This has several advantages, such as allowing you to stream at a lower bit-rate and still achieve an HD (or at least high-quality) video for your viewers and also it allows the viewers to watch the stream without much “snagging” if they don’t have a great network connection. However, the trade-off here is that it taxes your CPU a lot more, especially if you lower it much below the “Faster” preset. XSplit itself actually recommends that you leave it on “Veryfast” and only change it if you just want to experiment with it and have the overhead to do so. Generally, I would recommend you leave it at the default, and if your CPU still gets very stressed, you can lower it to “Superfast” (or “Ultrafast”) if you have those options or you can lower the bit-rate or resolution some. Keep in mind, too, that the “faster” this setting goes, the more uncompressed the data is, so you’ll have a lower quality stream for the bitrate when you do that.
Other settings I’ve discovered that should be taken into account include whether or not to allow Windows Aero to be enabled and whether or not (in XSplit) to make use of their experimental “Optimized Renderer.” Ultimately, in my experience, you should not tell the streaming application to disable Aero as this can often have adverse side-effects for certain games (such as the game glitching in terms of display within the stream). Some streamers say that if you do a lot of desktop or window capturing you should disable Aero, but this seems to be a personal preference that also depends on your system set-up, so keep it enabled at the start and then disable it if you find you are having problems. As to “Optimized Renderer,” some say to disable it, but in my experience keeping this on actually makes the stream run better and look much better, so I suggest playing around with it activated and see what you think for yourself.
There really is no direct answer as to what is best and what will work for you. You should experiment with the settings yourself and find out what works best for your system. Still, I will share my current set-up so that you can try these settings and see if you like them. Keep in mind that here, I stream in 1280×720 because I find that with a solid bit-rate this looks better than streaming 1080p at a lower bit-rate than recommended. Also, this creates high-quality video while not stressing the end-user’s viewing experience or limiting your own computer to low framerates and system lag:
OUTPUT RESOLUTION: 1280X720 (HD)
FRAME-RATE: 30 FPS
MAX VIDEO BIT-RATE: 1808 kbps
VBV BUFFER: 1808 kbps
AUDIO BIT-RATE: 192 kbps
CPU PRESET: Veryfast
OPTIMIZED RENDERER: YES
DISABLE WINDOWS AERO: NO
Well, there you go! I hope this is of some help to those of you having issues or wanting to get into streaming for the first time! 🙂