releases.shpreview
LiveKit/LiveKit Ingress

LiveKit Ingress

Mon
Wed
Fri
JunJulAugSepOctNovDecJanFebMarAprMay
Less
More
Releases1Avg0/wkVersionsv1.5.0
v1.5.0

Changelog

Added

  • Allow passing projectID for URL requests (#429)
  • Introduce linter configuration shared with egress, fixing a wide range of issues including unused params, deprecated APIs, unexported return types, typos, a TrimLeft bug, and a mutex-copy bug in a proto message (#425)
  • Add segment start to adjusted buffer PTS; simplify event probe (#398)
  • Log segment events to help diagnose non-~0s segments that could push buffer PTSs outside the segment range (#397)
  • Observe buffer processing latency and expose it as a Prometheus metric (#392)
  • Gate excess pre-roll buffered media to reduce end-to-end latency (#386)
  • Ingress metrics (#383)
  • Pass WHIP through to the SFU directly, with a config option to choose between SFU and native paths; includes WHIP HTTP header handling and RTC closing notify support (#372)
  • IngressID and ResourceID attributes on ingress participants (#344)
  • Custom HandlerLogger implementation (#339)
  • Media watchdog at the tail of the pipeline (input of the Go SDK) to close the ingress if no media is received on any track for 1 minute — needed for cases like SRT where GStreamer may retry connecting forever without emitting any failure event (#334)
  • Backpressure-aware synchronizer: monitor a queue between the appsink and the Go SDK; if it grows past 2 buffers, reduce the synchronizer wait time in 10ms steps until the queue shortens. Addresses a deadlock case in SRT where the reference/wait time was only ever increased, causing the input buffer to fill to its max. Disabled for HLS, where back pressure at the output is expected. (#337)
  • Announce out-of-network splice events as participant attributes (derived from SCTE-35 tables in MPEG-TS streams, e.g. SRT). Implemented by monitoring SCTE-35-related GStreamer events pushed down the pipeline — message-bus-based events lack pipeline-timebase timing and the MPEG-TS demuxer doesn't expose the needed info to regenerate timestamps. Relies on a forked go-gst for now. (#326)
  • Reject ingress if the Enabled flag is false (#319)

Changed

  • Log caps existence when connecting to caps notifier (#431)
  • Replace deprecated io/ioutil.ReadFile with os.ReadFile for config loading (#424)
  • Refactor ingress handler RPC server: remove PSRPC support from the ingress handler and move the full PSRPC server implementation into the server process; introduce a StateNotifier family of objects for injecting state-update behavior; add an (initially empty) ProjectID field to StateNotifier calls (#413)
  • Only report packet loss if trackStats is set (#401)
  • Update GStreamer to 1.26.7 (#396)
  • Update Go to 1.25 (#388)
  • Use FeatureFlags from GetIngressInfoResponse or StartIngressRequest; rename the SFUTranscodingBypassedWHIP config option to WHIPProxyEnabled (#382)
  • Fix the format of the logging field in the sample config (#377)
  • Delay deregistering the WHIP RPC handler to avoid SFU notify warnings (#373)
  • Switch to the livekit/gst-go fork of go-gst (#367)
  • Update CLI to urfave/cli/v3 (#364)
  • Set logging parameters on Pion; ignore Pion ICE candidate warning (#348)
  • Throttle "too slow" logs (#340)
  • Disable output queue-length monitoring for RTMP and WHIP (#338)
  • Disable max-buffer limit on URL input queue; log SRT stats every minute (#335)
  • Initialize URL ingress state with BUFFERING when created directly by the Ingress server (#333)
  • Use logger utilities in ingress (#332)
  • Remove actions/cache from workflows/build.yaml — the cloud-ingress build uses Docker, so caching Go modules from the host is pointless (#325)

Fixed

  • Fix int cast flagged by Copilot (#416)
  • Ensure the logger is initialized before the output registers for EOS, preventing a race that could cause a panic if EOS arrived during creation (#415)
  • Ignore all errors from writeSample once the output is already closed — not just EOF — so hitting the shutdown timeout no longer sets pipelineError and flips the pipeline to a failed state (#412)
  • Do not treat io.EOF as a pipeline error during shutdown; handleSample() keeps returning FlowOK while samples are dropped so GStreamer can drain its queues without interpreting early FlowEOS as a mid-stream failure (#411)
  • Make sure EOS reaches sinks: signal "EOS seen on source" out-of-band so the output can decide to wait briefly for remaining data (or cancel), preventing the pipeline from freezing when the appsink thread is stuck on a blocking push (#408)
  • Safer fallback logic for latency reduction: if A/V arrival rates don't stabilize, skip applying offsets entirely instead of taking the current max of calculated offsets (#406)
  • Initialize logger before the handler starts (#399)
  • Fix superfluous response.WriteHeader call: only send a status code if data hasn't already been written (an implicit 200) (#395)
  • Make sure an ingress session is terminated when sending on the app source doesn't cause the pipeline to emit an EOS event (#379)
  • Propagate sink errors when the input error is (generic, consequential) context.Canceled (#381)
  • Fix "disonnected" → "disconnected" typo in error messages (#360)
  • Fix flaky/broken tests (#378, #374)

Security

  • Bump golang.org/x/image to v0.38.0 (#426)
  • Bump golang.org/x/net from 0.35.0 to 0.38.0 (#358)
  • Bump golang.org/x/crypto from 0.32.0 to 0.35.0 (#355)
  • Bump golang.org/x/net from 0.31.0 to 0.33.0 (#321)
v1.4.3

Changelog

Fixed
v1.4.2

Version 1.4.2 (#271)

Changelog

Added
  • Add WHIP ICE Restart Support (#267)
v1.4.1

Changelog

Added
  • Support for EnableTranscoding (#256)

Fixed

  • Avoid panic if the config is changed before the service is started (#249)
  • Deregister psrpc topics (#251)
  • Connect to room asynchronously (#250)
  • Populate the updated_at state field (#254)
  • Bump golang.org/x/net from 0.22.0 to 0.23.0 (#255)
v1.4.0

CHANGELOG

This version decreases significantly the glass to glass latency of the bypass_transcoding WHIP pipeline.

ADDED
  • Set participant metadata (#222)
  • Report the region in CreateIngress and UpdateIngressState RPC calls (#227)
  • Use pacer when transcoding is enabled (#230)
  • Try restarting the output part of the pipeline up to 3 times if the room disconnected (#240)
  • Remove the jitter buffer in the non transcoded WHIP path (#245)
FIXED
  • Call RegisterListActiveIngressTopic on start (#216)
  • Switch server-sdk-go to v2 (#219)
  • Pick up NULL CPU monitor from protocol (#220)
  • Remove some verbose logs. Gather PLI count in the stats object. (#221
  • Fix typo and handle backward compatibility with livekit-server properly (#229)
  • Fix panic if the whip handler receives data before the stats gatherer is set (#233)
  • Use a different idle threshold in availability handler and when deciding to accept a request (#234)
  • Avoid nil pointer dereference if NewLKSDKOutput fails to connect to the room (#235)
  • Make sure to forward Sender Reports to the synchronizer in the WHIP handler (#243)
  • Update to Go SDK 2.1.0 to fix SCTP compatibility issue (#246)
  • Ensure we match WHIP simulcast layers properly (#247)
v1.3.0

Changelog

Added
Fixed
v1.2.2

Changelog

Fixed

  • Refactor configuration module and support updating the service configuration (#174)
  • Refactor health handler (#176)
  • Count URL requests in the prometheus requests gauge (#179)
  • Stop the gstreamer pipeline cleanly when deleting an ingress (#181)
  • Drain output channel on EOS (#183)
v1.2.1

Changelog

Fixed
  • Flush between each frame when copying data on the WHIP relay (#157)
  • Fix CanAccept logic (#159)
  • Avoid panic when querying the stats monitor before service start (#161)
  • Allow reconnections when the output fails (#164)
  • Do not an error if ingress update failed because the ingress is not found (#163)
  • Make sure that we resize layers to even dimensions (#172)
v1.2.0

Changelog

Added
  • Implement high motion presets (#153)
Fixed
  • Add queues between pipeline steps (#146)
  • Small quality/resource usage/latency tuning for x264 and vp8 encoding parameters (#147)
  • Adopt COMPLETE state for URL ingress. Use udp port multiplexing by default for WHIP (#148)
  • Do not attempt to unpublish a track from a closed room (#150)
  • Use souphttpsrc as it provides better error messages (#151)
  • Improve Ingress A/V sync (#154)
v1.1.0

This is the v1.1.0 release of the ingress service. This release adds support for pulling media from URLs and fixes source resolution handling

Changelog

Added
Fixed
v1.0.0

This is the v1.0.0 release of the ingress service. This release stabilizes the API and adds support for the WHIP protocol

Changelog

Added
  • WHIP support (#97)
  • Expose heath and availability on the WHIP HTTP server (#109)
  • Add support for optimally bypassing transcoding when ingesting WHIP (#111)
  • Set the source track information in the ingress state (#121)
Fixed
  • Validate IngressInfo and populate missing fields with defaults (#90)
  • Fix deadlock in appsrc (#116)
  • Update synchronizer and use Jitter Buffer (#118)
v0.9.0

Changelog

This release breaks the existing ingress protocol API.

Fixed
  • Update Ingress state to failed when we fail to start the handler (#68)
  • Configure logrus to provide an output that is similar to the zap output for go-rtmp logging (#70)
  • Drain active ingress when receiving SIGTERM (#71)
  • Use codec constants instead of mime types (#74)
  • Prevent go-rtmp panics on bad user input (#80)
  • Mark the track as stereo when we have more than channel (#76)
  • Adopt psrpc Errors (#83)
  • Adopt core.Fuse (#82)
  • Fail the health check while draining (#84)
Added
  • Support limiting the input framerate (#79)
  • Install wget in the server container (#77)
  • Add support for audio and video presets (#81)

This release requires livekit-server v1.3.5 or above.

Changeling

Fixed
  • Use protocol cgroup aware implementation or NumCPU (#35)
  • Fix ingress stats monitor integration (#36)
  • Set video layer bitrate in bps. Use better default layer params. (#38)
  • Update logging library (#41)
  • Remove rtsp-simple-server (#44)
  • Do not fail an ingress when we terminate because it's been updated or deleted. (#44)
Added
  • Switch the RPC implementation to PSRPC (#43)
Last Checked
35m ago
Latest
v1.5.0
Tracking since Feb 28, 2023