Support Center Welcome, Guest Login

Broadcast Requirements

Last Updated: Jan 25, 2016 11:34AM PST
Here at Twitch, we’ve experienced a massive surge in demand for viewing on non-web devices; such as game consoles, tablets, and mobile phones. We want your viewers to be able to watch in all these places, so we’ve made changes to our infrastructure to service this growth.

We require the following settings to be compatible with broadcasting to our site:
Video Requirements
  • Codec: H.264 (x264)
  • Mode: Strict CBR
  • Keyframe Interval: 2 seconds
  • Maximum bitrate of 3500

Audio Requirements
  • Codec: AAC-LC or MP3, Stereo or Mono
  • Maximum bit rate: 160 kbps (AAC), 128 kbps (MP3)
  • Sampling frequency: any (AAC), 44.1 KHz (MP3)

These configurations are already supported and active by default in the latest versions of our most popular broadcast software options.

To help you determine whether your stream settings are compatible, there is an ingest feedback feature on your Broadcast Dashboard.

Note: If you’re running an older version of your broadcasting software, you may have to make a few adjustments. For step-by-step instructions, please see the applicable Knowledge Base articles. On your Twitch dashboard, your broadcast will be rated on its Stream Configuration Quality. Here are the three ratings and what they mean to you:
​For Partners

Excellent (All video requirements are met)
  • Viewers will have access to the highest quality stream (a non-transcoded passthrough of your broadcast)
  • Your broadcast will be available on mobile and consoles

Acceptable (Just enough video requirements are met)
  • Viewers will only see your resolution options (no direct passthrough to viewer)
  • Your broadcast will be available on mobile and consoles

Incompatible (Important settings are not met)
  • We reserve the right to not continue ingesting your stream, as it can cause severe issues with our video systems.
For Non-Partners

Excellent (All video requirements are met)
  • Viewers will have access to the highest quality stream (a non-transcoded passthrough of your broadcast)
  • Your broadcast will be available on mobile and consoles

Acceptable (Just enough video requirements are met)
  • Viewers will have access to a non-transcoded passthrough of your broadcast
  • Your broadcast will NOT be available on mobile and consoles

Incompatible (Important settings are not met)
  • Your stream will continue to be available on the website until August 31st. Starting September 1st, your ingest will be rejected.

If you’re given Acceptable or Incompatible, the dashboard will explain why and link to help as well as display errors which can help you become “Excellent”.

Here are the four errors you can receive and quick ways to fix them.

Video codec must be set to h.264 (it is currently "{codec}" or "unknown")
  • Wait about 30 seconds and refresh to ensure that we have loaded your settings.
  • Set your video codec to h.264 (x264) (AVC)
  • If you see this, you’re probably running a very strange RTMP encoder. Try to adjust the codec in the settings.
  • See if you’re able to adjust the codec in the settings.
  • All the software displayed on can provide h.264 encoding.

Audio codec must be set to MP3 or AAC (it is currently "{codec}")
  • Only MP3 and AAC are supported in HLS.
  • Be careful as some of the more exotic hardware encoders come with audio codecs that may not play nice with our transcoding and demuxing tools.
  • The software we list on fully supports MP3 or AAC.

Max keyframe interval is currently at {current} seconds. Please set it to {target} seconds.
  • Means the gaps between their keyframes are too large. This can sometimes be caused by dropped frames, so please check with that before reporting an error with the dashboard checker.
  • In the case of XSplit, there is a setting called max keyframe interval that you can adjust. 
  • In the case of OBS, you need to go to the advanced tab in your settings, and set the keyframe to 2.
  • With more exotic encoders, such as the elemental, you can change the GOP size to create the 2 second keyframe interval state needed (depending on the framerate)

The broadcast is not set to constant bitrate (CBR). [Current average: {avg} kbps, current max: {max} kbps]
  • This means the bitrate we see is fluctuating too much. On average you are transmitting at {avg}, but peaking at {max}, and the difference is large. Enable CBR in your broadcast software accordingly.
  • FMLE does not support CBR encoding. Please switch to software that supports this.

A note on CBR:

If you’re broadcasting to Twitch with a recent version of XSplit or OBS, you may have noticed the option to select between VBR (variable bitrate) and CBR (constant bitrate). We’re suggesting that all broadcasters use CBR for several reasons, all of which relate to the final quality of service (QoS) that your viewers will experience. 

Twitch does not reencode your video after receiving it; whatever is sent to our servers is sent right back out to your viewers. If you’re a partner, we perform a “transcode” on the live stream which creates additional resolution options. These options are always encoded with CBR settings, but live will still remain untouched from the original broadcast.

The main problem with VBR is during lulls in the action: paused games, hero selection screens, even famous talking heads. During these sections of video, VBR streams produce a significantly lower bitrate, which can cause issues on pretty much any end-user connection when the bitrate spikes back up during the action (team fights, Protoss vs. Protoss battles, 2GD petting Victory Cat). This is due to interactions between multiple RTMP, other TCP streams, routers, buffers, and a whole complex morass of tech buzzwords.

VBR also leads to issues when sending data to the Twitch network over many ISPs. When connecting to Twitch, the route your ISP takes may not be stable enough to handle sudden increases in bandwidth, leading to “broadcast starvation.”

Broadcaster starvation is when you attempt to stream at a bitrate that is too high for your network/isp, causing frames to be dropped before entering the Twitch network. This leads to lag for everyone including people watching on your lower resolutions, if you have them. When using VBR, the needed bitrate for the video may hit these limits, causing the starvation.

TLDR: Variable bitrate is bad for video over the internet due to how TCP (the internet protocol most streaming video uses) works, and you should use CBR whenever possible.