mirror of
https://github.com/openlibrecommunity/olcrtc.git
synced 2026-07-03 14:05:39 +02:00
256 lines
9.3 KiB
Markdown
256 lines
9.3 KiB
Markdown
<div align="center">
|
|
|
|
<img src="https://github.com/openlibrecommunity/material/blob/master/olcrtc.png" width="250" height="250">
|
|
|
|

|
|

|
|
|
|
</div>
|
|
|
|
|
|
# Настройки
|
|
|
|
## Матрица совместимости
|
|
|
|
| Transport | telemost | jazz | wbstream |
|
|
|-----------|:--------:|:----:|:--------:|
|
|
| datachannel | - | * | + |
|
|
| vp8channel | + | + | + |
|
|
| seichannel | - | + | + |
|
|
| videochannel | + | + | + |
|
|
|
|
**Легенда:**
|
|
- `+` - работает
|
|
- `-` - не поддерживается
|
|
- `*` - работает, но не желательно
|
|
|
|
**Рекомендуемая комбинация: `wbstream + datachannel`** - максимальная скорость, минимальный пинг.
|
|
|
|
Скорость по убыванию: `datachannel` > `vp8channel` > `seichannel` > `videochannel`
|
|
|
|
---
|
|
|
|
## Обязательные флаги
|
|
|
|
| Флаг | Что вводить |
|
|
|------|-------------|
|
|
| `-mode` | `srv` на сервере, `cnc` на клиенте, `gen` для генерации Room ID |
|
|
| `-auth` | `telemost`, `jazz`, `wbstream`, `none` |
|
|
| `-transport` | `datachannel`, `vp8channel`, `seichannel` или `videochannel` |
|
|
| `-id` | Room ID |
|
|
| `-client-id` | Общий идентификатор клиента. Должен совпадать на сервере и клиенте. Один client-id может держать бесконечное количество соединений, но SFU ограничивает полосу на участника - оптимально 1 client-id = 1 пользователь (не обязательно) |
|
|
| `-key` | Ключ шифрования hex 64 символа. Генерация: `openssl rand -hex 32` |
|
|
| `-link` | Всегда `direct` |
|
|
| `-data` | Всегда `data` |
|
|
| `-dns` | DNS-сервер, например `1.1.1.1:53` |
|
|
|
|
---
|
|
|
|
## Прямой режим
|
|
|
|
При использовании `-auth none` флаги `-engine`, `-url` и `-token` обязательны.
|
|
Для остальных провайдеров они заполняются автоматически, но их можно переопределить.
|
|
|
|
| Флаг | Описание |
|
|
|------|----------|
|
|
| `-engine` | `livekit`, `goolom` или `salutejazz` |
|
|
| `-url` | WebSocket URL SFU |
|
|
| `-token` | Токен доступа |
|
|
|
|
## Необязательные флаги
|
|
|
|
| Флаг | Описание |
|
|
|------|----------|
|
|
| `--debug` | Подробные логи соединений |
|
|
|
|
---
|
|
|
|
## -mode gen
|
|
|
|
Генерирует Room ID заранее, не запуская сервер. Поддерживается для `jazz` и `wbstream`.
|
|
|
|
**Обязательные флаги:**
|
|
|
|
| Флаг | Описание |
|
|
|------|----------|
|
|
| `-auth` | `jazz` или `wbstream` |
|
|
| `-dns` | DNS-сервер |
|
|
| `-amount` | Количество комнат |
|
|
|
|
```sh
|
|
./olcrtc -mode gen -auth wbstream -dns 1.1.1.1:53 -amount 1
|
|
# abc123xyz
|
|
|
|
./olcrtc -mode gen -auth jazz -dns 1.1.1.1:53 -amount 3
|
|
# room-id-1
|
|
# room-id-2
|
|
# room-id-3
|
|
```
|
|
|
|
---
|
|
|
|
## Флаги только для сервера (`-mode srv`)
|
|
|
|
| Флаг | Описание |
|
|
|------|----------|
|
|
| `-socks-proxy` | Адрес SOCKS5-прокси для исходящего трафика сервера |
|
|
| `-socks-proxy-port` | Порт этого прокси |
|
|
|
|
---
|
|
|
|
## Флаги только для клиента (`-mode cnc`)
|
|
|
|
| Флаг | Описание | По умолчанию |
|
|
|------|----------|:------------:|
|
|
| `-socks-host` | На каком адресе поднять SOCKS5 | `127.0.0.1` |
|
|
| `-socks-port` | На каком порту поднять SOCKS5 | `1080` |
|
|
| `-socks-user` | Логин для входящих SOCKS5-подключений (необязательно) | - |
|
|
| `-socks-pass` | Пароль для входящих SOCKS5-подключений (необязательно) | - |
|
|
|
|
Если `-socks-user` не задан - аутентификация отключена (любой локальный клиент может подключиться).
|
|
Если задан - клиент принимает только подключения с правильным логином и паролем (RFC 1929).
|
|
|
|
---
|
|
|
|
## datachannel
|
|
|
|
Дополнительных флагов нет - всё по умолчанию.
|
|
|
|
---
|
|
|
|
## vp8channel
|
|
|
|
**Рекомендуется: `-vp8-fps 60 -vp8-batch 64`** (числа лучше чётные, больший batch = выше скорость)
|
|
|
|
| Флаг | Описание | По умолчанию |
|
|
|------|----------|:------------:|
|
|
| `-vp8-fps` | FPS VP8 потока | `25` |
|
|
| `-vp8-batch` | Кадров за тик | `1` |
|
|
|
|
---
|
|
|
|
## seichannel
|
|
|
|
**Рекомендуется: `-fps 60 -batch 64 -frag 900 -ack-ms 2000`**
|
|
|
|
| Флаг | Описание | По умолчанию |
|
|
|------|----------|:------------:|
|
|
| `-fps` | FPS H264 потока | `60` |
|
|
| `-batch` | Кадров за тик | `64` |
|
|
| `-frag` | Размер фрагмента в байтах | `900` |
|
|
| `-ack-ms` | Таймаут ACK в миллисекундах | `2000` |
|
|
|
|
---
|
|
|
|
## videochannel
|
|
|
|
**Рекомендуется: `-video-codec qrcode -video-w 1080 -video-h 1080 -video-fps 60 -video-bitrate 5000k -video-hw none`**
|
|
|
|
| Флаг | Описание | По умолчанию |
|
|
|------|----------|:------------:|
|
|
| `-video-codec` | `qrcode` или `tile` | `qrcode` |
|
|
| `-video-w` | Ширина в пикселях | `1920` |
|
|
| `-video-h` | Высота в пикселях | `1080` |
|
|
| `-video-fps` | FPS | `30` |
|
|
| `-video-bitrate` | Битрейт, например `2M` или `5000k` | `2M` |
|
|
| `-video-hw` | Аппаратное ускорение: `none` или `nvenc` | `none` |
|
|
| `-video-qr-recovery` | Коррекция ошибок QR: `low` / `medium` / `high` / `highest` | `low` |
|
|
| `-video-qr-size` | Размер фрагмента QR в байтах, `0` = авто | `0` |
|
|
| `-video-tile-module` | Размер тайла в пикселях 1..270 (только `tile`) | `4` |
|
|
| `-video-tile-rs` | Reed-Solomon паритет % 0..200 (только `tile`) | `20` |
|
|
| `-ffmpeg` | Путь к исполняемому файлу ffmpeg | `ffmpeg` |
|
|
|
|
Для codec `tile` нужно точно `1080x1080`.
|
|
|
|
---
|
|
|
|
## Готовые команды
|
|
|
|
### wbstream + datachannel (рекомендуется - максимальная скорость, без бана)
|
|
|
|
```sh
|
|
# сгенерировать room ID
|
|
ROOM_ID=$(./olcrtc -mode gen -auth wbstream -dns 1.1.1.1:53 -amount 1 -data data)
|
|
|
|
# сервер
|
|
./olcrtc -mode srv -auth wbstream -transport datachannel \
|
|
-id "$ROOM_ID" -client-id <client-id> -key <hex-key> -link direct -data data -dns 1.1.1.1:53
|
|
|
|
# клиент
|
|
./olcrtc -mode cnc -auth wbstream -transport datachannel \
|
|
-id "$ROOM_ID" -client-id <client-id> -key <hex-key> -link direct -data data -dns 1.1.1.1:53 \
|
|
-socks-host 127.0.0.1 -socks-port 1080
|
|
```
|
|
|
|
### wbstream + datachannel + SOCKS5 аутентификация
|
|
|
|
```sh
|
|
# клиент с логином и паролем на прокси
|
|
./olcrtc -mode cnc -auth wbstream -transport datachannel \
|
|
-id "$ROOM_ID" -client-id <client-id> -key <hex-key> -link direct -data data -dns 1.1.1.1:53 \
|
|
-socks-host 127.0.0.1 -socks-port 1080 \
|
|
-socks-user myuser -socks-pass mypass
|
|
```
|
|
|
|
Использование:
|
|
```sh
|
|
curl --socks5-hostname myuser:mypass@127.0.0.1:1080 https://icanhazip.com
|
|
# или
|
|
export all_proxy=socks5h://myuser:mypass@127.0.0.1:1080
|
|
```
|
|
|
|
---
|
|
|
|
### telemost + vp8channel
|
|
|
|
```sh
|
|
# сервер
|
|
./olcrtc -mode srv -auth telemost -transport vp8channel \
|
|
-id <room-id> -client-id <client-id> -key <hex-key> -link direct -data data \
|
|
-vp8-fps 60 -vp8-batch 64
|
|
|
|
# клиент
|
|
./olcrtc -mode cnc -auth telemost -transport vp8channel \
|
|
-id <room-id> -client-id <client-id> -key <hex-key> -link direct -data data \
|
|
-socks-host 127.0.0.1 -socks-port 1080 \
|
|
-vp8-fps 60 -vp8-batch 64
|
|
```
|
|
|
|
### telemost + seichannel
|
|
|
|
```sh
|
|
# сервер
|
|
./olcrtc -mode srv -auth telemost -transport seichannel \
|
|
-id <room-id> -client-id <client-id> -key <hex-key> -link direct -data data \
|
|
-fps 60 -batch 64 -frag 900 -ack-ms 2000
|
|
|
|
# клиент
|
|
./olcrtc -mode cnc -auth telemost -transport seichannel \
|
|
-id <room-id> -client-id <client-id> -key <hex-key> -link direct -data data \
|
|
-socks-host 127.0.0.1 -socks-port 1080 \
|
|
-fps 60 -batch 64 -frag 900 -ack-ms 2000
|
|
```
|
|
|
|
### telemost + videochannel (крайний случай)
|
|
|
|
```sh
|
|
# сервер
|
|
./olcrtc -mode srv -auth telemost -transport videochannel \
|
|
-id <room-id> -client-id <client-id> -key <hex-key> -link direct -data data \
|
|
-video-codec qrcode -video-w 1080 -video-h 1080 \
|
|
-video-fps 60 -video-bitrate 5000k -video-hw none
|
|
|
|
# клиент
|
|
./olcrtc -mode cnc -auth telemost -transport videochannel \
|
|
-id <room-id> -client-id <client-id> -key <hex-key> -link direct -data data \
|
|
-socks-host 127.0.0.1 -socks-port 1080 \
|
|
-video-codec qrcode -video-w 1080 -video-h 1080 \
|
|
-video-fps 60 -video-bitrate 5000k -video-hw none
|
|
```
|
|
|
|
---
|
|
|
|
Подробнее про запуск: [Быстрый старт](fast.md) · [Мануальная сборка](manual.md)
|
|
|
|
URI-формат для клиентов: [uri.md](uri.md) · [Формат подписки](sub.md)
|