releases.shpreview
LiveKit/LiveKit Server

LiveKit Server

$npx -y @buildinternet/releases show livekit-server
Mon
Wed
Fri
AprMayJunJulAugSepOctNovDecJanFebMarApr
Less
More
Releases5Avg2/moVersionsv1.9.11 → v1.11.0
Oct 20, 2022

Improved handling of multiple interfaces/IPs. Also adding the ability to manage stereo and RED support at a track level.

Added

  • Ability to filter IP addresses from being used #1052
  • Allow TCP fallback on multiple connection failures #1077
  • Added support for track level stereo and RED setting #1086

Fixed

  • Fixed stream allocator with SVC codecs #1053
  • Fixed UDPMux connectivity issues when machine has multiple interfaces #1081
  • Ensure sender reports are in sync after transceiver is re-used #1080
  • Fixed simulcast codec blocking track closure #1082
  • Prevents multiple transport fallback in the same session #1090

Changed

  • Config validation has been enabled. Server will not start if there are invalid config values #1051
  • Improves NACK stats to count as a miss only if i t's not EOF #1061
  • Store track MIME type during publishing #1065
  • Minor cleanup of media track & friends module #1067
  • Split out shared media transport code into livekit/mediatransportutil #1071
  • Cleaned up logging, improved consistency of debug vs info #1073
  • Reduced memory usage with sequencer #1100
  • Improved IP address mapping, handling of multiple IPs #1094
  • Service API requests are logged #1091
  • Default HTTP handler responds with 404 for unknown paths #1088
Sep 27, 2022

Several stability improvements / edge case handling along with stereo Opus support

Added

  • Supervisor framework to improve edge case & error handling #1005 #1006 #1010 #1017
  • Support for stereo Opus tracks #1013
  • Allow CORS responses to be cached to allow faster initial connection #1027

Fixed

  • Fixed SSRC mix-up for simulcasted tracks during session resume #1014
  • Fixed screen corruption for non-simulcasted tracks, caused by probing packets #1020
  • Fixed Handling of Simple NALU keyframes for H.264 #1016
  • Fixed TCPMux & UDPMux mixup when multiple host candidates are offered #1036

Changed

  • Webhook requests are now using Content-Type application/webhook+json to avoid eager JSON parsing #1025
  • Don't automatically add STUN servers when explicit Node IP has been set #1023
  • Automatic TCP and TURN/TLS fallback is now enabled by default #1033

Removed

  • Fully removed references to VP9. LiveKit is focused on AV1. #1004
Sep 13, 2022

v1.2.1 is a bugfix release

Added

  • Accepts existing participant ID on reconnection attempts #988

Fixed

  • Fixed ICE restart during candidate gathering #963
  • Ensure TrackInfoAvailable is fired after information is known to be ready #967
  • Fixed layer handling when publisher pauses layer 0 (FireFox is has a tendency to pause lowest layer) #984
  • Fixed inaccurate participant count due to storing stale data #992

Changed

  • Protect against looking up dimensions for invalid spatial layer #977
  • Improvements around migration handling #979 #981 #982 #995
  • Consistent mapping between VideoQuality, rid, and video layers #986
  • Only enable TCP/TURN fallback for supported clients #997
Aug 27, 2022

We are excited to introduce two major quality improvement efforts in this release!

First, we've added support for Opus RED. This brings a major step up to audio quality over lossy networks. Even with 50% packet loss, audio still comes out clear and free of robotic artifacts.

The other major feature is the ability to automatically switch to TCP or TURN/TLS when UDP connection is failing. Certain routers/firewalls would initially let through UDP packets, but then either rate limit or block them from continuing. We can detect these scenarios and switch to TCP for that participant. To enable this, set rtc.allow_tcp_fallback: true in config.

