Viewers further away are experiencing buffering

Because live video can have very narrow tolerances, it’s possible that the physical location of viewers compared to the location of your server can cause enough delays that the viewer experiences buffering.

Relocate your server

You may have better luck running Owncast on a server that could be more centrally geographically located or has a connection to the world that is faster. If your server is physically distant from both you (to stream to) and your viewers (to consume video from) you may not be in the most optimal configuration.

Add additional lower output qualities

Adding additional, lower, qualities within your Owncast video configuration will give these people smaller video to download, therefore downloading faster and resulting in less buffering. Lower bitrate, framerate and resolution are available combinations of settings you can utilize to offer low quality options for your viewers.

Drawback: Adding additional qualities will result in using more hardware resources on your server, so keep an eye on your CPU usage as you make these changes.

Higher quality video means larger video sizes that take longer to download.

As quoted from the OBS Wiki:

This is a very common mistake that new streamers make. Streamers will tend to use as much bitrate as they have upload available, with no regard to how that might affect their viewers. Of course, we understand you want your stream to look good. Upping your bitrate is a simple way to accomplish that, but it must be within reason.

In the end while your 1080p 60fps 9mb/s stream might look glorious, and 3 people can watch it fine, either your stream provider or the rest of your viewers very well might have issues.

Reduce the bitrate and framerate of your video output variants in Owncast, and then match your highest quality to what you’re sending in your broadcasting software.

The larger each segment of video is the longer it takes to download. So in general if you decrease the quality of your video (in bitrate and/or resolution) you’re likely to decrease the amount of time it takes to download, therefore reducing the likelihood for buffering for your audience.

When decreasing the framerate and/or bitrate on your server you should also decrease what you send Owncast on your broadcasting software. This helps because:

  1. It decreases the amount of network traffic your internet connection is using, reducing the chance of your upstream being a bottleneck in streaming.
  2. It decreases the amount of data that’s being ingested into Owncast.
  3. The less conversation work that needs to take place within Owncast the faster things are.

Visit HLS Analyzer to assist in troubleshooting. Put in your stream URL when asked, it is <yourserver>/hls/stream.m3u8. Hit Analyze .m3u8.

Take note of the following values:

Segment Download (sec): The amount of time it took (in seconds) to download one segment of video. If it takes longer to download one segment of video than each segment lasts you will get buffering.

Player Buffer (sec): The amount of playable video (in seconds) available. If this reaches zero you will get buffering.

Outage (sec): The amount of time the player had no available video and went into buffering.

Drawback: Reducing your video framerate and/or bitrate may noticeably decrease the quality of of your stream for some content.

Framerate

Decreasing the framerate of your video is often an easy way to reduce buffering. FPS means “frames per second”, therefore if you cut your video framerate from 60fps to 30fps there are literally half as many frames of video for your viewers to download, reducing the amount of video data in half.

Drawback: Reducing the framerate may visibly decrease the quality of your stream for some content.

After reading below you might also find helpful tips browsing the OBS Troubleshooting Guide, even if you don’t use OBS.

The viewer will switch between qualities as needed

Using a technology called Adaptive Bitrate Streaming the viewer will switch transparently between different video qualities as needed. Read more about how this, and other pieces of video works by reading our more detailed Video Document.

Use external storage

If the core problem is your server isn’t able to handle your number of viewers you can take advantage of 3rd party object storage providers so your viewers will download the video from there instead of your server. This means if you have 1 or 1000 viewers the video video traffic from your server will be exactly the same. Keep in mind each viewer will still be accessing your server directly for chat.

This allows you to generate the video on your Owncast server, but serve it from a provider who has unlimited bandwidth and capacity at a low cost.

With this setup you don’t need extra CPU or a more powerful server in order to support more viewers, as they don’t technically touch your server once the video begins.

Read more about configuring external storage with Owncast.

Use a CDN

To support more people all around the world a CDN (content delivery network) is generally the next step. Putting a CDN in front of your video allows your video to be distributed by servers that are geographically closer to the viewer.

Read more about using a CDN with Owncast.