Re:How to Run a Live Coding Stream on Twitch Using OBS
by voltagex_ on Tuesday July 14, 2020 @06:44PM
(#23839002)
I haven't had a chance to play with Turing NVENC yet - how much of a real step up from Pascal is it? How does it compare to x264 veryslow quality wise (I know it'll beat x264 in realtime encoding, but I'm more interested in archival)
Re:How to Run a Live Coding Stream on Twitch Using OBS
by DiabloD3 on Wednesday July 15, 2020 @01:18PM
(#23848309)
Its equivalent to x264 medium when using "quality" or "low latency quality. "High quality" just enables two pass on top of quality, which doesn't get it out of medium, but improves the bit distribution similarly to how two pass in x264 does.
All the gens of GCN through RDNA1 are on the spectrum of veryfast to fast, Pascal is fast; RDNA2 (due to inclusion in PS5 and XB2) meets Turing's new bar for quality (so no more low quality console streams on Twitch).
So, none of them compare to veryslow. Ampere will probably have a better encoder than Turing, but I think the fair comparison will still be against medium, not slow. The big change, afiact, will be work on h265, h264 for them is pretty much as good as they need.
Re:How to Run a Live Coding Stream on Twitch Using OBS
by jordanlewis on Tuesday July 14, 2020 @08:11PM
(#23839714)
Huh, thanks for the info here. I don't really understand keyframe intervals. What's a good recommendation for a stream that's mostly static?
Thanks!
Re:How to Run a Live Coding Stream on Twitch Using OBS
by DiabloD3 on Wednesday July 15, 2020 @01:20PM
(#23848338)
Keyframe intervals in OBS are just "keyframe per x seconds"; x264 itself exposes this as keyframe x frames.
As I said in my comment, a keyframe interval of 10 is doable. Don't be afraid of trying large values to see what they do.
Guy who wrote this article made a mistake, his keyframe interval is set to 0, which tells his encoder its free to do scene detection... however, he's exploiting the nature of the encoder (the scene never changes, as its a static image) to create extremely large GOPs, but not as big as manually setting it can go.
Twitch, as do other platforms, have recommendations, but they'll ingest pretty much anything you give them. This means, you can send them 15fps or lower with a ridiculously huge keyframe interval of 10 or more (Twitch recommends 2, 1 is a saner choice for low latency usage, 10 is still gives you enough ability to interact with viewers).
I've toyed with code/static optimized streams, and using x264 instead of HW encoding on a Nvidia Turing (currently the best HW encoder), and playing with custom args: -refs 16, -qmin above 10, -keyint_min set to keyframe interval * framerate (allows 1 I frame per GOP, the rest of the GOP could be near-zero bandwidth P frames), and -tune stillimage (which sets lesser known options which sorta helped here). Static views of an IDE would use extremely little bandwidth.
You'd be optimizing for the IDE view part of a stream, not the stream of you, which would be in a corner of the screen.