mirror of
https://github.com/livekit/livekit.git
synced 2026-06-07 02:21:58 +00:00
29e26931e0
* readme manager initial setup This PR makes the README ready to be managed by the readme manager. It adds custom comment tags to the readme, which are invisible when the README is rendered, but tell the readme manager where to insert and update content. * Update README.md * Update README.md
290 lines
11 KiB
Markdown
290 lines
11 KiB
Markdown
<!--BEGIN_BANNER_IMAGE--><!--END_BANNER_IMAGE-->
|
|
|
|
# LiveKit: Real-time video, audio and data for developers
|
|
|
|
<!--BEGIN_DESCRIPTION-->
|
|
[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.
|
|
<!--END_DESCRIPTION-->
|
|
|
|
LiveKit's server is written in Go, using the awesome [Pion WebRTC](https://github.com/pion/webrtc) implementation.
|
|
|
|
[](https://github.com/livekit/livekit/stargazers/)
|
|
[](https://livekit.io/join-slack)
|
|
[](https://twitter.com/livekitted)
|
|
[](https://github.com/livekit/livekit/releases/latest)
|
|
[](https://github.com/livekit/livekit/actions/workflows/buildtest.yaml)
|
|
[](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/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/)
|
|
- [webhooks](https://docs.livekit.io/guides/webhooks/)
|
|
- [distributed and multi-region](https://docs.livekit.io/deploy/distributed/)
|
|
|
|
## Documentation & Guides
|
|
|
|
https://docs.livekit.io
|
|
|
|
## Live Demos
|
|
|
|
- [LiveKit Meet](https://meet.livekit.io) ([source](https://github.com/livekit/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))
|
|
|
|
## SDKs & Tools
|
|
|
|
### Client SDKs
|
|
|
|
Client SDKs enable your frontend to include interactive, multi-user experiences.
|
|
|
|
<table>
|
|
<tr>
|
|
<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>
|
|
</th>
|
|
<th>Links</th>
|
|
</tr>
|
|
<!-- BEGIN Template
|
|
<tr>
|
|
<td>Language</td>
|
|
<td>
|
|
<a href="" target="_blank" rel="noopener noreferrer"></a>
|
|
</td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
END -->
|
|
<!-- JavaScript -->
|
|
<tr>
|
|
<td>JavaScript (TypeScript)</td>
|
|
<td>
|
|
<a href="https://github.com/livekit/client-sdk-js" target="_blank" rel="noopener noreferrer">client-sdk-js</a>
|
|
</td>
|
|
<td>
|
|
<a href="https://github.com/livekit/livekit-react" target="_blank" rel="noopener noreferrer">React</a>
|
|
</td>
|
|
<td>
|
|
<a href="https://docs.livekit.io/client-sdk-js/" target="_blank" rel="noopener noreferrer">docs</a>
|
|
|
|
|
<a href="https://github.com/livekit/client-sdk-js/tree/main/example" target="_blank" rel="noopener noreferrer">JS example</a>
|
|
|
|
|
<a href="https://github.com/livekit/client-sdk-js/tree/main/example" target="_blank" rel="noopener noreferrer">React example</a>
|
|
</td>
|
|
</tr>
|
|
<!-- Swift -->
|
|
<tr>
|
|
<td>Swift (iOS / MacOS)</td>
|
|
<td>
|
|
<a href="https://github.com/livekit/client-sdk-swift" target="_blank" rel="noopener noreferrer">client-sdk-swift</a>
|
|
</td>
|
|
<td>Swift UI</td>
|
|
<td>
|
|
<a href="https://docs.livekit.io/client-sdk-swift/" target="_blank" rel="noopener noreferrer">docs</a>
|
|
|
|
|
<a href="https://github.com/livekit/client-example-swift" target="_blank" rel="noopener noreferrer">example</a>
|
|
</td>
|
|
</tr>
|
|
<!-- Kotlin -->
|
|
<tr>
|
|
<td>Kotlin (Android)</td>
|
|
<td>
|
|
<a href="https://github.com/livekit/client-sdk-android" target="_blank" rel="noopener noreferrer">client-sdk-android</a>
|
|
</td>
|
|
<td>Compose</td>
|
|
<td>
|
|
<a href="https://docs.livekit.io/client-sdk-android/index.html" target="_blank" rel="noopener noreferrer">docs</a>
|
|
|
|
|
<a href="https://github.com/livekit/client-sdk-android/tree/main/sample-app/src/main/java/io/livekit/android/sample" target="_blank" rel="noopener noreferrer">example</a>
|
|
|
|
|
<a href="https://github.com/livekit/client-sdk-android/tree/main/sample-app-compose/src/main/java/io/livekit/android/composesample" target="_blank" rel="noopener noreferrer">Compose example</a>
|
|
</td>
|
|
</tr>
|
|
<!-- Flutter -->
|
|
<tr>
|
|
<td>Flutter (all platforms)</td>
|
|
<td>
|
|
<a href="https://github.com/livekit/client-sdk-flutter" target="_blank" rel="noopener noreferrer">client-sdk-flutter</a>
|
|
</td>
|
|
<td>native</td>
|
|
<td>
|
|
<a href="https://docs.livekit.io/client-sdk-flutter/" target="_blank" rel="noopener noreferrer">docs</a>
|
|
|
|
|
<a href="https://github.com/livekit/client-sdk-flutter/tree/main/example" target="_blank" rel="noopener noreferrer">example</a>
|
|
</td>
|
|
</tr>
|
|
<!-- Unity -->
|
|
<tr>
|
|
<td>Unity WebGL</td>
|
|
<td>
|
|
<a href="https://github.com/livekit/client-sdk-unity-web" target="_blank" rel="noopener noreferrer">client-sdk-unity-web</a>
|
|
</td>
|
|
<td></td>
|
|
<td>
|
|
<a href="https://livekit.github.io/client-sdk-unity-web/" target="_blank" rel="noopener noreferrer">docs</a>
|
|
</td>
|
|
</tr>
|
|
<!-- React Native -->
|
|
<tr>
|
|
<td>React Native (beta)</td>
|
|
<td>
|
|
<a href="https://github.com/livekit/client-sdk-react-native" target="_blank" rel="noopener noreferrer">client-sdk-react-native</a>
|
|
</td>
|
|
<td>native</td>
|
|
<td></td>
|
|
</tr>
|
|
<!-- Rust -->
|
|
<tr>
|
|
<td>Rust</td>
|
|
<td>
|
|
<a href="https://github.com/livekit/client-sdk-rust" target="_blank" rel="noopener noreferrer">client-sdk-rust</a>
|
|
</td>
|
|
<td></td>
|
|
<td></td>
|
|
</tr>
|
|
</table>
|
|
|
|
### 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,
|
|
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) | [tradablebits/livekit-server-sdk-python](https://github.com/tradablebits/livekit-server-sdk-python) | |
|
|
| PHP (community) | [agence104/livekit-server-sdk-php](https://github.com/agence104/livekit-server-sdk-php) | |
|
|
|
|
### Ecosystem & Tools
|
|
|
|
- [CLI](https://github.com/livekit/livekit-cli) - command line interface & load tester
|
|
- [Egress](https://github.com/livekit/egress) - export and record your rooms
|
|
- [Ingress](https://github.com/livekit/ingress) - ingest streams from RTMP / OBS Studio
|
|
- [Docker image](https://hub.docker.com/r/livekit/livekit-server)
|
|
- [Helm charts](https://github.com/livekit/livekit-helm)
|
|
|
|
## Install
|
|
|
|
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.
|
|
|
|
### 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/guides/access-tokens/). 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 \
|
|
--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
|
|
livekit-cli join-room \
|
|
--url ws://localhost:7880 \
|
|
--api-key devkey --api-secret secret \
|
|
--room my-first-room --identity bot-user1 \
|
|
--publish-demo
|
|
```
|
|
|
|
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.18+ is installed
|
|
- GOPATH/bin is in your PATH
|
|
|
|
Then 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.
|
|
|
|
<!--BEGIN_REPO_NAV--><!--END_REPO_NAV-->
|