Given this web site is mostly a place where I write stuff up so I don’t have to remember it, but which may be of use to others as well, here’s a short rundown of my current Twitch streaming setup.

First, what am I streaming, and what features do I want?

  1. I currently stream mostly PC games. So, for convenience, and security, I capture on my PC, where I can tell it to capture only a specific game or window, and not risk streaming password dialogs or chat message notifications containing sensitive data.
  2. I want audio ducking. That is, I want game audio to be reduced in volume while I speak into the microphone, but want full game volume when I’m quiet. I play story-heavy games, so people being able to hear game audio is important, I don’t just want to turn down game audio volume really low like some streamers do.
  3. I want to have overlays that show current chat messages and my channel logo, and notifications about new followers.
  4. I want to have a bot running in the channel with which I or viewers can play sound effects.

The Setup

Basic setup

  1. OBS streaming software.
  2. Streamer.bot bot software.
  3. Wired in-ear headphones (with jack plug) from my old cell phone.
  4. A USB/XLR adapter with a capacitor cardioid microphone.
  5. Gaming PC (+ 2 TFT Displays).
  6. A 1080p USB webcam and xSplit VCam background-removal software.
  7. An iPad on a stand for stream monitoring.
  8. Stream Deck for quick scene-switching, mute buttons, sound board and stream start/stop.
  9. An IFTTT account for stream start notifications on Mastodon.

The gaming PC has two displays attached to it. The main screen for playing the game, the second screen for showing the OBS window (including chat!) full screen, and for the occasional web browsing to look up facts or who to raid. It is plugged into wired Ethernet so I don’t have to worry about RF interference from a neighbor’s microwave or other Wifis in the same apartment building (= more stable and faster internet).

I use an out-of-production Blue Icicle XLR-to-USB adapter that I use with my XLR mic for better audio quality at lower price. You can get simple XLR-USB adapters from audio resellers for around 40 bucks, much cheaper than a full mixer. A friend from Germany recommended the T-Bone from audio store Thomann — just make sure that if your microphone says it needs “phantom power”, you get an adapter that can supply “phantom power” and you’re good.

My microphone stand is an adjustable arm that clamps onto my table, It has the microphone itself suspended using a cord, to insulate it from picking up the vibrations from me bumping the desk. If you can’t afford one of those, get a stand that stands on the floor, or at least put the mic on a bookshelf in front of your desk or so. Don’t use a table stand that just sits on your table, people will hear a THUNK for every keypress.

Ducking

OBS’s “Compressor” filter includes support for “sidechain ducking”. Which means you add a Compressor filter to your Desktop Audio track by clicking its little gear icon, set its “sidechain/ducking source” audio device to your microphone and it will go quieter when you speak into that microphone. I also increased its “release” duration to 500ms (which controls how quickly the audio will go back to full volume after you start speaking, the “attack”). My Ratio is 32:1 (the maximum possible), my threshold -35dB (a little below the average volume I talk at). You may want to play around a little with the ratio or threshold depending on how loud your microphone and game audio are.

Encoder settings

Since my internet connection’s upstream isn’t that good and I want good quality for my YouTube archive, I’ve set up the streaming PC to record using the GPU encoder at High quality 1080p with VBR 4000/5000 kbps using nvEnc. For streaming, I use the CPU encoder at fast quality with x264 at 720p and 1100 kbps CBR.

This means my PC needs to be powerful enough to encode twice and to scale down 1080p to 720p for streaming and run the game. To help with this, I let one encoder run on the GPU and the other on the CPU. If you don’t have a PC that can do that, but you have a second old PC or laptop, you should look at my old 2-PC setup and a capture device.

Audio Monitoring

To be able to hear my own voice in the headphones (to be able to tell when I’m muted or too far from the mic), I set the system audio output to be my display (which has no built-in speakers, but a headphone port I’m not using, so audio sent to it isn’t actually audible). This serves as a sort of low-tech “virtual audio cable”. OBS Desktop Audio Capture records audio from there.

