Skip to content

Commit

Permalink
Merge remote tag 'v1.8.3' into openvidu/main
Browse files Browse the repository at this point in the history
# Conflicts:
#	go.mod
#	go.sum
#	pkg/routing/redisrouter.go
#	pkg/rtc/participant.go
#	pkg/service/server.go
#	pkg/telemetry/analyticsservice.go
  • Loading branch information
pabloFuente committed Jan 7, 2025
2 parents 939b911 + 4016e3d commit 74e7838
Show file tree
Hide file tree
Showing 164 changed files with 9,678 additions and 4,235 deletions.
61 changes: 61 additions & 0 deletions CHANGELOG
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,67 @@

This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [1.8.3] - 2025-01-07

### Added

- Allow requesting a dialtone during call transfer (#3122)
- Handle room configuration that's set in the grant itself (#3120)
- Update ICE to pick up accepting use-candidate unconditionally for ICE lite agents (#3150)
- auto create rooms during create agent dispatch api request (#3158)
- Annotate SIP errors with Twirp codes. (#3161)
- TWCC based congestion control (#3165 #3234 #3235 #3244 #3245 #3250 #3251 #3253 #3254 #3256 #3262 #3282)
- Loss based congestion signal detector. (#3168 #3169)
- Fix header size calculation in stats. (#3171)
- add per message deflate to signal ws (#3174)
- Add ResyncDownTracks API that can be used to resync all down tracks on (#3185)
- One shot signalling mode (#3188 #3192 #3194 #3223)
- Server side metrics (#3198)
- Add datastream packet type handling (#3210)
- Support SIP list filters. (#3240)
- Add RTX to downstream (#3247)
- Handle REMB on RTX RTCP (#3257)
- Thottle the publisher data channel sending when subscriber is slow (#3255 #3265 #3281)

### Fixed

- avoids NaN (#3119)
- reduce retransmit by seeding duplicate packets and bytes. (#3124)
- don't return video/rtx to client (#3142)
- ignore unexported fields in yaml lint (#3145)
- Fix incorrect computation of SecondsSinceNodeStatsUpdate (#3172)
- Attempt to fix missing participant left webhook. (#3173)
- Set down track connected flag in one-shot-signalling mode. (#3191)
- Don't SetCodecPreferences for video transceiver (#3249)
- Disable av1 for safari (#3284)
- fix completed job status updates causing workers to reconnect (#3294)

### Changed

- Display both pairs on selected candidate pair change (#3133)
- Maintain RTT marker for calculations. (#3139)
- Consolidate operations on LocalNode. (#3140)
- Use int64 nanoseconds and reduce conversion in a few places (#3159)
- De-centralize some configs to where they are used. (#3162)
- Split out audio level config. (#3163)
- Use int64 nanoseconds and reduce conversion in a few places (#3159)
- Reduce lock scope. (#3167)
- Clean up forwardRTP function a bit. (#3177)
- StreamAllocator (congestion controller) refactor (#3180)
- convert psprc error to http code in rtc service failure response (#3187)
- skip http request logging when the client aborts the request (#3195)
- Do not treat data publisher as publisher. (#3204)
- Publish data and signal bytes once every 30 seconds. (#3212)
- upgrade to pion/webrtc v4 (#3213)
- Don't wait rtp packet to fire track (#3246)
- Keep negotiated codec parameters in Downtrack.Bind (#3271)
- Structured logging of ParticipantInit (#3279)
- Start stream allocator after creating peer connection. (#3283)
- Reduce memory allocation in WritePaddingRTP / WriteProbePackets (#3288)
- add room/participant to logger context for SIP APIs (#3290)
- vp8 temporal layer selection with dependency descriptor (#3302)
- Use contiguous groups to determine queuing region. (#3308)

## [1.8.0] - 2024-10-18

### Added
Expand Down
2 changes: 1 addition & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
# See the License for the specific language governing permissions and
# limitations under the License.

FROM golang:1.22-alpine as builder
FROM golang:1.23-alpine as builder

ARG TARGETPLATFORM
ARG TARGETARCH
Expand Down
92 changes: 48 additions & 44 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,37 +24,38 @@ LiveKit's server is written in Go, using the awesome [Pion WebRTC](https://githu

## Features

- Scalable, distributed WebRTC SFU (Selective Forwarding Unit)
- Modern, full-featured client SDKs
- Built for production, supports JWT authentication
- Robust networking and connectivity, UDP/TCP/TURN
- Easy to deploy: single binary, Docker or Kubernetes
- Advanced features including:
- [speaker detection](https://docs.livekit.io/guides/room/receive/#speaker-detection)
- [simulcast](https://docs.livekit.io/guides/room/publish/#video-simulcast)
- [end-to-end optimizations](https://blog.livekit.io/livekit-one-dot-zero/)
- [selective subscription](https://docs.livekit.io/guides/room/receive/#selective-subscription)
- [moderation APIs](https://docs.livekit.io/guides/server-api/)
- end-to-end encryption
- SVC codecs (VP9, AV1)
- [webhooks](https://docs.livekit.io/guides/webhooks/)
- [distributed and multi-region](https://docs.livekit.io/deploy/distributed/)
- Scalable, distributed WebRTC SFU (Selective Forwarding Unit)
- Modern, full-featured client SDKs
- Built for production, supports JWT authentication
- Robust networking and connectivity, UDP/TCP/TURN
- Easy to deploy: single binary, Docker or Kubernetes
- Advanced features including:
- [speaker detection](https://docs.livekit.io/home/client/tracks/subscribe/#speaker-detection)
- [simulcast](https://docs.livekit.io/home/client/tracks/publish/#video-simulcast)
- [end-to-end optimizations](https://blog.livekit.io/livekit-one-dot-zero/)
- [selective subscription](https://docs.livekit.io/home/client/tracks/subscribe/#selective-subscription)
- [moderation APIs](https://docs.livekit.io/home/server/managing-participants/)
- end-to-end encryption
- SVC codecs (VP9, AV1)
- [webhooks](https://docs.livekit.io/home/server/webhooks/)
- [distributed and multi-region](https://docs.livekit.io/home/self-hosting/distributed/)

## Documentation & Guides

https://docs.livekit.io

## Live Demos

- [LiveKit Meet](https://meet.livekit.io) ([source](https://github.com/livekit-examples/meet))
- [Spatial Audio](https://spatial-audio-demo.livekit.io/) ([source](https://github.com/livekit-examples/spatial-audio))
- Livestreaming from OBS Studio ([source](https://github.com/livekit-examples/livestream))
- [AI voice assistant using ChatGPT](https://livekit.io/kitt) ([source](https://github.com/livekit-examples/kitt))
- [LiveKit Meet](https://meet.livekit.io) ([source](https://github.com/livekit-examples/meet))
- [Spatial Audio](https://spatial-audio-demo.livekit.io/) ([source](https://github.com/livekit-examples/spatial-audio))
- Livestreaming from OBS Studio ([source](https://github.com/livekit-examples/livestream))
- [AI voice assistant using ChatGPT](https://livekit.io/kitt) ([source](https://github.com/livekit-examples/kitt))

## Ecosystem
- [Agents](https://github.com/livekit/agents): build real-time multimodal AI applications with programmable backend participants
- [Egress](https://github.com/livekit/egress): record or multi-stream rooms and export individual tracks
- [Ingress](https://github.com/livekit/ingress): ingest streams from external sources like RTMP, WHIP, HLS, or OBS Studio

- [Agents](https://github.com/livekit/agents): build real-time multimodal AI applications with programmable backend participants
- [Egress](https://github.com/livekit/egress): record or multi-stream rooms and export individual tracks
- [Ingress](https://github.com/livekit/ingress): ingest streams from external sources like RTMP, WHIP, HLS, or OBS Studio

## SDKs & Tools

Expand All @@ -67,7 +68,7 @@ Client SDKs enable your frontend to include interactive, multi-user experiences.
<th>Language</th>
<th>Repo</th>
<th>
<a href="https://docs.livekit.io/guides/room/events/#declarative-ui" target="_blank" rel="noopener noreferrer">Declarative UI</a>
<a href="https://docs.livekit.io/home/client/events/#declarative-ui" target="_blank" rel="noopener noreferrer">Declarative UI</a>
</th>
<th>Links</th>
</tr>
Expand Down Expand Up @@ -172,25 +173,25 @@ Client SDKs enable your frontend to include interactive, multi-user experiences.

### Server SDKs

Server SDKs enable your backend to generate [access tokens](https://docs.livekit.io/guides/access-tokens/),
call [server APIs](https://docs.livekit.io/guides/server-api/), and
receive [webhooks](https://docs.livekit.io/guides/webhooks/). In addition, the Go SDK includes client capabilities,
Server SDKs enable your backend to generate [access tokens](https://docs.livekit.io/home/get-started/authentication/),
call [server APIs](https://docs.livekit.io/reference/server/server-apis/), and
receive [webhooks](https://docs.livekit.io/home/server/webhooks/). In addition, the Go SDK includes client capabilities,
enabling you to build automations that behave like end-users.

| Language | Repo | Docs |
|:------------------------|:----------------------------------------------------------------------------------------------------|:------------------------------------------------------------|
| Go | [server-sdk-go](https://github.com/livekit/server-sdk-go) | [docs](https://pkg.go.dev/github.com/livekit/server-sdk-go) |
| JavaScript (TypeScript) | [server-sdk-js](https://github.com/livekit/server-sdk-js) | [docs](https://docs.livekit.io/server-sdk-js/) |
| Ruby | [server-sdk-ruby](https://github.com/livekit/server-sdk-ruby) | |
| Java (Kotlin) | [server-sdk-kotlin](https://github.com/livekit/server-sdk-kotlin) | |
| Python (community) | [python-sdks](https://github.com/livekit/python-sdks) | |
| PHP (community) | [agence104/livekit-server-sdk-php](https://github.com/agence104/livekit-server-sdk-php) | |
| Language | Repo | Docs |
| :---------------------- | :-------------------------------------------------------------------------------------- | :---------------------------------------------------------- |
| Go | [server-sdk-go](https://github.com/livekit/server-sdk-go) | [docs](https://pkg.go.dev/github.com/livekit/server-sdk-go) |
| JavaScript (TypeScript) | [server-sdk-js](https://github.com/livekit/server-sdk-js) | [docs](https://docs.livekit.io/server-sdk-js/) |
| Ruby | [server-sdk-ruby](https://github.com/livekit/server-sdk-ruby) | |
| Java (Kotlin) | [server-sdk-kotlin](https://github.com/livekit/server-sdk-kotlin) | |
| Python (community) | [python-sdks](https://github.com/livekit/python-sdks) | |
| PHP (community) | [agence104/livekit-server-sdk-php](https://github.com/agence104/livekit-server-sdk-php) | |

### Tools

- [CLI](https://github.com/livekit/livekit-cli) - command line interface & load tester
- [Docker image](https://hub.docker.com/r/livekit/livekit-server)
- [Helm charts](https://github.com/livekit/livekit-helm)
- [CLI](https://github.com/livekit/livekit-cli) - command line interface & load tester
- [Docker image](https://hub.docker.com/r/livekit/livekit-server)
- [Helm charts](https://github.com/livekit/livekit-helm)

## Install

Expand Down Expand Up @@ -231,12 +232,12 @@ To customize your setup for production, refer to our [deployment docs](https://d

### Creating access token

A user connecting to a LiveKit room requires an [access token](https://docs.livekit.io/guides/access-tokens/). Access
A user connecting to a LiveKit room requires an [access token](https://docs.livekit.io/home/get-started/authentication/#creating-a-token). Access
tokens (JWT) encode the user's identity and the room permissions they've been granted. You can generate a token with our
CLI:

```shell
livekit-cli create-token \
lk token create \
--api-key devkey --api-secret secret \
--join --room my-first-room --identity user1 \
--valid-for 24h
Expand All @@ -252,11 +253,12 @@ Once connected, your video and audio are now being published to your new LiveKit
### Simulating a test publisher

```shell
livekit-cli join-room \
lk room join \
--url ws://localhost:7880 \
--api-key devkey --api-secret secret \
--room my-first-room --identity bot-user1 \
--publish-demo
--identity bot-user1 \
--publish-demo \
my-first-room
```

This command publishes a looped demo video to a room. Due to how the video clip was encoded (keyframes every 3s),
Expand All @@ -280,8 +282,8 @@ Read our [deployment docs](https://docs.livekit.io/deploy/) for more information

Pre-requisites:

- Go 1.22+ is installed
- GOPATH/bin is in your PATH
- Go 1.23+ is installed
- GOPATH/bin is in your PATH

Then run

Expand All @@ -302,7 +304,9 @@ We welcome your contributions toward improving LiveKit! Please join us
LiveKit server is licensed under Apache License v2.0.

<!--BEGIN_REPO_NAV-->

<br/><table>

<thead><tr><th colspan="2">LiveKit Ecosystem</th></tr></thead>
<tbody>
<tr><td>Realtime SDKs</td><td><a href="https://github.com/livekit/components-js">React Components</a> · <a href="https://github.com/livekit/client-sdk-js">Browser</a> · <a href="https://github.com/livekit/components-swift">Swift Components</a> · <a href="https://github.com/livekit/client-sdk-swift">iOS/macOS/visionOS</a> · <a href="https://github.com/livekit/client-sdk-android">Android</a> · <a href="https://github.com/livekit/client-sdk-flutter">Flutter</a> · <a href="https://github.com/livekit/client-sdk-react-native">React Native</a> · <a href="https://github.com/livekit/rust-sdks">Rust</a> · <a href="https://github.com/livekit/node-sdks">Node.js</a> · <a href="https://github.com/livekit/python-sdks">Python</a> · <a href="https://github.com/livekit/client-sdk-unity-web">Unity (web)</a> · <a href="https://github.com/livekit/client-sdk-unity">Unity (beta)</a></td></tr><tr></tr>
Expand Down
2 changes: 1 addition & 1 deletion cmd/server/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -276,7 +276,7 @@ func startServer(c *cli.Context) error {
return err
}

if err := prometheus.Init(currentNode.Id, currentNode.Type); err != nil {
if err := prometheus.Init(string(currentNode.NodeID()), currentNode.NodeType()); err != nil {
return err
}

Expand Down
Loading

0 comments on commit 74e7838

Please sign in to comment.