Question / Help Suggestions for maximizing quality on low-speed DSL?

timmus

New Member
I'd like to get further into YouTube and Twitch livestreaming on a slow connection. According to DSL Reports speed test, I have 6.1 Mbps down and 0.62 Mbps up. I have had good success streaming to YouTube live at 480p using 24 fps, but I'm wondering if there are tricks here for optimizing things further by using the CPU to maximize compression before it gets piped out. I've found a few tutorials on YouTube but they're all outdated (OBS Classic and panels that no longer exist).

Here are the settings I am currently using, which have been successful on YouTube for streaming 480p on slow Internet:

Encoder: x264
Size: 854x480
Rate Control: VBR
Bitrate: 500
Buffer size: 700
CRF: 23
Keyframe: 4 sec
CPU usage: veryfast
Profile: high
Tune: none
Audio: 44.1 kHz
Channels: Mono
Video frame rate: 24 NTSC

I am assuming 720p is out of the question but I can live with a high quality 480p stream. My channel is doing pretty well and my goal is to get enough donations in to change out my line to symmetric DSL. That will take awhile though.

My question: What would you change? Any suggestions here for working my CPU harder more use to push more detail through the pipe at the same bitrate? One problem is the configuration descriptions are confusing... like with CPU Usage Preset it says "higher=less CPU" but the choices are veryfast, fast, slow, etc, which doesn't make much sense. The "profile" and "tune" settings appear to not be documented anywhere so I have no idea what these do. But overall I'm very happy with OBS.. this software is rock solid.

Thanks!
 

Boildown

Active Member
The thing that helps with quality per pixel the most is Preset, you need to use the "slower" ones more than the "faster" ones.

The problem is that bitrate is just too dang important and 500kb/s is too low. In your case I'd decrease the framerate further. Way back in the day when FRAPS was king I made World of Warcraft videos at 12 or even 10fps and they were passable for the time (not livestreamed though, CPUs weren't capable of that yet). At 12 FPS your 500 kb/s is stretched over only 12 frames instead of 24 or 30, which means each frame has more bits allocated to it, and thus looks better. It also makes the video easier to encode so that you can a better preset.

I'd also drop the audio down to something like 50-80kb/s, I see you already have it as mono which is probably good because of your constraints.

Finally I'd use the longest keyframe interval that Twitch accepts, especially at low framerates. Keyframes are the compressed poorer than any other frame type, and you want them to be as infrequent as possible to not hog so much bandwidth.

So to summarize, 10 or 12 FPS, as long of a keyframe interval as you can get Twitch to accept, skimp on the audio bitrate to leave more for the video, and then experiment with as slow of a preset as you can get without OBS dropping/skipping/whatever-ing frames. Even so, I'm not sure that the resultant video will be something people will want to watch, but it could be passable for people who have a specific interest in your stream.
 

timmus

New Member
@Boildown - Thank you very much! I appreciate the information. I actually have managed to do a pretty good job streaming 480p on YouTube. I've had no frame drops and people haven't complained about the lack of HD. So OBS users might want to use those settings if they're in a similar predicament. The only thing I forgot is my audio bitrate was set to 96, but I can probably drop that a bit.

Great idea about lowering FPS. That sounds like the way to go; I might do some tests with 15 (or 20 if I'm allowed to go in between). I'll see how things go adjusting Preset.
 
Top