Streaming in HD (Quick Guide!)

mario-gaming

Not long ago, I did an article about some of the basics of live-streaming and some of my experiences in regards to that. I talked about bit rate, bandwidth, and other things that a potential streamer (or even recorder) should be aware and take notice of. Well, today I am here to expand on a bit of that and talk about some other things I’ve learned, as well as provide a bit more advice in terms of potential settings and things that can be used in both local video recordings as well as livestreams.

First, let’s talk about some of your quick options for doing locally-recorded videos that you’ll toss up on YouTube at a later date. For this discussion, I’ll be talking specifically about using either XSplit or Open Broadcaster for this purpose, though please keep in mind that there are other great options out there, like FRAPS, Bandicam, and D3DGear, to name just a few. But, when it comes to making a local video, there are a few things you’ll want to take into account, such as the overall power of your processor (if using X.264, which is entirely CPU-based) or your graphics card (if using a hardware encoding option), the availability of decent drives (faster HDDs or SDDs are best) that are separate from your OS or the drive your game is being hosted on, and what type of stuff you want to record.

A lot of programs now encode and compress video using X.264, and because of this, the CPU load will increase quite a bit when you’re recording (or streaming) video, though this is heavily dependent on the settings you use. Yet, if you factor in that quite a bit of games are also CPU-heavy, you can quickly reach a bottleneck whereby the CPU will be constantly spiking to 97-100% and throttling back your game until this resolves, resulting in lag-spikes and therefore periodically slow or choppy gameplay. Another, separate issue is post-production lag that’s noticeable in a video due to dropped frames, and this is usually caused by the video encoding settings being too high for the selected hard drive to keep up with without dropping frames here and there.

In both cases, you need to tailor your recording to the set-up that you have. Getting a separate drive, as discussed earlier, is one thing you should definitely do, yet beyond that, you’ll simply need to play with the settings. In XSplit, I personally set the software to use “Video Codec Engine (VCE)” as my encoding option and set the quality to “Standard,” since I found that quality level to produce good video with little-to-no performance impact while recording, and doing so also kept the file size reasonable, which is another concern. If you’re using X.264 (if your card doesn’t support hardware encoding or if you’re using OBS, which presently only has experimental support for hardware setups), you should definitely keep your encoding profile to “Veryfast” (discussed later) and probably keep the quality to “Standard” (or around 6-8, if using numeric options) in order to keep the file size reasonable. If you want to experiment with using constant bit rate for a local recording, I’d try setting it at around 5,000 kbps for most programs at 1280×720 and then upping it to 8,000-10,000 if producing content at 1920×1080. If you experience issues with this, you can lower the frame rate or back down the resolution (and therefore the bit rate) to keep the video running smooth and clean.

Here are some options that may work for you in terms of settings (adjust based on the program you are using):

RESOLUTION: 1920X1080
QUALITY/BIT RATE: 6-8 or 8,000-10,000 kbps
FRAME RATE: 30 FPS
AUDIO: 128 kbps

———-

RESOLUTION: 1280×720
QUALITY/BIT RATE: 6-8 or 5,000 kbps
FRAME RATE: 30 FPS (you can experiment with 60 FPS if you wish)
AUDIO: 128 kbps

———-

RESOLUTION: 854×480
QUALITY: 8-10 or 2,500-3,000 kbps
FRAME RATE: 30 or 60 FPS
AUDIO: 128 kbps

Note that if you’re using a hardware encoder and you get the option, select “Standard” as a good quality control, no matter what the resolution.

Streaming to Twitch is a completely different animal because of the fact that Twitch has its own settings it requires for the optimal streaming and viewing experience. For starters, no matter what resolution you’re using, Twitch really wants all streamers to keep their broadcast below the 3,500 kbps threshold. There are several reasons for this, but ultimately it has to do with their own bandwidth and the fact that if the stream bitrate is way too high, the end-viewer may experience a lot of performance issues, lag spikes, and dropped frames from the video, or the stream will freeze and buffer constantly. Twitch also insists that you use a Constant Bitrate setting as opposed to Variable Bitrate (e.g. where you would set a quality level and the program would determine what the bitrate needed to be based on what was on screen), which ultimately makes the stream more stable and consistent.

