This is a boring technical article courtesy of judge reinhold. It won’t be entertaining unless you find computer stuff entertaining, and that would be quite a feat if you’ve just finished watching the Watch Dogs 2 LP. Anyway, I’m writing this to help other people who might be looking to set up a “stream machine” and are having a hard time getting “the straight dope” about certain hardware and how it plays into live streaming.
Stream machine: i5 4570 12 GB RAM Windows 7 Game playing & video editing machine: i7-3770 16 GB RAM Windows 7 GTX 970
The computer we streamed the first stream of Watch Dogs 2 was the i5 4570. This processor is, unfortunately, inadequate to handle the obscene demands of WD2 (100% CPU usage across all 4 cores (no Hyperthreading)) along with streaming, which is why the first stream lagged in both the local video and the stream. However, it should have enough power to be dedicated to streaming, so it got the ol’ wheels turning.
The second stream we did was done on the i7. That was able to handle Watch Dogs 2 along with streaming a lot better (topped out at around 80% usage for each of the 8 threads), I think it was helped the most by running on a Hyperthreaded processor. As an aside as a nerd, I think it’s impressive WD2 is written to utilize so much parallel processing. I have no idea what all this processing is being put toward since the game’s traffic for San Francisco is sparse and the AI routines of the NPCs doesn’t seem to be much beyond what we saw in the cinematic masterpiece of Grand Theft Auto 3.
Video Capturing Hardware
I’ve wanted to get a video capture card for a while, but the Internet is so non-committal about what card is good and what card is bad. My research brought me to decide between Avermedia and El Gato. Watch Dogs 2 made me pull the trigger and I picked Avermedia Live Gamer HD. My reasons were:
- OBS integration
- 720p 60 fps capture
- El Gato known quantity for me, and the known quantity included audio de-sync (Googling El Gato also yielded reports of audio de-sync). Figured Avermedia was worth a dice roll a la the Men Quaffing Potions.
- PCIe interface (I was concerned about latency for USB, even USB 3 since Googling capture cards that used the USB 3 interface still apparently lagged)
- Allows us to capture PS4 gameplay
- Had the word “Gamer” in product name
I would prefer to have a capture card that could do 1080p at 60 fps, but sometimes you have to compromise in life.
It’s been 120 years since Marconi invented electronic audio transmission and it’s still bad and expensive. I hate audiophiles, they are the worst. It’s impossible to get a realistic opinion of how good a piece of audio hardware is. You’ll get psychopaths telling you the only way to get good sound is to pay thousands of dollars for a Neumann U87 (this is what Howard Stern uses, along with major recording studios), and you’ll also get psychopaths telling you a $15 USB mic is “just fine” for their needs. It might be, but not for me god darn it.
If you think our voices sound good, it’s because of the microphones. They’re Heil PR40 brand microphones, and you can find them like-new for usually a decent discount. I’m a bit obsessed with audio quality, but I’ve settled on these microphones. I’ve also looked at the Shure SM7B as I believe that’s the microphone Robin Quivers from the infamous Howard Stern Show uses.
The microphones are hooked in to ART TubeMP Tube microphone preamps, which are fed to a DBX 266xs Comprssor/Gate (yes, it’s spelled like that) to limit the amount of peaking that happens. Then, they’re fed into a Scarlett Focusrite. Finally, there’s a PCI audio capture card (an M-Audio Delta 192) in the i5 computer that is hooked up via TRS to the Scarlett’s monitors for low-latency audio capturing of the final mix. The TV’s audio output is also fed in to the Focusrite. We have 3 headphones that listen to the recording mix off a different audio port than the one the audio capture card hears (the Focusrite has multiple listening ports, which is nice).
Everything has latency. The trouble with everything is trying to minimize that latency to be imperceptible to humans, typically having a reaction time of around 200 milliseconds (try it yourself! http://www.humanbenchmark.com/tests/reactiontime).
Even though I hate audio equipment, at the very least the microphones, pre-amps, and compressor don’t need tweaking since they’re designed to pass along audio as fast as possible.
I have OBS listening to the audio capture card, which is hooked in to the live monitoring TRS outputs of the Focusrite. This is designed for low-latency audio monitoring. But you still need to tweak a few other software/hardware settings.
I have the audio card at capturing 128 samples per second at a 44.1 kHz rate as well as in OBS. You can lessen the latency of audio by taking fewer samples, and/or lowering your rate. Both imply a loss of quality. I read that the 44.1 kHz bitrate was based off the incorrect notion from Sony and several other manufacturers that humans could only hear up to 20 kHz, and you need to double it for reasons I’ve since forgotten. But it turns out that humans can hear up to 24 kHz, hence why you see 48 kHz as an option alongside 44.1 kHz. I’m a nerd.
I disable anti-virus while playing and recording on both machines (why not?), disable the preview pane in OBS, and selected the x264 “Low CPU Usage” preset in the “Output” tab of OBS. I also selected “Use device timestamps” in the audio properties for my audio capture card inside OBS. Dunno if it really helps much.
I set the video card’s output for the HDMI color space from the i7 to be “Full” and set that to be the same for the Avermedia device in OBS on the i5.
I use the Super Mario 3 TAS as a benchmark to view latency since it’s obvious when Mario hits an enemy when a sound should be playing. But, just by writing this article, I thought of a more conclusive way to measure latency. I downloaded the source video for https://www.youtube.com/watch?v=RZawBtWi1Jc and I played it in the capturing setup, which obviously recorded the video playing, and then compared the recorded video to the source video in Adobe Premiere.
There’s a lag of between 6 to 8 frames from the audio in my recording versus the source video. Unsure if I can squeeze more frames out of this setup.
Update: The dang source video isn’t 60 fps, so I’m downloading a different 60fps video to use. I switched the Avermedia config’s buffer to “Enabled” and it looks like the frame desync is at 3 to 4 frames, which is a nice improvement. This is kinda cheating since the buffer delays the frames a bit. Will have to do further tests.
- It might behoove me to upgrade the i5 to an i7 since streaming is a great candidate to employ Hyperthreading, and I did see 80%-90% total CPU usage during some high-action parts of WD2 on the dedicated stream machine, which is a little close for comfort.
- If Avermedia comes out with a 1080p 60 FPS recorder, I would consider getting it. But for now, 720p60 is fine.
- If there’s a PCIe video capture card that has TRS inputs, I’d prefer that since PCI is a bit slower than PCIe. I mean, the “e” in “PCIe” does stand for express, meaning fast! But I’m unsure if that will significantly help since I believe the bandwidth for PCI is 1000Mbps, which should be plenty of overhead for audio.
- Maybe an SSD for the recording landing directory so the CPU spends less time waiting on i/o. Might be the least bang for buck in the grand scheme of reducing latency.
Update 2/22/17: I upgraded the streaming computer to an i7 and migrated off spinning disk to an SSD. With buffer set to auto-detect in OBS for the Avermedia card, my frame desync is at 1 frame, which is very nice.