Hi all,
We’re running a LiveKit-based video conferencing app (React/Next.js, self-hosted LiveKit server).
Originally we used VP8 and the only real problem was screen share blur on some sessions. To fix the blur we changed our codec from VP8 to VP9.
After that change, video and screen share go blank in some browsers — notably Safari and Firefox. Audio still seems fine, but the video track renders as a black/blank surface. Chrome-based browsers seem okay.
We also tried AV1 for a few days earlier, but our users were not happy — we ran into issues with the camera and other stuff (poor compatibility / performance in some browsers), so we moved away from it. So AV1 is probably not a viable path for us right now, which is why we landed on VP9.
A few things we’re trying to understand:
- Is VP9 screen share with SVC / simulcast actually supported on Safari (WebRTC) and Firefox the way it is on Chromium? Or is Safari’s VP9 support (esp. in WebRTC) incomplete, causing the blank frames?
- Is this a codec negotiation / SDP issue — i.e. the publisher offers VP9, the SFU negotiates something the browser can’t actually render?
- What’s the recommended way to handle this? Should we:
- Force a codec the browser supports via RoomOptions / videoCodec or per-publish options,
- Or keep VP8 for camera and use VP9 only for screen share?
- Does screenShareEncoding / simulcast layers need special handling for VP9 to avoid the blank render?
- Any known issues with Safari + VP9 + SVC specifically, and a recommended fallback strategy?
What we want: fix the original VP8 screen-share blur without breaking video/screen share on Safari and Firefox (and without going back to AV1).
Any guidance on the correct codec configuration or a known-good setup for cross-browser VP9 (or an alternative) would be really appreciated.