steep-mechanic-38687
12/19/2025, 1:59 PMtall-airline-16756
12/19/2025, 1:59 PMtall-airline-16756
12/19/2025, 1:59 PMparticipant_joined webhook, and preferably the track_published webhook for the participant’s audio track before calling StartRoomCompositeEgress (or your egress start API).
Why this helps
• If egress starts before media is present, it will record silence until the track is published. Waiting for track_published ensures media is available and avoids the empty segment.
If you want, tell me which events you currently listen for (or share a short snippet of your webhook logic) and I’ll suggest the exact place to call the egress start.
Sources: Webhooks | LiveKit docssteep-mechanic-38687
12/19/2025, 2:01 PMtall-airline-16756
12/19/2025, 2:01 PMffmpeg -i input.wav -af "silenceremove=start_periods=1:start_threshold=-50dB:start_silence=0.5" -y output.wav
2) Remove leading and trailing silence:
ffmpeg -i input.wav -af "silenceremove=start_periods=1:start_threshold=-50dB:start_silence=0.5:stop_periods=1:stop_threshold=-50dB:stop_silence=0.5" -y output.wav
Notes:
• Adjust -50dB (threshold) and 0.5 (minimum silence duration in seconds) to match your audio.
• If your input is compressed (mp3, m4a), use a lossless intermediate (e.g., WAV) to avoid artifacts, or add -c:a pcm_s16le when writing WAV. Sources: Enhanced noise cancellation | LiveKit docssteep-mechanic-38687
12/19/2025, 2:36 PMtall-airline-16756
12/19/2025, 2:36 PMStartRoomCompositeEgress), but it does not perform the actual media capture/encoding.
If you want, tell me whether you’re on LiveKit Cloud or self-hosting and I’ll outline any operational responsibilities you should watch for.
Sources: Universal Egress | Self-hosting the Egress Service | LiveKit docs | Rooms, participants, and tracks | LiveKit docs