Added

  • Support for NACK with audio tracks #829
  • Allow binding HTTP server to specific address, binds to localhost in dev mode #831
  • Packet stats from TC (#832)
  • Automatic connectivity fallback to TCP & TURN (#872 #873 #874 #901 #950)
  • Support for client-side ping/pong messages (#871)
  • Support for setCodecPreferences for clients that don't implement it (#916)
  • Opus/RED support: redundant audio transmission is enabled by default (#938 #940)

Fixed

  • Fixed timing issue in DownTrack.Bind/Close (#833)
  • Fixed TCPMux potentially blocking operations (#840)
  • Fixed ICE restart while still in ICE gathering (#895)
  • Fixed Websocket connection hanging if node isn't available to accept connection (#923)
  • Fixed ICE restart/resume in single node mode (#930)
  • Fixed client disconnected in certain conditions after ICE restart (#932)

Changed

  • Move to synchronously handle subscriber dynacast status (#834)
  • Retransmit DD extension in case packets were missed (#837)
  • Clean up stats workers (#836)
  • Use TimedVersion for subscription permission updates (#839)
  • Cleaned up logging (#843 #865 #910 #921)
  • track_published event now includes the participant's ID and identity (#846)
  • Improve synchronization of track publishing/unpublish path (#857)
  • Don't re-use transceiver when pending negotiation (#862)
  • Dynacast and media loss proxy refactor (#894 #902)
  • PCTransport refactor (#907 #944)
  • Improve accuracy of connection quality score (#912 #913)
  • Docker image now builds with Go v1.19
Jul 11, 2022

Added

  • Returns reason when server disconnects a client (#801 #806)
  • Allow livekit-server to start without keys configuration (#788)
  • Added recovery from negotiation failures (#807)

Fixed

  • Fixed synchronization issues with Dynacast (#779 #802)
  • Fixed panic due to timing in Pion's ICE agent (#780)
  • ICELite is disabled by default, improving connectivity behind NAT (#784)
  • Fixed EgressService UpdateLayout (#782)
  • Fixed synchronization bugs with selective subscriptions & permissions (#796 #797 #805 #813 #814 #816)
  • Correctly recover from ICE Restart during an negotiation attempt (#798)

Changed

  • Improved Transceiver re-use to avoid renegotiation (#785)
  • Close room if recorder is the only participant left (#787)
  • Improved connection quality score stability & computation (#793 #795)
  • Set layer state to stopped when paused (#818)

Removed

  • Removed deprecated RecordingService - Egress should be used instead (#811)
Jun 22, 2022

[1.1.0] - 2022-06-21

Added

  • Add support for Redis Sentinel (#707)
  • Track participant join total + rate in node stats (#741)
  • Protocol 8 - fast connection support (#747)
  • Simulate switch candidate for network connectivity with poor UDP performance (#754)
  • Allow server to disable codec for certain devices (#755)
  • Support for on-demand multi-codec publishing (#762)

Fixed

  • Fixed unclean DownTrack close when removed before bound. (#736)
  • Do not munge VP8 header in place - fixes video corruption (#763)

Changed

  • Reintroduce audio-level quantization to dampen small changes (#732)
  • Allow overshooting maximum when there are no bandwidth constraints. (#739)
  • Improvements to upcoming multi-codec simulcast (#740)
  • Send layer dimensions when max subscribed layers change (#746)
  • Use stable TrackID after unpublishing & republishing (#751)
  • Update egress RPC handler (#759)
  • Improved connection quality metrics (#766 #767 #770 #771 #773 #774 #775)
May 28, 2022

[1.0.2] - 2022-05-27

What's changed

  • Fixed edge cases where streams were not allocated (#701)
  • Fixed panic caused by concurrent modifications to stats worker map (#702 #704)
  • Batched subscriber updates to reduce noise in large rooms (#703 #729)
  • Fixed potential data race conditions (#706 #709 #711 #713 #715 #716 #717 #724 #727)
  • /debug/pprof endpoint when running in development mode (#708)
  • When audio tracks are muted, send blank frames to induce silence (#710)
  • Fixed stream allocator not upgrading streams after downgrading (#719)
  • Fixed repeated AddSubscriber potentially ignored (#723)
  • Fixed ListEgress API sometimes returning not found (#722)
May 18, 2022

1.0 Release!

Read more about the release on our blog

What's new

  • Improved stats around NACKs (#664)
  • Internal structures in preparation for AV1 SVC support (#669)

What's changed

  • Supports participant identity in permissions API (#633)
  • Fixed concurrent access of stats worker map (#666 #670)
  • Do not count padding packets in stream tracker (#667)
  • Fixed TWCC panic under heavy packet loss (#668)
  • Change state to JOINED before sending JoinResponse (#674)
  • Improved frequency of stats update (#673)
  • Send active speaker update during initial subscription (#676)
  • Updated DTLS library to incorporate security fixes (#678)
  • Improved list-nodes command (#681)
  • Improved screen-share handling in StreamTracker (#683)
  • Inject silence opus packets when muted (#682)
May 3, 2022

Features

  • Supports IPv6 networks by default #571
  • NodeSelector to support sort options #599 (thanks @bekriebel)
  • Supports adaptiveStream flag - starts stream in a paused state for adaptive stream capable clients #623 #631

Changes

  • Disallow identity that is an empty string #580
  • Returns Participant.region to clients for multi-region deployments #585
  • TrackIDs indicates the type and source of track #586
  • Reduce contention during session starts #614
  • Improved docker connectivity with using srflx candidates #624
  • Exposes Participant.isPublisher to indicate publisher vs subscriber #643
  • Reduced memory usage of internal stats accounting #645
  • Callback improvements #655 #652 #651

Bugfixes

  • Improved available layer tracking #575
  • Avoid locking in callback #588
  • Prevent negative timestamp difference #595
  • Avoid locking when flushing DownTrack #594
  • Fixes server locking up sometimes with TCP connections #606
  • Fixed dynacast settings lost after ICE restart #620
  • Increase sizes of message queues to ensure delivery reliability #638 #641
  • Fixed connections silently disconnecting due to aggressive nomination #642 #644
  • Fixed memory leaks in MessageChannel #646
  • Correctly determine number of CPUs in a non-linux environment #653
  • Fixed node-ip parameter being ignored, leading to connectivity issues in local env #661
Mar 29, 2022

Features

  • Enable the ability to filter out certain network interfaces to avoid duplicate candidates #502
  • Support for Redis TLS connections #482 (thanks @alexbeattie42)
  • Client configuration system for detecting device specific issues/limitations #452
  • Supports TrackPublished and TrackUnpublished webhooks, along with other webhooks improvements #535
  • Unpublish tracks automatically when publish permissions are revoked for a participant #545
  • Support for upcoming Egress service

Changes

  • Quality improvements to congestion controller: more stable stream allocations #532 #544 #549 #551 #557
  • Congestion controller now defaults to not pausing video by default #554
  • Passes serverRegion back when a participant is joining #479
  • Improved handling of simulcasted screenshares #503
  • Speaker events are now only emitted for audio level changes on microphone tracks #553 (thanks @sibis)
  • Dynacast now throttles downgrade events to reduce unnecessary changes #556 #558
  • Enable size limits to room & participant metadata #566

Bugfixes

  • Fixed potential race condition when creating RTC room #485 (thanks @b20132367)
  • Fixed panic when writing to closed RTCP channel #495
  • Fixed RTCP worker stopped due to nil packets #504
  • Prevent StreamTracker from declaring base layer video to be stopped incorrectly #530
  • Fixed connection stall when non-primary peer connection becomes disconnected #537 #548
  • Fixed timestamp jump upon layer switch #543
  • Fixed deadlocks within Pion mux with 3.1.27 #555
  • Compatibility with Go 1.18
  • Fixed connectivity with Firefox when no tracks are subscribed #565
  • Always re-issue token to prevent client disconnecting before refresh interval #569
Mar 2, 2022

Changes in 0.15.5

  • Improved default speaker detection sensitivity #427
  • Improved handling of network congestion #429 #433
  • Use padding to probe instead of higher layers #434
  • Throttle retransmissions to prevent RTX storm #440
  • Include NACK ratio in congestion detection #443
  • Fixed stream update sending incorrect publisher ID #432
  • Fixed issue where screensharing would pause with Chrome 97+ #437
  • Fixed allocation retry in TURN #445
  • Avoid deadlocks in room close #451
  • Close websocket instead of hang on connection failure #458
  • Disable default node limits #472
Feb 9, 2022

Bring your own TURN servers #409

You can now use any custom TURN server with LiveKit, including third-party TURN services. By setting rtc.turn_servers in the config, LiveKit will configure all connected clients to use specified TURN servers.

Bugfixes and improvements

  • Fixed deadlock causing underlying buffer to become full #413
  • Disabled SRTP replay protection to improve Firefox compatibility #394
  • Improve connection reliability over links with longer latency #405
  • Lower DTLS retransmission interval to improve initial connection speed #414
  • Disable use of ICELite by default #397 #408
  • Smoother dynamic broadcast transition #389
  • Thread safety with map traversal #388
  • Use a single buffered channel for RTCP messages #418
  • Use message versions to better prevent race #399
  • Simplification/improvement of sfu.Buffer #398 #402
  • Improved context with logging #391 #416
Jan 29, 2022

Ability to disable room auto-creation #361

In some cases, you may want to prevent rooms from being created automatically. (i.e. a streamer ended a session, so viewers should not be able to join)

It's possible to disable auto-creation behavior from configuration.

Automatic token refresh #365

For long running sessions, the session may still be running after the client's connection token had expired. livekit-server will now automatically send clients refreshed tokens so clients will always have valid tokens to reconnect with.

RoomService returns only after operation is complete #362

Previously, RoomService would return a response before the operation is actually completed. This would lead to synchronization challenge from clients. In v0.15.3, RoomService behaves like you would expect: operation is completed before it returns.

Other Changes

  • Use ICE-Lite to let clients take controlling role #322
  • Code refactoring for improved re-use
  • Simulate scenarios to allow client tests #330
  • Prevent multiple resume notifications for track changes #334
  • Enable CORS for RoomService #335
  • Integrated logging with Pion (#341)
  • Fixed missing tracks during long latency links #346
  • Fixed race condition when the room is closing when another participant is joining at the same time #370
  • Improved transceiver-reuse, avoid sending potentially un-decodable frames to clients #382
  • Honor auto-subscribe for participants who's given subscribe permissions after joining #381
Jan 6, 2022

Changes in 0.15.2

Dynacast

Ability to dynamically publish only layers that are being subscribed, significantly improving resource consumption on publishing clients. #295

Scoped speaker updates

Speaker updates will only be sent to subscribers. Other participants in the room will not receive updates. #280 #301

List rooms by name(s)

The ability to list rooms that match a particular set of inputs #290

Webhook event uuid and timestamp

Webhook callbacks will now include an unique ID as well as timestamp of the event. This enables idempotent processing of events on the listener side: #291

Track MIME type

TrackInfo now includes a MIME type field that identifies the codec used (i.e. video/h264 or video/vp8) #292

Participant name

Ability to attach a participant name in addition to identity. This should be set inside of the JWT token #293

Configurable congestion control

The ability to disable congestion control #305. This option could be set in configuration.

Bugfixes

  • Close RTCP channel after published tracks are fully closed #286
  • Fix rare deadlock when waiting on a participant that stopped publishing #288
  • Handle IP resolution failure instead of silently failing #289
  • Fixed recording service requests for specific URL 7b0db1f3446c7bfa13ed7080d5a5b7435ad58110
Dec 22, 2021

Downstream congestion control

We are introducing a significant improvement to the core SFU. It now monitors each subscriber's connection for congestion, and when detected, it controls bandwidth consumption for that subscriber by switching to lower simulcast layers at reduced bitrates. In case congestion gets worse, it'll prioritize audio and pause certain video tracks.

The addition of this feature enables LiveKit to work within highly congested networks while delivering an acceptable user experience.

Publisher-only mode

When a participant connects without subscribe permission, server will use the publisher PeerConnection as the default #198

Improved connection quality updates

Connection quality updates now supports audio-only participants, with a MOS-style scoring.

Other changes

  • bugfix: participant is always present when webhook is triggered #200
  • Room.numParticipant will reflect number of participants in a room #199
  • configurable limit for max number of tracks before a node marks itself unavailable #197
  • bugfix: send correct simulcast information in TrackInfo #218
  • docker image uses Go 1.17 #223
  • support for updated recorder protocol (to match livekit-recorder v0.3.12)
  • support for custom simulcast layers #238
  • cleaned up logging to include context #252
  • external TURN/TLS termination #168
  • improve video quality in simulcast layer selection #283
Nov 19, 2021

Bugfix release

Lots of bugs squished and packed with improvements in the core SFU.

  • Improved health checks to avoid sending traffic to dead nodes #177 #183
  • Fixed compatibility with arm64 #178
  • For transceiver re-use, fixed retained frames from previous track #179
  • Fixed edge cases with forwarding incorrect picture id #180
  • Fixed deadlocks when multiple (>20) participants join at the exact same time #189 90f3c43dc583f5dbd244842bd3df6143e74deac7
  • Fixed connection quality updates not utilizing publisher loss stats #186
  • Fixed Room API breakage #190
  • Improved audio level indicator with Opus DTX #159
  • Supports both H.264 and VP8 by default, including mixing tracks from the same participant #128
Nov 5, 2021
v0.14.0 - Connection quality updates

Connection Quality Updates

v0.14 introduces detection for connection quality that's performed on the server side. The SFU will gather various metrics such as packet loss, publish and subscribe success rates to determine the quality of the participant's connections. #167

By performing this check on the server side, all LiveKit clients will receive quality information with minimal effort.

Connection quality information is sent to the participant itself, as well as any other participants it's subscribed to.

JS SDK v0.14.0 supports this feature, with Android, iOS, and Flutter to follow suit next week.

Nov 1, 2021

What's Changed

  • Fixes missing tracks when >3 participants join at the same time #163 (thanks to @bekriebel for reporting & verifying)

Full Changelog: https://github.com/livekit/livekit-server/compare/v0.13.5...v0.13.7

Oct 20, 2021

Bugfix release

  • Update to pion v3.1.5, fixed handling of mixing simulcast/non-simulcast tracks 43079866a289bd8ca52cc26225958363e74ee711
  • Improve bandwidth estimation by sending abs-send-time #149
  • Correctly forward Track.Source #150
Oct 15, 2021
v0.13.4 - Simulcast hotfix

In v0.13.3 mixing simulcast and non-simulcast tracks was broken. This release addresses that.

Latest
v1.11.0
Tracking Since
Apr 16, 2021
Last fetched Apr 19, 2026