this post was submitted on 07 Jun 2024
20 points (88.5% liked)

Linux Gaming

15392 readers
82 users here now

Discussions and news about gaming on the GNU/Linux family of operating systems (including the Steam Deck). Potentially a $HOME away from home for disgruntled /r/linux_gaming denizens of the redditarian demesne.

This page can be subscribed to via RSS.

Original /r/linux_gaming pengwing by uoou.

Resources

WWW:

Discord:

IRC:

Matrix:

Telegram:

founded 1 year ago
MODERATORS
 

Can someone help me figure out what it even is I'm trying to do? I'm a tech savvy kinda persons and if someone just gives me the general idea/right keywords to search for I can probably figure the rest out myself, but I'm caught in a real X/Y problem.

JUNK: Arch, KDE (X11), 3080 (proprietary drivers), OBS, Elgato HD60 X, 3440x1440 ultra widescreen

I just want to do some simple streaming to Twitch/Youtube and game recording.

The Elgato obviously doesn't support my ultrawide so my original thought was to leave the UW monitor plugged in with DisplayPort (as it already is) and then plug in the Elgato with HDMI and then switch the monitor input when I'm ready to stream. The UW stretches the 2560x1440 out though, how do I configure the viewport to keep the proper aspect ratio and put black bars on the side? Alternatively, can I configure the UW to 2560x1440 with black bars and simply mirror the display, or will I take a performance hit when streaming like that? And how do I change the xconfig on the fly, is that something I'd want to write a script for?

I inherited the Elgato from a friend who gave up on streaming and while I'm not entirely opposed to spending more money on potentially more appropriate gear ....... I'd really rather not.

Like I said, if someone can just explain to me what I should be doing and give me a swift kick in the ass towards the right direction, I can do the heavy work of putting all the pieces together, I'm not looking for a total solution πŸ˜΅πŸ˜΅β€πŸ’« Thanks!

you are viewing a single comment's thread
view the rest of the comments
[–] bisby 23 points 5 months ago* (last edited 5 months ago) (2 children)

... What exactly do you need the Elgato for? All the Elgato does is capture external HDMI signals.

If you had 2 PCs, you would use the Elgato to send the gaming PC's screen to the streaming PC. If you had an Xbox, you would use it to capture the Xbox's screen on your PC for streaming.

If you have 1 PC, you don't need an Elgato, KDE already knows what your PC screen looks like, it is laying it out.

What you should be doing is just "open OBS and set up your scenes and start streaming." The only thing you might want to do is go into the video settings and set it to use NVENC (I think you can do that on Linux) to offload the encoding to your GPU (which has dedicated encoding hardware) instead of your CPU.

Everything else should just work the same as it does on Windows.

To be clear: The Elgato HD60 X does not do any streaming.. it is a video capture device. OBS does all the streaming, and it already has access to all the things it needs to capture by nature of being on the PC. You can just capture your desktop in OBS without the Elgato.

[–] [email protected] 9 points 5 months ago (2 children)

....... I thought that ... nevermind, this is why I'm here.

The Elgato has a USB coming out of it and I thought that passing everything through it would allow the USB to feed/write the video stream without any other processing, I guess what I've really been after this whole time is more OBS tweaking.

The only thing you might want to do is go into the video settings and set it to use NVENC (I think you can do that on Linux) to offload the encoding to your GPU (which has dedicated encoding hardware) instead of your CPU.

I think this was a big missing piece for me.

For all my years in IT, I've never been an A/V nerd.>

[–] Robin 12 points 5 months ago (1 children)

You are correct that the Elgato does video encoding. And that if you use your GPU it's putting a little bit of extra load on the GPU. But it's negligible since the video encoding is a separate part of the chip. Maybe you'll lose a percentage of FPS due to power usage snd bandwidth, but honestly the same is probably true for the CPU load caused by USB bandwidth.

[–] bisby 2 points 5 months ago (1 children)

Even with the elgato doing "video encoding", how does it get to Twitch/Youtube? It doesn't do THAT kind of encoding. It's encodes the HDMI capture into a local format that is basically a webcam stream. It has to be broadcast from OBS. and even if you are using the Elgato as a video source, OBS is going to re-encode it into what it wants to broadcast. There isn't really getting around the video encoding cost of OBS, unless you have a device that streams to the internet directly from the capture card (which it doesn't seem like Elgato makes one. Someone else might, but that's not really what they are for)

[–] Robin 3 points 5 months ago

Ah I did some more research and what I said only applies to the older Elgato devices. They did use h264 as the format over usb and you could use that directly without recoding. But they moved to a custom format due to delay and decoding overhead. And ofc you'd want stream ovelays and such which also requires reencoding.

[–] bisby 2 points 5 months ago

I thought that passing everything through it would allow the USB to feed/write the video stream without any other processing

Unfortunately no. It captures the signal and turns it into something that the computer can digest, but the signal isn't something that just proxies straight through to twitch. OBS is always going to do some re-rendering.

A few tips:

If you open OBS settings, there is a "Output" section. You can change the output mode to "Advanced", and then select a "Video Encoder" ... this is where you would find NVENC (there might be a way to do it in the simple output mode too, but I dont have an nvidia GPU to confirm.

You'll most likely want to change the Output resolution on the "Video" section of the settings down to 1280x720. Twitch limits your bandwidth anyway, and people tend to find that 1080p at low bandwidth doesn't look any better than 720p at the same bandwidth (less compression artifacts because it doesnt have to compress as much, if at all)

Twitch has an option for bandwidth tests (or at least used to). This will make their servers accept the stream, but you don't actually go live on the site. You can use this to see how your computer handles the streaming. On the main OBS dashboard, you'll see a 30.00 / 30.00 FPS in the bottom right corner (or whatever your resolution you've selected). There's also a CPU meter down there.

In the Docks menu there's also a Stats dock. It will tell you how many Frames are missed due to rendering or encoding lag. If you have 0 missed frames, then your PC is handling the encoding just fine. It will also list how many dropped frames due to NETWORK you've had. This would indicate that there is a problem between you and Twitch/Youtube on the internet. Your computer is rendering the frames just fine, but Twitch isn't receiving them.

Use the stats dashboard to figure out where you are losing frames and then fix that (if its rendering/encoding, then its NVENC or your CPU struggling. if its Network, then its your ISP struggling). And if you aren't losing frames, then you have nothing to worry about. This dashboard will also show you CPU and memory usage, but realistically, if youre using a 3080 with nvenc, those usages will probably be very low.

[–] aksdb 4 points 5 months ago (1 children)

A capture card also makes sense if you have a camera that feeds into HDMI (vs a normal webcam that already provides USB).

[–] bisby 1 points 5 months ago

They can. But Elgato also makes a "Camlink" in addition to the "HD60" series. And the Camlink dongles create a UVC device, which can be used as a webcam with no further tweaking necessary. Using a full desktop capture card for a webcam is slightly overkill, but absolutely works.