Ok, this post might have been a flashbang without this text. While it is about my streaming setup, it being like this won’t make much sense if you don’t also have the context as to why it is like this, but the context is very personal. If you just want to read about the really janky streaming setup I now have, skip to “The Setup”, and just accept that it might not make sense otherwise.
Context #
I’ve been on twitch (mostly as a viewer) for a very long time (almost since the platform became a thing, I was never on Justin TV though), and I’ve most definitely watched more streamed content than I have youtube content. It’s not the case anymore, but the sheer amount of time I’ve been on the platform compensates for my change in habits.
During this time period, I’ve seen the platform from most perspectives: I’ve been a lurker, a chatter, a well-known community member, a moderator, and a streamer. All of these were mostly social (except lurking, which I mostly used for background noise, my brain tends to work better with that unless I’m in hypomanic focus). Even in my original streams, the goal was never to try and turn it into a job or anything like that, and that’s something that never changed.
So originally, I would stream, uh, touhou speedruns. Don’t worry about it, I’m not sure why that’s what I was doing either. I think it’s because I essentially got free recordings and highlights if I ever wanted to submit to a leaderboard, but I didn’t care all that much. At some point I stopped due to lack of energy (ever more work, ever less free time, I was living in Canada at the time, and also some health issues meant I was very drained all the time).
Fast forward a… couple of years. I have a different apartment (still Montreal though), a better commute to work, the health issues are mostly taken care of. This is around the time I was active with Alpine (the distribution) and the Fediverse (that brought in a new wave of friends; I’ve since moved closer to many of them!). I started streaming again, for similar purposes (hanging out with friends), but this time it tended to be in bursts (rather than regular and short). One weekend full of Monster Hunter here, one Dark Souls challenge run there. This went well up until…
Yeah so I got sick. Like, really really sick. What it actually was never got figured out, but in short, for about a year, I could not sit upright for more than a few minutes at best (I’d get too dizzy) and had a variety of other issues. As you can imagine, that was not condusive to my old approach towards my old way of streaming, one that involved a desk, monitor, and comfortable chair. I was also too preoccupied at the time anyway! I’m still not “fully” over it (and I’ve accepted that I probably never will be 100% past this), but I can sit upright just fine, and most of the time I’m unaffected, so don’t worry!
Anyway, as I was starting to improve (the tail end of that 12 month period), one thing led to another, and I started the process of moving to France (for many reasons, really). Hélène (my wife) and I ended up managing to get our current apartment, and moved in. The problem though is, the apartment is quite small. There’s no office room (we both work from home), and there’s only really space for one desk (and I’m still not super comfortable at those for long periods of time anyway). So I work from the couch1 (where I’m more comfortable anyway), and game on the TV. Here’s an excalidraw chart of what that looks like.
During this time, I’ve wanted to stream a couple of times, but the effort required to actually do this kept being too high! For example, how do you handle the microphone, while still hearing what’s going on on the TV, but not the stream? I did end up doing some short-ish private “stream-in-a-call” over steam’s streaming system, but it was really non-ideal for all of these reasons, so I just kind of left it there. Then, one day, as this often happens to me2, I figured the problem out, and started building. And that’s the context for the derangement that’s coming.
The Setup #
Ok so now we can talk about the logistics involved; the specific problems we’re trying to solve.
- I need to hear the game, but I don’t want the viewers to hear the game (through my TV).
- I need to have a microphone that’s going to capture my voice and send it to whatever machine is encoding the stream.
- Ideally, I’d like to minimize the effective load on the machine actually doing the gaming, even if it’s probably minimal. I have enough experience streaming previously to know that the overhead is both lower and higher than you’d think!
- I absolutely need to be able to read the stream chat consistently (remember, this is fundamentally a social exercise / friend hangout situation for me). It’d also be nice if I could easily mute the microphone whenever I want.
- I can’t have the latency be so high it impacts my ability to enjoy the game.
- I need to be comfortable as I do this (ideally, staying where I already am would be great). The solution actually ended up being a lot easier than anticipated, but it’s also full of jank.
So the first question we’re going to answer is: how am I going to have a functional microphone? What I ended up doing is using my laptop for the stream encoding, and then my wireless earphones (that are already paired to it) are connected to it and are providing the microphone. I didn’t want to re-pair them repeatedly between my laptop and the only-for-gaming PC that only needs them for streams, and this is a good approach.
This raises the next two questions, whose answers are related: how do I make it so I can hear the game, but not the viewers, and how do I get the AV of the game over to the encoder machine? The latter question is answered with the standard approach (a capture card). For the former, the answer as to how to keep the TV sounds from being caught by the mic is to simply mute the TV! Instead, all of my audio comes straight through the OBS monitor of the capture card’s audio stream. The other question that the capture card raises is the one as to the latency, so I needed to get one with passthrough, such that the passthrough would handle what my TV’s capable of (4K120Hz). Thankfully, the Elgato 4K X is just that, and has been quite reliable so far.
Because of cabling lengths though, this means that the encoding laptop needs to be a lot closer to the TV than I am. So ok, I can move the coffee table temporarily and place it on there. My wireless earphones are, well, wireless, so that’s not a problem. But now, I can’t easily mute the stream microphone, I need to figure out the logistics for keeping the laptop powered, and I need to figure out how I’m going to read the chat (my initial desired solution of using my laptop is… occupied). Both of these issues are handled by my tablet, which I set up in “screen mirroring” mode. Now I can have OBS on the right side, and I can simply mute the input device to mute the mic, while having the chat dock on the left side of the screen, so I can read the chat. This too is done fully wirelessly, and whatever latency there is is irrelevant for this use-case!
As for power, the tablet gets powered using what usually powers my laptop where I’m at, and the laptop is powered by the Long Boy (it’s quite long) usb-c power delivery cable. The earphones run out of battery at some point, but they also charge really fast, so it forces me to take ~15-30m breaks every 3-4h, which is about what I want anyway, so it works out. For a for-money streamer, that’d be a disaster, but it’s essentially irrelevant for my use-case.
What’s the final result like? Well, I play the game as usual, but can glance at the chat on my tablet to the left whenever. The setup and teardown aren’t too complicated either. I move the coffee table a short distance, insert the capture card between the PC and TV, connect it to the laptop. Then I have to open OBS, reset a couple of things to work around minor bugs (this is a janky setup), make sure the resolution is correct on the TV on the PC input, enable screen mirroring, and plug the tablet and laptop in. It’s a lot of steps, but it’s under 5m of effort, which is enough for the cost to be acceptable for me. Here’s what the object locality looks like in excalidraw again, with the arrows representing wires.
Anyway, this obviously isn’t a big deal to anyone reading this, but I thought it was an interesting setup. Usually, in my experience, more “complex” solutions with many different steps and components tend to go quite poorly, and I tend to try to prefer to make systems that have as a few moving parts as possible. This is a shocking departure from that trend but, at least this time, it worked out quite well! So I decided to share this incarnation of jank, since I decided to write a blog post every month anyway (and I’d rather write this than a status update where I basically say “did some AoC, survived to vacation time at work”). Hope you enjoyed reading about it, and have a happy new year (I had this written a week ago but only posted it now)!
-
the French name for the kind of couch “part” where I spend most of my time is a “méridienne”. I think the English name is “chaise longue”, but I might be completely wrong. It’s basically a much “longer” section, so I can almost lie down in it, or be half-sitting with my feet fully extended forward on the couch. You get the idea! ↩︎
-
I should write about my “backburner” mental model for how this works, but you can get a good chunk of the way by listening to some Rich Hickey talks. ↩︎