Optimize video quality in Talk

I have Nextcloud running locally in a Docker container, connected with a 100/10 mbps connection. A second server with STUN, Turn and High Performance Backend is located in a data center with a 1 GBit connection. All software is up to date. I installed the second server using this script.

When I use Talk to call a second user, the picture quality is poor in my opinion. It is miles away from the advertising photos on the Nextcloud website. Is there a way to improve the picture quality?

I have tested with various browsers (Safari, Chrome, latest version) as well as the desktop client for macOS and the app for iOS. I have set the video quality to “HD” in the app, but the picture looks more like VGA. On the Mac, I can see that the upload is just 150 kbps.

The poor picture quality is actually all that is stopping me from using Nextcloud Talk for communicating with customers. Posts regarding this issue in this forum are several years old. The documentation doesn’t give much information either, it mainly just shows the pattern Nextcloud uses to downgrade the image quality based on the number of participants. so I think it might be worth asking again.

2 Likes

I second this.
Would be great to get an update on this, how to improve.

Thanks,
paradeiser

Hi,

Since you mentioned that you already have a High Performance Backend (HPB) set up on a 1 GBit connection, the infrastructure itself should be capable of handling HD video. Adding “another” HPB solution won’t fix this, as the bottleneck seems to be elsewhere.

I suspect that the fact that you are capped at 150 kbps is the key indicator here. This suggests that the WebRTC protocol (which runs the video stream) is detecting network instability (packet loss or high jitter) and aggressively throttles the bandwidth to prevent the call from dropping entirely. Even if you have high bandwidth (1 Gbit), high latency variation (jitter) will force the quality down to VGA levels.

A few things you might want to check:

  • Latency/Jitter Check: Check the connection quality between your client and the remote Data Center (where the HPB is). Even if the pipe is big, if the ping fluctuates wildly, Nextcloud Talk might downgrade the video.

  • The Local 10 Mbps Upload: Your main Nextcloud instance is on a 10 Mbps upload connection. Even though the video stream (RTP) goes through the remote HPB, the signaling still goes through your local server. If that 10 Mbps line is saturated (e.g., by file syncing or backups), the signaling might be delayed, causing the client to negotiate a lower quality.

  • HPB Configuration: Check your server.conf (for the standalone signaling server/HPB). Ensure that max-bitrate isn’t accidentally set too low in the configuration file.

  • Browser Debugging: You can try diagnosing this by opening Chrome, starting a call, and opening a new tab with chrome://webrtc-internals. Look at the graphs for bwe_compound (Bandwidth Estimation). It will tell you exactly why the browser refuses to send more data (e.g., “packetLoss” or “delay”).

Hope this helps narrow it down!

1 Like