9.4 KiB
Настройки
Матрица совместимости
| 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 (попробуйте 8.8.8.8:443 если есть DNS-лики или блокировки) |
Прямой режим
При использовании -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 |
Количество комнат |
./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 (рекомендуется - максимальная скорость, без бана)
# сгенерировать 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 аутентификация
# клиент с логином и паролем на прокси
./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
Использование:
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
# сервер
./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
# сервер
./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 (крайний случай)
# сервер
./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
Подробнее про запуск: Быстрый старт · Мануальная сборка
URI-формат для клиентов: uri.md · Формат подписки
