Skip to content

Releases: livekit/egress

Version 1.12.0

05 Dec 19:15
49c7d7b

Choose a tag to compare

Changelog

Added

  • Ability to request dot file dumping through gst callbacks (#1072)
  • Invoke UpdateEgress on each stream retry attempt (#1055)
  • Logging for file outputs exceeding set of file size thresholds (#1079)
  • Ability for configuring max file size in bytes as a storage quota (#1080)
  • Setting chrome.log debug file size limits & rotation (#1081)

Fixed

  • Update eslint for js-yaml vuln fixes (#1074)
  • Update protocol and x/crypto (#1082)
  • Make stats meaningful for SRT and prevent log noise (#1075)
  • Fix for racy addition of app sources (#1073)
  • Ensure pipeline is at least in PAUSED state before pushing data to app sources by (#1076)

Version 1.11.0

17 Nov 23:42
a343ada

Choose a tag to compare

Changelog

Added

  • Allow setting a default role ARN for S3 upload requests (#958)
  • Agent testing (#960)
  • Adding audio mixer QoS stats processing (#969)
  • Add content checks to file integration tests (#988)
  • Basic content checks for segment tests (#990)
  • Handle small audio gaps by the signal time stretching/compression instead of having discontinuities (#974)
  • Adding MP3 to the supported audio types for audio only recordings (#1007)
  • Adding burst estimator (#1026)
  • Adding gstreamer pipeline running/playhead time accessors (#1025)
  • Adding latency overrides per request types (#1050)
  • Add PSRPC observability to IOInfoClient (#1056)
  • Add a watchdog to shutdown egress on PSRPC failures (#1061)

Fixed

  • set status to failed when an egress is killed (#961)
  • Log SDK app writer source stats on EOS (#963)
  • Align test source output buffer duration with opus frame size (#966)
  • disable rtcp for room composite (#971)
  • Don't log every single audio discontinuity (#985)
  • Switch from react-scripts to vite for egress-templates build (#989)
  • Use specific template version with egress versions (#1000)
  • Snap audio PTS back to the regular time grid (#1002)
  • Speed up build time (#1004)
  • Don't delete test results immediately - keep them for eventual after run analyisis (#1005)
  • do not send eos on participant composite video tracks (#1008)
  • Skip dummy video packets (#1013)
  • Extend max allowed RTP timestamps diff (#1016)
  • Use arrival time and one way delay estimation in PTS calculation. (#1015)
  • Stair step discrete corrections of track start time (#1019)
  • Update sdk to include quanitzed SRs adjustments (#1020)
  • Go SDK for track synchronizer packet stats (#1021)
  • Go SDK to set initial PTS to estimated PTS (#1022)
  • Restore defaultRTPMaxAllowedTsDiff setting (#1023)
  • Drop old samples when sample queue overflows. (#1024)
  • Add controller nil checks to IPC handler (#1027)
  • Update server-sdk to pull in the fix for initialize timing (#1029)
  • RemoveTrack after finish. (#1030)
  • Adding linters (#1033)
  • Update server-sdk to pull in logs sampling fix (#1035)
  • Update server-sdk to pull in the fix for ensuring no PTS regressions (#1039)
  • Adding more logs around stopping pipeline (#1042)
  • Update server-sdk to include the fix for sanitized SRs (#1043)
  • Detect & handle missing PTS after vp9parse element (#1046)
  • Adjusting UpdateEgress retry logic (#1048)
  • VP9 - Drop a frame with an invalid PTS and wait for key frame (#1047
  • Adding a workaround for baseparse gstreamer bugs which could produce buffer with no valid PTS (#1049)
  • Fix filename templating in case of multi output (#1051)
  • Log egressID in io client worker (#1054)
  • Pay attention to context deadline on IO update (#1062)
  • Close grpc ClientConn in the main process (#1064)
  • Logging significant IPC callbacks (#1066)
  • retry S3 upload on 409 or 429 (#1069)
  • Disable scenecut when keyframe interval is set (#1070)

Egress version 1.10.0

06 Aug 13:19
19c96f5

Choose a tag to compare

Changelog

  • fix segment panic for very large durations (#869)
  • update logger (#870) (#874) (#878) (#894) (#898) (#918)
  • fix panic on reading stream stats (#881)
  • fix for sdk room composite (#883)
  • do not log an empty string an error for glib errors/warnings (#885)
  • use core.Fuse in the source logic (#888)
  • do not fail image output if no dimension is set (#890)
  • support extra webhooks in egress requests (#891)
  • fix race between track subscriptions and audio bin creation (#892)
  • chrome logging + extended logging controls (#897)
  • add support for IMAGE_SUFFIX_NONE_OVERWRITE (#895)
  • update dependency @babel/runtime to v7.26.10 [SECURITY] (#875)
  • update all deps and go version (#901)
  • update template deps (#902)
  • update jitter buffer (#903)
  • fix audio gaps (#905)
  • use the livekit go-gst fork (#904) (#906) (#933)
  • update nth-check template dep (#907)
  • improved update management (#909)
  • SDK timing (#910)
  • update README yaml config regarding storage (#916)
  • move latencies to config (#915)
  • remove process handler on launch failure (#917)
  • nil check primary error (#919)
  • fix json ignore (#920)
  • fix audio mixer (#924)
  • adopt storage version of blob uploader (#925)
  • update storage, handler logger (#930)
  • feat(cli): update to urfave/cli/v3 (#928)
  • limit pulse clients (#931)
  • allow setting GST_DEBUG env at runtime (#876)
  • add GetAvailableMemory to monitor (#932)
  • fix azure urls (#935)
  • memory updates (#936)
  • delete the handler temporary context rehardless of the handler termination status (#934)
  • increase audio alignment threshold (#937)
  • fix race in audio track subscription (#938)
  • add duration to presigned urls (#941)
  • use gstreamer 1.24.12 (#943)
  • allow uploading to S3 using AssumeRole (#940)
  • update pion dependencies (#946)
  • fix for AssumeRole credential insertion (#948)

Version 1.9.0

07 Jan 00:53
2dc12c4

Choose a tag to compare

Changelog

Added

  • Support for backup storage (#792) (#793) (#795) (#825)
  • Log per egress memory usage (#821)
  • Support for participant egress screen share (#829)
  • Use the SDK to handle audio only room composite requests with the default template (#817)

Fixed

  • Skip AWS logging on successful upload (#762)
  • Reduce duplicate test runs (#763)
  • Fix s3logger memory usage (#764)
  • Disable SDK Async-connect (#768)
  • Faster startup (#769)
  • Queue 15 min worth of segments (#770)
  • Use config value for max upload queue size (#772)
  • Disable-features Translate in headless Chrome (#775)
  • Add a back off top laylist upload retries (#779)
  • Remove audio with image-only egress (#782)
  • Adopt AWS SDK v2 (#783)
  • Force CBR for streams output (#785)
  • Don't update bucket region with custom endpoints (#786)
  • Set a region field when using a custom endpoint (#788)
  • Ignore websocket close errors (#790)
  • Avoid recording room composite before video is decoded (#806)
  • Fix max concurrent web check (#810)
  • Use Ubuntu 24.04 base image (#811)
  • Move IO timeouts to config (#814)
  • Upgrade to pion/webrtc v4 (#818)
  • Kill highest memory egress when OOM (#826)
  • Udpate livekit JS dependencies and call setRoom in default template (#835)

v1.8.4

21 May 05:37
95713d5

Choose a tag to compare

Changed

  • Preset 0 (720p, 30fps) is now the default recording option (#640)

Fixed

  • Zombie processes eventually causing chromium or X to fail (#673)
  • Pipeline getting stuck with Participant composite when a track is unpublished (#635, #644)
  • ImageOutputs broken when used with other outputs (#642)
  • Fixes to jitter buffer and track synchronizer for track/track composite egress (#643, #660)
  • Race on shutdown causing some final updates not to send (#666, #667, #674)

v1.8.2

08 Mar 00:37
84452bb

Choose a tag to compare

Added

  • Audio-only cpu requirements (#597)
  • is_disabled prometheus metric for terminating nodes (#622)
  • Details field in EgressInfo (#627)

Fixed

  • Race condition with deadlock (#608)
  • Critical gstreamer error with Participant egress (#624, #626, #628)
  • Keyframe intervals for segments and streams (#611, #618)
  • multi output use case with image outputs and local image save path (#614)
  • Force IPv4 with GCP client (#623)
  • Marking aborted egress as failed (#620, #625)

v1.8.0

13 Jan 17:48

Choose a tag to compare

Requires livekit-server v1.5.1+

Fixed

  • Track/Track composite failures when video track begins muted (#524)
  • Segment upload failures if queue gets backed up (#509)
  • Sync issues (#498, #507)
  • Stream reconnections (#503)

v1.7.9

13 Sep 19:20

Choose a tag to compare

Fixed

  • Pulse not closing properly eventually causing all room composite and web egress to fail (#486)

v1.7.8

08 Sep 22:39

Choose a tag to compare

Fixed

  • Improved RTMP retry policy (#444)
  • Pipeline frozen errors (#459)
  • Websocket egress marked as failed after being stopped (#450)
  • Negative waitgroup counter bug with track/track composite egress (#463)

Added

  • Supports decoding vp9 tracks with track/track composite egress (#465)

Changed

  • Chrome sandboxing is now a config option, disabled by default (#481)

v1.7.5

05 Jul 22:12

Choose a tag to compare

NOTE: as of v1.7.5, chrome sandboxing is enabled for increased security. As a result, the service is no longer run as root
inside docker, and all Egress deployments (even local) require --cap-add=SYS_ADMIN in your docker run command.
Without it, all web and room composite egress will fail with a chrome failed to start error.

Fixed

  • Hang if EndRecording called before StartRecording (#392)
  • Panic on concurrent websocket writes
  • CPU overscheduling (leads to audio loss and other issues) (#396, #403, #406)
  • Hang on gstreamer internal deadlock (#407)

Added

  • Include logs from gstreamer (#398, #401, #411)
  • Save space by deleting local segments once uploaded (#405)