Changelog
Added
- V2 egress API — unified source and output config (StartEgressRequest, MediaSource, Output,
StorageConfig), per-participant audio channel routing (AudioRoute), and request-level storage
overrides (#1155) - Support for egress auto retry (#1138)
- Faster than realtime recording (non-live) (#1192)
- Cgroup-aware memory monitoring for admission control and OOM kill (#1118)
- Support for mulaw and alaw input codecs (#1105)
- Add handler outcome Prometheus metric for SLO-based kill rate alerting (#1230)
- Add livekit_load_ratio metric for composite load-based autoscaling (#1234)
- Better multi-publisher support (#1214)
- Read K8s CPU requests to automatically set GOMAXPROCS for cgroup-aware scheduling (#1204)
- Backup storage observability — including storage event IPC for tracking uploads across
primary/backup stores (#1120, #1184) - Enable one-shot sender report sync mode for room composite behind config (#1158)
- Export InitLogger with configurable service name (#1218)
- Allow specifying affinity timeout (#1104)
- Instrument all leaky queues (#1116)
- Instrument data loss on video leaky queues (#1109)
- Add a 1G memory buffer for accepting requests (#1088)
- Log rss periodically (#1151)
- Log pipeline time to playing (#1103)
- Log file upload stats (size, duration) (#1096)
- Chrome 146 (#1173)
Fixed
- Fix s3-compat multi-part uploads (#1228)
- Fix deadlock when AbortProcess/KillProcess call kill() under pm.mu lock (#1226)
- Use statistical cadence check to tolerate WebRTC NetEQ time-stretching (#1223)
- Fix MP3 duration metadata and CBR encoding (#1187)
- Fix room composite duration to include post-participant silence tail (#1169)
- Fix awaitMediaTracks race (#1165)
- Fix for x264 encoder errors causing egress failures at the end of the recording (#1095)
- Fix for data race inside monitor (#1091)
- Fixing one of the causes of pipeline frozen errors (#1129)
- Potential fix for rare issue causing tracks not to be recorded (#1130)
- Handle EOS when removing source bin (#1093)
- Drain appwriter (#1090)
- Drain audio tracks before removing their appsource (#1085)
- Heal track which enters into continuous flow flushing loop on pushing packets (#1142)
- One pacer per audio track (#1235)
- Set time provider only after pipeline reaches playing state (#1212)
- AbortProcess is not safe to be executed by multiple goroutines (#1208)
- Fixing unprotected state write from timer goroutine (#1206)
- Disable PTS adjustments on sender reports for track egresses (#1134)
- Disconnect from room on failing to await for some track (#1132)
- Retry chrome egress navigation on chrome cert verifier change (#1194)
- Return a 500 if handler fails to start (#1137)
- Make sure all data is read from LK server (#1111)
- Always check video dimensions (#1119)
- Fail web egress on HTTP 4xx/5xx page load errors (#1106)
- Avoid panic if we fail to parse a gst pipeline error (#1086)
- Address unsafe int casting (#1126)
- Get original room name from Start request (#1189)
- Suppress noisy colorimetry warnings (#1163)
- Don't log error on manifest upload failure if backup storage wasn't used (#1152)
- Don't count room composite SDK source against Pulse limits (#1114)
- Use a 10 min deadline for the RPC watchdog (#1207)
- Remove enable_room_composite_sdk_source and always enable sdk source when conditions allow
it (#1122) - Gstreamer logs based on configured level (#1161)
- Reintroduce sdk logs filtering (#1213)
- Using variant of OnDisconnected callback which passes a reason (#1221)
- AV sync content verification in integration tests (#1215)
- Fixing arm64 chrome installer (#1175)
- Use separate token with delete permission (#1172)
- Update module go.opentelemetry.io/otel to v1.41.0 [SECURITY] (#1201)
- Update module github.com/aws/aws-sdk-go-v2/service/s3 to v1.97.3 [SECURITY] (#1178)
- Update module github.com/go-jose/go-jose/v4 to v4.1.4 [SECURITY] (#1170)
- Update module google.golang.org/grpc to v1.79.3 [SECURITY] (#1153)
- Rename IOClient to SessionReporter (#1097)
- Move ProcessManager to interface and create a fake implementation (#1147)
- Enable staticcheck (#1094)