There are countless internet tutorials and guides that cover the basics of streaming, but I wanted to cover one of the harder things: Choosing your video resolution, frame rate, and bitrate.
If you search around, you'll find a lot of differing opinions and ideas about this subject. The reason why: it's difficult! There are no definite rules and many different factors that affect the outcome.
I want to provide you with what I've learned over the past 4 years of streaming that will (hopefully!) help you make a good decision for your stream.
Streaming is all about CPU power (not GPU power)
Rule #1: CPU performance is important!
You might think that capturing the video from your screen is the most resource-intensive part of streaming, but it actually isn't. Encoding is the expensive part.
The encoding process uses your CPU to convert (encode) the captured video information into a streaming video file format that is sent to Twitch.tv and subsequently broadcast to your viewers.
Example: Just sitting idle at my desktop with my stream running takes an entire CPU core (25%)!
Rule #2: Graphics card performance is not as important.
In most situations, you don't actually need a very fast video card to stream effectively.
Example: Running League of Legends takes about 25% of my graphics card. When I enable the stream, the usage goes up to 31%, meaning that the stream only uses about 6% of my GPU.
Conclusion: Encoding takes quite a lot of CPU power, therefore, you need to have a moderately fast CPU. Quad core recommended.
Selecting a video/audio bitrate
Before doing anything else, go to http://www.speedtest.net and test your internet connection speed.
First thing to consider: Your internet connection upload speed
The speed at which your internet connection can upload will determine what bitrate you can use.
I would recommend using no more than 75% of your upload bandwidth, because you want to leave some headroom so your online games have some bandwidth left over. You'll also want the headroom in case there are occasional internet hiccups or other people in your house also using the internet.
For example: If your internet upload speed is 4000kbps (4Mbps), I would recommend setting the video bitrate no higher than 3000kbps (3Mbps).
Also keep in mind that Twitch.TV places a maximum limit of 6000kbps (6Mbps) on video bitrate. Don't set your video bitrate higher than that!
Second thing to consider: Your viewers
Even though we're in 2017, not everyone has access to high speed internet. Some people also have data caps.
You want your stream to appeal to the largest audience possible, so you'll want to pick a sensible bitrate that delivers good quality without using tons of data.
The type of game you wish to stream will also affect the decision. Typically games with lots of motion (first-person shooters, for example) may benefit from a higher bitrate while those with less motion on screen and simpler graphics can get away with lower bitrates.
Here are some ballpark recommendations for video bitrates I would likely use.
Low action game (example: Hearthstone)
Video bitrate: 1000-2000kbps
Medium action game, MOBA (example: League of Legends, HotS)
Video bitrate: 2000-3500kbps
Fast action game, First-person shooter (example: CS:GO, Rocket League)
Video bitrate: 2500-5000kbps
Twitch.TV sets a maximum of 160kbps.
If your upload speed is sufficiently fast (>= 2000kbps), go ahead and use 160kbps. Otherwise, for more bandwidth-constrained situations, you can use 128kbps or even 96kbps.
Here's an example of where to set the bitrate in OBS.
The places to set the video and audio bitrates are highlighted in blue.
In this example, I selected a video bitrate of 2500kbps and an audio bitrate of 160 kbps.
Selecting a Video Resolution
First thing to consider: Your computer
Naturally, your stream will look the best if you use a video resolution that matches your screen resolution.
Unfortunately, the higher resolution you use, the more CPU will be required to encode.
A good test method to determine what your computer can handle:
- Open the game you intend to stream; load up a level so that the game is running at full tilt.
- Open up your streaming software, and do a test stream.
- Watch the CPU usage in Windows Task manager to make sure it isn't maxed out.
- Check to see if the game still runs smoothly.
- If you use streaming software like Open Broadcaster (OBS), look at the bottom of the window. There should be zero dropped frames.
If there are any dropped frames, you may need to lower the stream resolution.
Most of your viewers will likely have a 16:9 screen aspect ratio.
If you have a standard 1080p screen (1920x1080) or a UHD 2160p "4K" screen (3840x2160), I would recommend broadcasting in either 1920x1080 or 1280x720.
If you have a less common screen resolution, such as 1366x768, 1600x900, or 1680x1050, I would always recommend broadcasting in the native screen resolution, if your CPU will handle it.
Second thing to consider: Your viewers
Unless you are a Twitch.tv partner or a popular streamer (and Twitch decides to enable Automatic Transcoding on your stream), your viewers will only be able to watch your stream in the original resolution. Thus, you should strive to pick a good balance: high enough resolution that your viewers can see clear detail but not too high that it causes playback issues on older computers.
An increasing number of viewers should be able to play back 1920x1080 (1080p) video, but not everyone can yet. If you want to reach the largest audience possible, you may want to use a smaller resolution like 1280x720 (720p).
As mentioned before, if you have a less common screen resolution, such as 1366x768, 1600x900, or 1680x1050, I would always recommend broadcasting in the native screen resolution, if your CPU will handle it.
Selecting a Frame Rate
Choosing a frame rate goes hand-in-hand with video resolution.
The higher the frame rate, the more CPU will be required to encode the frames.
I would only recommend two frame rate choices: 30, or 60
30 frames/second is probably the best choice universally because it strikes an excellent balance between smoothness and required CPU power. Most standard monitors refresh at 60Hz, so 30 frames/sec represents exactly half that; every other frame will be captured for the stream.
60 frames/sec matches the native 60Hz refresh rate of most screens. It will deliver the smoothest stream experience, especially for fast-action FPS games, but also requires 2x as much CPU to encode, requires more bandwidth to maintain quality, and imposes a heavier burden on your viewers to play back smoothly.
When in doubt, use 30 frames/sec. Only switch to 60 frames/sec if you have a really powerful computer and a specific need for using the higher frame rate.
What about odd frame rates, like 45 frames/sec?
You can play around with these, but the results might not come out as you expect. At 45 frames/sec, you are skipping frames at an inconsistent rate, so the playback may appear less smooth and consistent. Of course, your mileage may vary. You may find some games look fine at odd frame rates.
Here's an example of where to set the video resolution and frame rate in OBS.
The resolution downscaling (if you want your stream to be a smaller resolution than your monitor resolution) is highlighted in purple.
The frame rate is highlighted in blue.
In this example, I have downscaled the stream resolution to 1280x720 (720p) and set the frame rate to 30 frames/sec.
Check your upload speed, don't use more than 75% of it for your stream.
Check your CPU usage while streaming, and make sure you aren't dropping frames.
1280x720 at 30 frames/sec with a bitrate of 2000-2500kbps is often a good choice for most. It strikes an excellent balance between quality and CPU cost.
If you have comments, questions, or suggestions, let me know!
If anything is unclear, please say so. I want to ensure this is accessible and clear to everyone.