Streaming Guide

From ShackWiki
Jump to: navigation, search

This page is meant to aid both aspiring and established Shacknews streamers by compiling useful information, tools, and links into one place.


What Should I Download?

Open Broadcaster Software is one of the most popular applications for streaming. It's free, open-source, regularly updated, and has a very active support community. At this time OBS Classic is no longer being developed and a completely rewritten, multi-platform version dubbed OBS Studio has taken its place. A feature comparison of the two programs is available here.


XSplit Broadcaster and XSplit Gamecaster are commercial streaming applications for Windows developed by SplitMediaLabs. The free versions are very feature-limited.


An exhaustive guide for using Dxtory is also available courtesy of JT. Please note that unless you need a Dxtory-specific feature, it is less efficient than the game capture methods provided by OBS.*

*Technical shenanigans: Dxtory downloads the framebuffer to system RAM, while OBS does all of its scene compositing on the GPU. Using Dxtory as a video capture device in OBS means you're making Dxtory download the framebuffer of the game to system RAM and send it to OBS via DirectShow, where it's then uploaded right back to video RAM and rendered to the scene. Using OBS by itself is more efficient because the captured data never leaves the GPU; instead, it gets sent directly to OBS as a texture.




Useful Guides


Visit the OBS Studio guides section for more.


Handy Tools

  • TwitchTest by R1CH - Find the best Twitch.tv ingest servers for your current location and connection
  • Chatty by tduva - Manage your Twitch.tv chat, game name, stream title, ads and more
  • Stream Analyzer - Check the quality and stability of a live Twitch.tv stream
  • Multi-streaming with Restream.io


Visit the OBS tools section for more.


Night's projects over at NightDev are a mix of tools and plugins and are also quite popular with streamers.




Source Types

There are three main source types you'll use to get game content into your OBS scene. Yes there are others, but these are the big three. Pros and cons are discussed briefly below.


Game Capture

Pros: The fastest and most efficient capture method. Hooks directly into DirectX 9/10/11/12 and OpenGL games. Works on games running in true full screen mode. This should be your first choice for capturing a game.
Cons: Probably won't work on games not using 3D acceleration. Some aggressive anti-cheat measures will block it. Occasionally triggers false positives in bad antivirus software like Norton.

Window Capture

Pros: Doesn't care which API a game uses. Not blocked by aggressive anti-cheat measures. Ignores other windows that are dragged on top of it (Aero must be enabled in Window Vista/7).
Cons: Probably won't work on games running in true full screen mode. Occasionally fails to capture a window's contents properly. Performs horribly when Aero is disabled in Windows Vista/7.

Monitor Capture

Pros: Simply and effectively captures everything on your monitor. Doesn't care what API a game uses. Not blocked by aggressive anti-cheat measures. Performs like a champ in Windows 8/8.1/10.
Cons: Probably won't work on games running in dedicated full screen mode unless you're using Windows 10. Performs horribly when Aero is enabled in Windows Vista/7, and only slightly less horribly when it's disabled.




Alternate Encoding Options

Most modern streaming programs use the very excellent x264 encoder for video compression. The major downside to x264 is that as a software encoder it makes your CPU do all of the work. Fortunately we're starting to see some decent hardware encoding alternatives surface, allowing you to shift the encoding burden away from your CPU. Intel's Quick Sync utilizes the iGPU on modern processors that's typically ignored by gamers. NVIDIA's NVENC and AMD's VCE both utilize specialized hardware on their GPUs.

However, these alternatives aren't as efficient and flexible as x264. They're great backup solutions if your system isn't up to the task of streaming a particularly demanding game, or if you want to make a high resolution, high quality local recording, but x264 is still recommended for streaming if you've got the spare horsepower to use it.




Stream Theory

Video encoding can be pretty demanding even on boss systems. Good settings are all about balancing your limited resources and accommodating the type of game content you’ll be streaming. Remember that:

  • You have a limited amount of CPU and GPU power with which to both run your game and encode your video in real time. Maxing out either will give poor results.
  • You have a limited amount of upload bandwidth with which to transfer the compressed video to your stream provider.
  • Your viewers have a limited amount of download bandwidth with which to watch your stream, not just because of their own connection limits but also because of how fast your stream provider can get the data to them.


Rate Control and Maximum Bitrate

Enable the CBR (Constant Bit Rate) option in the streaming program you choose. While VBR (Variable Bit Rate) encoding has a lot of potential efficiency and quality benefits, it simply isn’t well-suited to live streaming. A consistent data transfer rate is easier on both the stream provider and your viewers compared to one that fluctuates wildly.

Even if you have more upload bandwidth available, consider using 3000 Kbps or less when streaming to Twitch to reduce the number of viewers that experience playback stuttering or buffering. If you find that things look bad at 3000 Kbps it's usually a better idea to downscale the stream's resolution or lower its frame rate than to increase its maximum bitrate. Twitch's maximum bitrate for non-partnered streams is 3500 Kbps.

If your upload bandwidth is limited, keep in mind that the maximum bitrate you configure isn’t a hard cap and your stream will fluctuate a bit beyond the value you set. For example, if your ISP limits your upload to 2000 Kbps, don’t set that as your maximum bitrate! A value of 1500 Kbps would work better as it leaves some spare bandwidth for the stream to fluctuate, as well as for other programs like the game you’re playing.


Resolution and Frame Rate

Choosing an appropriate resolution and frame rate involves several factors; how powerful your CPU is, how much CPU power your game is consuming, what the game content looks like, and how much upload bandwidth is available should all be taken into consideration. There is no “one size fits all” setting here and you may eventually want to configure multiple profiles for different games or content types.

Streaming at higher resolutions and frame rates requires more CPU power to encode the video and a higher bitrate to make that encoded video look decent. Games with high levels of detail and/or motion (Battlefield 1) also require more juice, while games with lower levels detail and/or motion (Stardew Valley) require less. Some games are just plain CPU hogs and might force you to lower your stream resolution/frame rate or a hardware encoder to get acceptable performance.

Generally your stream resolution should also match the source content's aspect ratio. If your game is running at 1680x1050, be sure to choose a 16:10 streaming resolution for it. OBS handles this through the Base/Canvas Resolution and Downscale Resolution options, so for this example you would set the Base Resolution to 1680x1050 and the Downscale box will be automatically populated with lower 16:10 resolutions. Don’t worry about pillarboxing (black bars) in the video player as those are added by the player itself.

Important: 1080p is not the magic solution for great stream quality. More than twice as many pixels per frame compared to 720p means that it requires more CPU power to encode and a higher bitrate to look good. Even if your PC and internet connection are up to the task it’s still best reserved for streaming relatively low motion content or making local recordings. At this point in time 1080p at 60 FPS should be avoided unless you're streaming to a provider like YouTube with generous bandwidth allowances and an HTML5 video player.