I’ve been asked a few times about my streaming setup, so I figured I’d document it a bit. As an overview, I stream from Windows 10 via BootCamp on a 2013 iMac with a Intel Core i5-4570 3.20GHz processor and 8GB of RAM. I use OBS Studio to stream. My timers run in LiveSplit. I have an Elgato HD60 for HDMI capture and an IO-Data GV-USB2 capture device for S-Video and Composite capture. I utilize a FrameMeister Mini XRGB to upscale S-Video and Composite and convert them to HDMI. I split the S-Video and Composite consoles to the FrameMeister and the GV-USB2 via a Radio Shack 15-314 5-in/2-out Auto-Sensing A/V switch (more on why I do this later.) The A/V switch converts Composite to S-Video. For audio, I use an M-Audio M-TRACK II USB audio interface, an Audio-Technica AT-2020 cardioid condenser microphone, and ATH-M30X studio monitors. I play on a 720p LCD screen.
My consoles and their associated capture methods are as follows:
- NES (NES-001 “Frontloader”) – Stock system, composite output captured via GV-USB2 for now.
- SNES (SNS-101 “Mini”) – Modified to output S-Video upscaled by Framemeister and captured via Elgato
- Nintendo 64 (NUS-001) – Stock system, S-Video upscaled by Framemeister and captured via Elgato
- Gamecube (DOL-001) – Stock system, S-Video upscaled by Framemeister and captured via Elgato
- This also includes the Gameboy Player for Game Boy, Game Boy Color, and Game Boy Advance games
- Wii (RVL-001) – Stock system, Wii2HDMI adapter outputs 480p, upscaled by Framemeister and captured by Elgato
- Wii U (WUP-101(02)) – Stock system, HDMI captured by Elgato
- Switch (HAC-001) – Stock system, HDMI captured by Elgato
- NES Classic (CLV-001) – Stock hardware, modified firmware to allow more games, HDMI captured by Elgato
- SNES Classic (CLV-301) – Stock hardware, modified firmware to allow more games, HDMI captured by Elgato
The setup looks a bit like this:
The consoles that output composite or S-Video are run to the Radio Shack AV-Switch. The AV-Switch outputs to the FrameMeister and the GV-USB2. The HDMI for the Wii is run through the FrameMeister. The HDMI from the FrameMeister, Wii U, Switch, and the Classics run to my desk, where I manually switch cables as needed. I do not currently have a big enough HDMI switch.
The M-Audio MTRACK II audio interface allows for a studio microphone to be plugged in. For most streamers, a simpler setup such as a Blue Yeti, but since I also record music, the full audio interface is a requirement. I use input 2 for the AT-2020 microphone, and input 1 for line-in audio such as music from my iPhone, or my guitar during music streams. It allows me to mix what I hear in my ear, blending the input from the mic and/or phone with the audio from the capture card, or removing the capture card audio altogether if all I want is music.
As much as possible, I capture everything via HDMI. The SNES, N64, and GameCube are upscaled by the FrameMeister (I have an HDMI adapter for my GCN on order), and the Wii has a Wii2HDMI adapter to allow it to output 480p HDMI. The Wii U and Switch output HDMI natively.
In OBS, I start with a canvas size of 1280×720 for everything I stream. The TV I play on is 720p, so that is what I capture in. For retro gaming, I prefer 4:3 aspect ratio, so I utilize the left-most 320 horizontal pixels for splits/camera/chat/etc., and the right-most 960 horizontal pixels for game feed, allowing for a 960×720 (4:3) feed. I utilize two separate profiles for streaming to different Twitch accounts or at use-case specific resolutions, and within those profiles I utilize a number of different scenes for different capture scenarios (Retro via Framemeister, Retro via GV-USB2, HDMI direct, etc.) For purposes of this guide, Retro will include NES, SNES, N64, and GCN. My Wii outputs HDMI, so it is treated as a modern system.
For my modern scenes, it is fairly no-frills: add the Elgato as a video capture device, capturing at 720p. It will be 1280×720 natively, I position that at 0,0, and away we go. For modern consoles (Wii U, Switch, etc.), it’s this simple. The Elgato will grab audio, and I can add any overlays I’d want (camera, etc.), but I typically don’t do that for modern capture.
For my Retro scenes, whether they be captured via Elgato or GVUSB2, I prefer to overlay my side elements (Livesplit, etc.) over a background. So I start by choosing a background, cropping it to 320×720, and inserting it at 0,0 on the canvas (Edit Transform can be used for precise positioning). I have a selection of backgrounds I use, so I hide them all and unhide the one I wish to use for this particular stream. I then place my side elements where I want them to be, and use Color Key to key out (think “greenscreen”) a specific color, to allow my splits, chat, and input display to “float” over the background. Once everything is in place where I want it, I lock the element in OBS so I don’t accidentally drag/resize it. Once the sidebar is done, I bring in my capture.
For HDMI capture of Retro systems, first I configure my Framemeister to properly rescale the 240p signal to 720p. I utilized this guide, as well as some help from Acmlm, EvilAsh, and many others. Once I have the proper picture from the Framemeister passed through to my Elgato, I simply add my Elgato HD60 as a video capture device in OBS. I apply a crop filter to eliminate the extra pixels on the side (the height should be a perfect 720 from the Framemeister), and I am left with a 960×720 picture. I then use Edit Transform to place it at 320,0 exactly and confirm the element size is still 960×720. I prefer to listen to game audio through headphones, so I will also open Amarec to get the game audio through my GV-USB2. The result looks like this (click to see full size):
For SVideo/Composite capture through GV-USB2, I bring everything into Amarec for processing and de-interlacing. I followed a guide by EvilAsh25 for setting everything up, and made some per-preference adjustments. Once I have a picture in Amarec (it will be stretched horizontally due to the nature of the 240p signal), I make sure that my Amarec window is set at 100% (right click -> “100%” ). I use a window capture to grab the Amarec window. I apply a crop filter to the window capture, and bring each edge in until I have cropped out all extraneous pixels. I usually go further than I need and then back it off until the obvious black pixels show up, and then I know where I need to be. I then apply a “Rescale” filter to rescale the image to 960×720. Once this is done, I use the Edit Transform dialog to precisely position the game feed at 320,0, and confirm that the element size is 960×720. The result should look like this (Click to see full size:)
With the GV-USB2 via Amarec, I need to also grab the game audio. At a basic level, Amarec should be playing through your speakers, so you can add a Desktop Audio Device element to your capture. I will have a seperate “Advanced Audio” guide for multiple sound cards, or different scenarios of game audio vs desktop audio, or game audio to local record, music to stream, etc.
Amarec settings can be seen below: