livekit

End-to-end stack for WebRTC. SFU media server and SDKs.

APACHE-2.0 License

Stars
7K

Bot releases are hidden (Show)

livekit - v1.6.1

Published by biglittlebigben 6 months ago

Changelog

This release changes the default behavior when creating or updating WHIP
ingress. WHIP ingress will now default to disabling transcoding and
forwarding media unchanged to the LiveKit subscribers. This behavior can
be changed by using the new enable_transcoding available in updated
SDKs. The behavior of existing ingresses is unchanged.

Added

  • Add support for "abs-capture-time" extension. (#2640)
  • Add PropagationDelay API to sender report data (#2646)
  • Add support for EnableTranscoding ingress option (#2681)
  • Pass new SIP metadata. Update protocol. (#2683)
  • Handle UpdateLocalAudioTrack and UpdateLocalVideoTrack. (#2684)
  • Forward transcription data packets to the room (#2687)

Fixed

  • backwards compatability for IsRecorder (#2647)
  • Reduce RED weight in half. (#2648)
  • add disconnected chan to participant (#2650)
  • add typed ops queue (#2655)
  • ICE config cache module. (#2654)
  • use typed ops queue in pctransport (#2656)
  • Use the ingress state updated_at field to ensure that out of order RPC do not overwrite state (#2657)
  • Log ICE candidates to debug TCP connection issues. (#2658)
  • Debug logging addition of ICE candidate (#2659)
  • fix participant, ensure room name matches (#2660)
  • replace keyframe ticker with timer (#2661)
  • fix key frame timer (#2662)
  • Disable dynamic playout delay for screenshare track (#2663)
  • Don't log dd invalid template index (#2664)
  • Do codec munging when munging RTP header. (#2665)
  • Connection quality LOST only if RTCP is also not available. (#2670)
  • Handle large jumps in RTCP sender report timestamp. (#2674)
  • Bump golang.org/x/net from 0.22.0 to 0.23.0 (#2673)
  • do not capture pointers in ops queue closures (#2675)
  • Fix SubParticipant twice when paticipant left (#2672)
  • use ttlcache (#2677)
  • Detach subscriber datachannel to save memory (#2680)
  • Clean up UpdateVideoLayers (#2685)
livekit - v1.4.3

Published by davidzhao over 1 year ago

Added

  • Send quality stats to prometheus. (#1708)
  • Support for disabling publishing codec on specific devices (#1728)
  • Add support for bypass_transcoding field in ingress (#1741)
  • Include await_start_signal for Web Egress (#1759)

Fixed

  • Handle time stamp increment across mute for A/V sync (#1705)
  • Additional A/V sync improvements (#1712 #1724 #1737 #1738 #1764)
  • Check egress status on UpdateStream failure (#1716)
  • Start signal relay sessions with the correct node (#1721)
  • Fix unwrap for out-of-order packet (#1729)
  • Fix dynacast for svc codec (#1742 #1743)
  • Ignore receiver reports that have a sequence number before first packet (#1745)
  • Fix node stats updates on Windows (#1748)
  • Avoid reconnect loop for unsupported downtrack (#1754)
  • Perform unsubscribe in parallel to avoid blocking (#1760)

Changed

  • Make signal close async. (#1711 #1722)
  • Don't add nack if it is already present in track codec (#1714)
  • Tweaked connection quality algorithm to be less sensitive to jitter (#1719)
  • Adjust sender report time stamp for slow publishers (#1740)
  • Split probe controller from StreamAllocator (#1751)
livekit - v1.1.0

Published by davidzhao over 2 years ago

[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)
livekit - v1.0.2

Published by davidzhao over 2 years ago

[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)
livekit - v1.0.0

Published by davidzhao over 2 years ago

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)
livekit - v0.15.7

Published by davidzhao over 2 years ago

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
livekit - v0.15.6

Published by davidzhao over 2 years ago

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
livekit - v0.15.5

Published by davidzhao over 2 years ago

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
livekit - v0.15.4

Published by davidzhao over 2 years ago

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
livekit - v0.15.3

Published by davidzhao over 2 years ago

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
livekit - v0.15.2

Published by davidzhao almost 3 years ago

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
livekit - v0.15.1

Published by davidzhao almost 3 years ago

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
livekit - v0.14.2

Published by davidzhao almost 3 years ago

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
livekit - v0.14.0 - Connection quality updates

Published by davidzhao almost 3 years ago

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.

livekit - v0.13.7

Published by davidzhao almost 3 years ago

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

livekit - v0.13.5

Published by davidzhao about 3 years ago

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
livekit - v0.13.4 - Simulcast hotfix

Published by davidzhao about 3 years ago

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

livekit - v0.13.3: Region aware routing and Opus DTX

Published by davidzhao about 3 years ago

Region aware routing

Introducing region-aware routing. When configured, LiveKit could route traffic to nodes that are closer to the end user. See multi region support #135 #141 (thanks @bekriebel)

Recording revamp

We've revamped our recording capabilities so that it's close to a GA release. Notable changes include RTMP simulcast support, and moving the pipelines to GStreamer from FFmpeg. Requires livekit-recorder v0.3.1 or higher #137

Opus DTX support

Opus DTX is enabled by default in this version, significantly reducing audio bandwidth utilization.

Other change & bugfixes

  • Added routing metrics to be exposed via Prometheus #139
  • Enable Opus FEC with publisher in the room when subscribers are experiencing high loss #142
  • Transceiver re-use: with clients supporting protocol 4, livekit will re-use existing transceivers to avoid it ballooning. #145
  • Support for Source attribute in TrackInfo #146
livekit - v0.13.1

Published by davidzhao about 3 years ago

  • Fixed NACK handling when simulcast is enabled 797d2607c45e6986a74ef23c98ab26183687aa6a
  • Fixed client rejoining in single-node mode cdb04248fb0af7c167d7c168142597d5d831d524
  • Upgraded to Pion v3.1.1
  • Room Metadata support #126
livekit - v0.13.0

Published by davidzhao about 3 years ago

Features

Protocol 3

support for protocol 3, where subscriber connection becomes the primary one. This speeds up session establishment for participants that aren't publishing.

Graceful termination

When running in multi-node, server will now terminate gracefully, allowing remaining rooms on the node to drain. #116

Other changes

  • Fixed mute/unmute on simulcasted tracks with less than 3 layers #114
  • Support incremental speaker updates #120
  • Webhooks for when recording is finished #125
Package Rankings
Top 8.17% on Proxy.golang.org
Badges
Extracted from project README
GitHub stars Slack community Twitter Follow GitHub release (latest SemVer) GitHub Workflow Status License