* Set layer state to `stopped` on pause. Previously, on pause, the worker was let run and declare layer gone 1/2 a second (or whatever the stream tracker window is set for) later. But, when rapidly changing mute/unmute, the following cuold happen and layer changes may be missed - Available layers - 0, 1, 2 - Mute - Before layer gone detected, unumute. Because of this layer gone is not reported and available layers stay at 0, 1, 2. - Stream tracker is reset on unmute to enable quick detection of layer start. - If all layers start back up, no issues. - But, if the layers do not start back up, there is no layer start firing and the available layers are still 0, 1, 2 which is incorrect. * exempt handling when paused
LiveKit - Open source, high performance WebRTC infrastructure
LiveKit is an open source project that provides scalable, multi-user conferencing over WebRTC. It's designed to give you everything you need to build real time video/audio/data capabilities in your applications.
LiveKit is written in Go, using the awesome Pion WebRTC implementation.
Features
- Scalable, distributed WebRTC SFU (Selective Forwarding Unit)
- Modern, full-featured client SDKs
- Built for production - JWT authentication and server APIs
- Robust networking & connectivity. UDP/TCP/TURN
- Easy to deploy - single binary, docker & kubernetes
- Advanced features - speaker detection, simulcast, selective subscription, moderation APIs, and webhooks.
Documentation & Guides
Docs & Guides at: https://docs.livekit.io
Try it live
Head to our playground and give it a spin. Build a Zoom-like conferencing app in under 100 lines of code!
SDKs & Tools
Client SDKs:
- JavaScript (docs)
- React
- iOS & MacOS - Swift (docs)
- Android - Kotlin (docs)
- Flutter (docs)
- Unity (WebGL) (docs demo)
- React Native
Server SDKs:
Tools:
- Egress: export and record your rooms
- livekit-cli: command line admin & tools
- livekit-load-tester: load testing
- Docker image
- Helm charts
Quickstart
Generate config file and keys
docker run --rm -v$PWD:/output livekit/generate --local
The above command generates a livekit.yaml you can use to start LiveKit. It'll contain an API key/secret pair you can
use with your LiveKit install.
Starting with docker
docker run --rm -p 7880:7880 \
-p 7881:7881 \
-p 7882:7882/udp \
-v $PWD/livekit.yaml:/livekit.yaml \
livekit/livekit-server \
--config /livekit.yaml \
--node-ip <machine-ip>
When running with docker, --node-ip needs to be set to your machine's IP address. If the service will be exposed to
the public Internet, this should the machine's public IP.
Test with example app
Head over to the example app and enter the generated token to connect to your LiveKit server. This app is built with our React SDK.
Once connected, your video and audio are now published to your new LiveKit instance!
Generating access tokens (JWT)
To add more users to a room, you'll have to create a token for each participant. Learn more about access tokens.
livekit-server provides a convenient sub-command to create a development token. This token has an expiration of a
month, which is useful for development and testing, but not appropriate for production use.
docker run --rm -e LIVEKIT_KEYS="<api-key>: <api-secret>" \
livekit/livekit-server create-join-token \
--room "<room-name>" \
--identity "<participant-identity>"
Deploying to server
Deployment Docs: https://docs.livekit.io/deploy/
Single node server
Use our deploy config generator to set up a single node deployment with automatic TLS termination and built-in TURN.
It includes a cloud-init/setup script that's supported by most cloud environments.
docker run --rm -it -v$PWD:/output livekit/generate
Kubernetes
We publish a helm chart that helps you to set up a cluster with high availability. For detailed instructions, see Kubernetes guide
Testing your deployment
Use the connection tester to ensure your installation is set up properly for user traffic.
Building from source
Pre-requisites:
- Go 1.15+ is installed
- GOPATH/bin is in your PATH
Then run
git clone https://github.com/livekit/livekit
cd livekit
./bootstrap.sh
mage
Contributing
We welcome your contributions to make LiveKit better! Please join us on Slack to discuss your ideas and/or submit PRs.
License
LiveKit server is licensed under Apache License v2.0.