Then I set my headphones to be the “monitoring device” in OBS settings. Now I can use the advanced settings on each sound channel in OBS’ main window to play back desktop audio etc. through the monitor, too, so I hear the game. Also, I can have certain sounds (like a sound from my bot that tells me about new chat messages) go directly to my headphones, so they aren’t recorded as desktop audio and viewers don’t hear them.

Webcam

I use a cheap 1080p USB webcam. It’s attached to a flexible phone arm clamped to my desk that I bought on sale, so I can adjust it to be farther back than my display. This way, the captured frame is large enough so my arms aren’t cut off when I make big gestures, and I don’t have to pay attention to staying within frame.

I use the xSplit VCam software to cut away the background behind me. This means I don’t need an actual greenscreen behind me, and my room behind me doesn’t cover half the game. Still, xSplit doesn’t work too well with a busy background, so I made sure to have a reasonably plain wall behind me. It gets the job done though, and means I don’t have to be too worried about leaving a letter with my address in the background or whatever. I plan to eventually go back to a greenscreen though, but that will wait until I move to a new place where I can make the appropriate modifications.

Overlays

I have a bunch of different scenes set up in OBS. Things like “Stream starting” with a countdown, “Stream ending” with info on when I will next stream, a “talking head” scene when I do only chatting etc. There are a few tricks I use to build those:

  • I use the “Scene” overlay type to duplicate the same combination of overlays across multiple scenes. For example, I have a “Game” scene, and my “Main” scene and my “Ending” scene embed that scene using the “Scene” overlay. That way, no matter whether I use Game Capture or Window Capture or Display Capture to capture the game, or if I add a background around an old 4:3-sized game, all scenes that show the game update automatically.
  • I use Apple’s Keynote presentation software (something like PowerPoint) to create little animations and movies, to e.g. flip through upcoming games. I just export them as MP4 movies.
  • I have installed the VLC movie player app. This activates a “VLC playlist” overlay type in OBS that can play random movies from a folder. My “Stream starting” and “Break” screen play back clips I have saved to my computer. This way I don’t get clips someone just made by accident, but people have something fun to watch while I’m gone. Note that all clips have to be the same size, or things will look wrong, so I export all my clips to 720p.
  • Before I had a greenscreen, I used a black circular mask image PNG on the Scene overlay for the webcam. That way, I get a nice smooth circle. I also drew a border image that I placed on top of the webcam.
  • For the “Talking Head” scene, I duplicated the game scene (with webcam and game) and just scaled everything up until the webcam took up the entire screen. This way, it looks a little like everything being scaled up, with the game still visible behind me. There are plugins that let you actually do a “zoom in” animation on scene change, but I haven’t had time to set that up yet.
  • I have some text overlays that show text from a file. My bot is set up to then show/hide a particular overlay on certain events, loading random text, or text with placeholders inserted. Again, these often use their own scenes shown on top of the current scene. I use these to e.g. show an “Achievement Unlocked” overlay as a channel point redeem, or show “fun facts” on the “Stream starting” screen.
  • I have several copies of my webcam on the game scene. One in every corner. So if a game has important things in the lower right, I can hide the “WebcamBottomRight” and show “WebcamBottomLeft” to make sure it’s not covering anything important.

Avoiding Trouble

The secret to a good streaming setup is to not fiddle with it too much once you’ve set it up. So my main trick for a reliable setup is that I don’t touch it between streams: I leave all the USB devices plugged in to the exact same ports, and everything is fixed to my desk as much as possible and can’t move. So the only variables are microphone distance (I push the mic back on its arm when I don’t use it, which means I start stream 10 minutes early to do a quick microphone test before I go live), and daylight coming in through the window (which has effects on the webcam and greenscreen that I try to balance out by blocking half the window with the curtain and using a desk lamp on a second adjustable arm).