Voice + self-hosted LiveKit: low-resolution camera video and one-way stuttering

Hi everyone,

I recently set up a LiveKit server for Discourse’s Voice feature. Calls connect and audio sounds great, but camera video is consistently blurry and very laggy (frames per second between 8-20 with lots of frozen frames).

I’ve tried different devices, browsers, and video-quality settings, including Maximum, without resolving it.

My setup:

  • Discourse 2026.10.0-latest
  • LiveKit v1.13.7
  • Discourse and LiveKit run on separate DigitalOcean servers in the same VPC.
  • Both servers have DigitalOcean firewalls.
  • No custom changes to Discourse or LiveKit’s code.

In one two-person test using Chrome and Safari, the person using Safari saw the Chrome participant’s video stuttering.

With some help troubleshooting, we checked the LiveKit server during the call. It was under very little load, and both browsers were connecting over UDP. The logs included these messages:

adding up track failed: duplicate layer

unbound buffer overflowing, dropping packets

Two things came up during that investigation that might be relevant:

  • Voice appears to request a lower-resolution camera stream even when higher quality is selected, which might explain the blurry picture.
  • There are signs that the same camera might be getting published twice, which might be related to the stuttering.

I don’t know whether those findings explain the whole problem, and I haven’t applied any code changes since this is my production site.

Has anyone else experienced this with Voice and a self-hosted LiveKit server? Is there a setting I might have missed, or could this be an issue with the integration?

2 Likes

UPDATE!

This is persisting after I moved to LiveKit Cloud, so it isn’t related to self-hosting LiveKit at all. I also tested with additional devices (Safari on iPad and Chrome on MacOS). Chrome on MacOS saw the laggy/stuttering/pixelated video coming from Safari on iPad. Audio was still fine.

1 Like

I hope it can be improved, although I know it could be related to a system-wide failure (lock-in).

“the WebKit restriction limits the ability of browser vendors to improve their browsers by adding additional security improvements or features on iOS, compared to other platforms, including Android. It may therefore decrease competition between browsers on security features on iOS.”

In Apple, all browsed content goes through WebKit. We have Linux or Android for everything else.

1 Like

Omg I didn’t even consider that. It would make sense though, unfortunately… :frowning:

1 Like