Livekit video is lagging for the first 0.5 seconds

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 but key_frame_interval=1

  • advanced: same with key_frame_interval omitted (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

  1. Which egress version is currently serving our project?

  2. Is PR #971’s RTCP-disable active for RoomComposite in our region?

  3. 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)?

  4. Are there other recent changes in egress or the headless Chromium base image that could affect first-second composite quality?

  5. What was the egress version deployed on Nov 6, 2025? If possible, pinning to that version on our project would confirm the regression.