Hi,
we are facing following issue:
Symptom: First ~400ms of every RoomCompositeEgress recording has robotic/jittery/frame-skipped video. After ~400ms the recording is clean. Audio is synced (after we set dtx: false on publishers). Regressed from clean baseline that was working Nov 6, 2025.
Suspected cause: egress PR #971 (“Disable RTCP for Room Composite”) — merged Nov 17, 2025 into v1.11.0. Our last-known-good deployment was Nov 6, 2025 (pre-v1.11.0). Disabling RTCP prevents PLI (keyframe request on subscribe) and NACK (packet loss recovery), which matches the symptom exactly.
Versions
| Component | Version |
|---|---|
| Server SDK (PHP) | agence104/livekit-server-sdk 1.3.4 |
| Client SDK (JS) | livekit-client ^2.15.6 |
| Egress (Cloud, observed) | v1.12.0 (latest as of Apr 22, 2026) |
Egress request (current, after testing variants)
POST /twirp/livekit.Egress/StartRoomCompositeEgress
{
"room_name": "<session id>",
"layout": "speaker",
"audio_only": false,
"video_only": false,
"file_outputs": [
{
"file_type": "MP4",
"filepath": "recordings/<room>/<user>_<timestamp>.mp4",
"s3": { "bucket": "<bucket>", "region": "<region>", "endpoint": "https://s3.<region>.amazonaws.com", "force_path_style": false }
}
]
// no 'preset', no 'advanced' — using server defaults
}
Previously tried variants that did NOT resolve the issue:
-
advanced:H264_HIGH @ 12 Mbps, AAC 320kbps 48kHz, key_frame_interval=2 -
advanced: same butkey_frame_interval=1 -
advanced: same withkey_frame_intervalomitted (to avoid PR #1070 scenecut disable) -
preset: H264_1080P_30
Publisher (client) settings
// livekit-client v2.15.6
room = new Room({
adaptiveStream: false,
dynacast: false,
publishDefaults: {
videoSimulcastLayers: [], // simulcast disabled
screenShareSimulcastLayers: [],
videoCodec: 'vp8',
audioCodec: 'opus',
videoBitrate: 2_500_000, // 2.5 Mbps
audioBitrate: 24_000,
screenShareBitrate: 200_000,
dtx: false, // DTX off
red: false, // RED off
stopMicTrackOnMute: false,
},
})
// Camera publish (explicit)
await localParticipant.publishTrack(videoTrack, {
source: 'camera',
simulcast: false,
videoEncoding: { maxBitrate: 3_500_000, maxFramerate: 30 },
})
Reproducibility
-
Happens on every recording, reliably
-
Chrome 120+ publishers, macOS + Windows
-
Observed both on LiveKit Cloud US and EU regions
-
Independent of number of participants (1 publisher or 4)
-
Client-side DevTools Performance trace during record-click shows no main-thread stalls, no long tasks >50ms, no frame gaps >30ms — issue is not on publish side
Questions for LiveKit
-
Which egress version is currently serving our project?
-
Is PR #971’s RTCP-disable active for RoomComposite in our region?
-
Can we get a per-project or per-request flag to re-enable RTCP for room composite egress (needed for PLI on subscribe and NACK for first-RTT packet loss)?
-
Are there other recent changes in egress or the headless Chromium base image that could affect first-second composite quality?
-
What was the egress version deployed on Nov 6, 2025? If possible, pinning to that version on our project would confirm the regression.