Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/livekit/livekit
End-to-end stack for WebRTC. SFU media server and SDKs.
https://github.com/livekit/livekit
golang media-server sfu video webrtc
Last synced: 2 days ago
JSON representation
End-to-end stack for WebRTC. SFU media server and SDKs.
- Host: GitHub
- URL: https://github.com/livekit/livekit
- Owner: livekit
- License: apache-2.0
- Created: 2020-09-30T06:49:46.000Z (about 4 years ago)
- Default Branch: master
- Last Pushed: 2024-10-28T19:10:58.000Z (about 1 month ago)
- Last Synced: 2024-10-29T15:45:08.106Z (about 1 month ago)
- Topics: golang, media-server, sfu, video, webrtc
- Language: Go
- Homepage: https://docs.livekit.io
- Size: 10 MB
- Stars: 10,336
- Watchers: 127
- Forks: 856
- Open Issues: 109
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG
- License: LICENSE
Awesome Lists containing this project
- awesome-github-repos - livekit/livekit - End-to-end stack for WebRTC. SFU media server and SDKs. (Go)
- awesome-repositories - livekit/livekit - End-to-end stack for WebRTC. SFU media server and SDKs. (Go)
- awesome-webrtc - livekit - End-to-end stack for WebRTC. SFU media server and SDKs. (Projects / WebRTC Server)
- StarryDivineSky - livekit/livekit
README
# LiveKit: Real-time video, audio and data for developers
[LiveKit](https://livekit.io) is an open source project that provides scalable, multi-user conferencing based on WebRTC.
It's designed to provide everything you need to build real-time video audio data capabilities in your applications.LiveKit's server is written in Go, using the awesome [Pion WebRTC](https://github.com/pion/webrtc) implementation.
[![GitHub stars](https://img.shields.io/github/stars/livekit/livekit?style=social&label=Star&maxAge=2592000)](https://github.com/livekit/livekit/stargazers/)
[![Slack community](https://img.shields.io/endpoint?url=https%3A%2F%2Flivekit.io%2Fbadges%2Fslack)](https://livekit.io/join-slack)
[![Twitter Follow](https://img.shields.io/twitter/follow/livekit)](https://twitter.com/livekit)
[![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/livekit/livekit)](https://github.com/livekit/livekit/releases/latest)
[![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/livekit/livekit/buildtest.yaml?branch=master)](https://github.com/livekit/livekit/actions/workflows/buildtest.yaml)
[![License](https://img.shields.io/github/license/livekit/livekit)](https://github.com/livekit/livekit/blob/master/LICENSE)## 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/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))## 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## SDKs & Tools
### Client SDKs
Client SDKs enable your frontend to include interactive, multi-user experiences.
Language
Repo
Declarative UI
Links
JavaScript (TypeScript)
client-sdk-js
React
docs
|
JS example
|
React example
Swift (iOS / MacOS)
client-sdk-swift
Swift UI
docs
|
example
Kotlin (Android)
client-sdk-android
Compose
docs
|
example
|
Compose example
Flutter (all platforms)
client-sdk-flutter
native
docs
|
example
Unity WebGL
client-sdk-unity-web
docs
React Native (beta)
client-sdk-react-native
native
Rust
client-sdk-rust
### Server SDKs
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) | |### 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)## Install
> [!TIP]
> We recommend installing [LiveKit CLI](https://github.com/livekit/livekit-cli) along with the server. It lets you access
> server APIs, create tokens, and generate test traffic.The following will install LiveKit's media server:
### MacOS
```shell
brew install livekit
```### Linux
```shell
curl -sSL https://get.livekit.io | bash
```### Windows
Download the [latest release here](https://github.com/livekit/livekit/releases/latest)
## Getting Started
### Starting LiveKit
Start LiveKit in development mode by running `livekit-server --dev`. It'll use a placeholder API key/secret pair.
```
API Key: devkey
API Secret: secret
```To customize your setup for production, refer to our [deployment docs](https://docs.livekit.io/deploy/)
### Creating access token
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
lk token create \
--api-key devkey --api-secret secret \
--join --room my-first-room --identity user1 \
--valid-for 24h
```### Test with example app
Head over to our [example app](https://example.livekit.io) and enter a generated token to connect to your LiveKit
server. This app is built with our [React SDK](https://github.com/livekit/livekit-react).Once connected, your video and audio are now being published to your new LiveKit instance!
### Simulating a test publisher
```shell
lk room join \
--url ws://localhost:7880 \
--api-key devkey --api-secret secret \
--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),
there's a slight delay before the browser has sufficient data to begin rendering frames. This is an artifact of the
simulation.## Deployment
### Use LiveKit Cloud
LiveKit Cloud is the fastest and most reliable way to run LiveKit. Every project gets free monthly bandwidth and
transcoding credits.Sign up for [LiveKit Cloud](https://cloud.livekit.io/).
### Self-host
Read our [deployment docs](https://docs.livekit.io/deploy/) for more information.
## Building from source
Pre-requisites:
- Go 1.23+ is installed
- GOPATH/bin is in your PATHThen run
```shell
git clone https://github.com/livekit/livekit
cd livekit
./bootstrap.sh
mage
```## Contributing
We welcome your contributions toward improving LiveKit! Please join us
[on Slack](http://livekit.io/join-slack) to discuss your ideas and/or PRs.## License
LiveKit server is licensed under Apache License v2.0.
LiveKit Ecosystem
Realtime SDKsReact Components · Browser · Swift Components · iOS/macOS/visionOS · Android · Flutter · React Native · Rust · Node.js · Python · Unity (web) · Unity (beta)
Server APIsNode.js · Golang · Ruby · Java/Kotlin · Python · Rust · PHP (community)
Agents FrameworksPython · Playground
ServicesLiveKit server · Egress · Ingress · SIP
ResourcesDocs · Example apps · Cloud · Self-hosting · CLI