Here are some settings you should set once and then leave alone in regards to live streaming:

USE CONSTANT BITRATE
USE STRICT CBR
KEY-FRAME INTERVAL: 2
ENCODING PROFILE: Main

Once you have those settings hard-wired into your broadcasting program, it’s up to you to figure out what your system is capable of streaming at (using your CPU, since anything other than X.264 for live-stream encoding is very experimental at this point, except maybe in XSplit GameCaster) and what your bandwidth can actually handle. Using an online program to figure out your actual bandwidth is great, but you need to determine (through a test with XSplit or OBS) what your actual throughput to the Twitch servers is. In other words, if your actual bandwidth can sustain 10 Mbps upload, but your connection to Twitch is limited to about 2.5Mbps, there’s simply no reason to attempt to stream beyond that upper limit, and that limit itself should determine for you what resolution you should be streaming at.

Earlier I mentioned your CPU Profile, and you’ll see that there are options called “Veryfast,” “Superfast,” “Fast,” “Medium,” etc. The short version of what this means is that the faster settings spend less time encoding and compressing the video, and therefore to maintain an equivalent level of quality to a “slower” profile, they need to have more bandwidth to work with. The faster settings also use less of your CPU because you are spending less time trying to compress the video. On the other hand, the slower profiles spend more time compressing the video, but this requires more CPU to do. For the most part, you should likely leave this setting on the default, which tends to be “Veryfast.” However, if you have major problems, even after lowering the bit rate and resolution quite far, you can tailor it back to something like “Superfast” or “Ultrafast” to see how that looks, though most likely you will have a rather pixelated and artifacty stream to deal with. On the other hand, if you have a more limited bandwidth, yet want to attempt higher quality streams and you have the CPU overhead to do it, you can bump it to “Faster” or “Fast,” which will produce higher quality video that’s smaller in bandwidth, but take a lot more processing power to get out there.

In general, assuming you leave the previous setting on “Veryfast,” here are some resolutions, frame rates, and bit rates for you to consider using:

RESOLUTION: 1920×1080
FRAME RATE: 30 FPS
MAX BIT RATE: 3,300 kbps
VBV BUFFER: 3,300 kbps
AUDIO BIT RATE: 128 kbps

———-

RESOLUTION: 1280×720
FRAME RATE: 60 FPS
MAX BIT RATE: 3,300 kbps
VBV BUFFER: 3,300 kbps
AUDIO BIT RATE: 128 kbps

———-

RESOLUTION: 1280×720
FRAME RATE: 30 FPS
MAX BIT RATE: 1,500-2,000 kbps
VBV BUFFER: 1,500-2000 kbps
AUDIO BIT RATE: 128 kbps

———–

RESOLUTION: 854×480
FRAME RATE: 30 FPS
MAX BIT RATE: 750-1,000 kbps
AUDIO BIT RATE: 128 kbps

In OBS, rather than selecting your source resolution, you basically pick a resolution scale. If you want to keep the quality fairly high, select one of the better filters that you can choose from. In regards to 30 FPS vs. 60 FPS, the general rule is that you should probably never attempt streaming at 1080p60, or you may experience issues (not to mention that 60 FPS requires twice the bit rate to maintain equal quality, which means you reach a ceiling at 30 FPS and have no overhead anyway without a huge quality impact). 720p60 might be pretty good for fast-motion, high-quality games, whereas 1080p30 would be more suited to “normal” or “slower” material. But, at the end of the day, it comes down to your personal preference. Personally, I think 1080p at 30 FPS is just fine for most anything, but you can mess with 60 FPS if you want.

So, there we have it! This is by no means exhaustive, but I do hope it serves some value to you!

Tell us what you think!

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.