Skip to content

Встановлення venc на камеру

Ця інструкція описує, як встановити waybeam venc на камеру з чіпом SigmaStar (Infinity6E / Infinity6C) та налаштувати його для роботи з WFB-ng замість Majestic.

Що таке venc?

waybeam venc — це автономний відеоенкодер, який повністю замінює Majestic. Він забезпечує нижчу затримку, повний HTTP API для налаштування в реальному часі, та нативну інтеграцію з WFB-ng через Unix-сокет.


Вимоги

Компонент Деталі
Камера (VTX) SSC338Q (Infinity6E) або Infinity6C з OpenIPC прошивкою
Сенсор IMX335, IMX415, GC4653 або інший підтримуваний
Прошивка OpenIPC (Lite або FPV)
Доступ SSH до камери (root / 12345)
Мережа Ethernet або WiFi для передачі файлів

Крок 1: Підключення до камери через SSH

Підключіться до камери по SSH. IP-адреса камери зазвичай 192.168.1.10 або визначається через роутер.

Windows
  1. Завантажте та встановіть PuTTY
  2. Введіть IP-адресу камери у полі «Host Name»
  3. Порт: 22, тип: SSH
  4. Натисніть «Open»
  5. Логін: root, пароль: 12345
Mac / Linux
ssh root@192.168.1.10

Пароль: 12345


Крок 2: Зупинка Majestic

Перед встановленням venc необхідно зупинити та вимкнути Majestic:

# Зупинити Majestic
killall majestic 2>/dev/null

# Вимкнути автозапуск Majestic
# (якщо він запускається через init-скрипт)
if [ -f /etc/init.d/S95majestic ]; then
    chmod -x /etc/init.d/S95majestic
fi

Важливо

Majestic і venc не можуть працювати одночасно — вони обидва використовують ISP та відеоенкодер чіпа.


Крок 3: Завантаження venc

Завантажте бінарний файл venc на камеру. Оберіть версію відповідно до вашого чіпа:

Для Star6E (SSC338Q / Infinity6E):

# Завантаження бінарника venc
curl -L -o /usr/bin/venc \
  https://github.com/OpenIPC/waybeam_venc/releases/latest/download/venc-star6e

chmod +x /usr/bin/venc

Для Maruko (Infinity6C):

curl -L -o /usr/bin/venc \
  https://github.com/OpenIPC/waybeam_venc/releases/latest/download/venc-maruko

chmod +x /usr/bin/venc

Альтернативний метод — SCP

Якщо у вас є зібраний бінарник на комп'ютері:

scp out/star6e/venc root@192.168.1.10:/usr/bin/venc


Крок 4: Створення конфігурації

Створіть файл конфігурації /etc/venc.json:

cat > /etc/venc.json << 'EOF'
{
  "system": { "webPort": 80, "overclockLevel": 1, "verbose": false },
  "sensor": {
    "index": -1,
    "mode": -1,
    "unlockEnabled": true,
    "unlockCmd": 35,
    "unlockReg": 12298,
    "unlockValue": 128,
    "unlockDir": 0
  },
  "isp": {
    "sensorBin": "", "exposure": 0,
    "legacyAe": true, "aeFps": 15, "gainMax": 0,
    "awbMode": "auto", "awbCt": 5500
  },
  "image": { "mirror": false, "flip": false, "rotate": 0 },
  "video0": {
    "codec": "h265",
    "rcMode": "cbr",
    "fps": 60,
    "size": "1920x1080",
    "bitrate": 8192,
    "gopSize": 1.0,
    "qpDelta": -4,
    "frameLost": true,
    "sceneThreshold": 0,
    "sceneHoldoff": 2
  },
  "outgoing": {
    "enabled": true,
    "server": "unix://wfb_tx",
    "streamMode": "rtp",
    "maxPayloadSize": 1400,
    "connectedUdp": true,
    "audioPort": 0,
    "sidecarPort": 0
  },
  "fpv": { "roiEnabled": true, "roiQp": 0, "roiSteps": 2, "roiCenter": 0.4, "noiseLevel": 0 },
  "audio": {
    "enabled": false,
    "sampleRate": 48000,
    "channels": 1,
    "codec": "opus",
    "volume": 80,
    "mute": false
  },
  "imu": {
    "enabled": false,
    "i2cDevice": "/dev/i2c-1",
    "i2cAddr": "0x68",
    "sampleRateHz": 200,
    "gyroRangeDps": 1000,
    "calFile": "/etc/imu.cal",
    "calSamples": 400
  },
  "eis": {
    "enabled": false,
    "mode": "gyroglide",
    "marginPercent": 30,
    "testMode": false,
    "swapXY": false,
    "invertX": false,
    "invertY": false,
    "gain": 1.0,
    "deadbandRad": 0.0,
    "recenterRate": 0.5,
    "maxSlewPx": 0,
    "biasAlpha": 0.001
  },
  "record": {
    "enabled": false,
    "mode": "mirror",
    "dir": "/mnt/mmcblk0p1",
    "format": "ts",
    "maxSeconds": 300,
    "maxMB": 500,
    "bitrate": 0,
    "fps": 0,
    "gopSize": 0,
    "server": ""
  },
  "debug": {
    "showOsd": false
  }
}
EOF

Крок 5: Ключові параметри конфігурації

Відео (video0)

Параметр Опис Типові значення
codec Кодек відео "h265" або "h264"
rcMode Режим керування бітрейтом "cbr", "vbr", "avbr", "fixqp"
fps Частота кадрів 30, 60, 90, 120
size Роздільна здатність "1920x1080", "1280x720"
bitrate Бітрейт (кбіт/с) 409616384
gopSize Розмір GOP у секундах 0.52.0

Стрімінг (outgoing)

Параметр Опис Приклади
enabled Увімкнути стрімінг true / false
server Адреса приймача "unix://wfb_tx", "udp://192.168.1.1:5600"
streamMode Режим потоку "rtp" або "compact"
maxPayloadSize Макс. розмір RTP-пакету 1400 (за замовч.)

FPV ROI-кодування (fpv)

Параметр Опис Значення
roiEnabled Пріоритет центру кадру true — центр у вищій якості
roiQp QP-зсув для ROI -18 — максимальна якість центру
roiSteps Кількість зон 24
roiCenter Розмір центральної зони 0.250.5

Крок 6: Запуск venc

Ручний запуск (для тестування)

# Запуск з виводом логів у консоль
venc

Веб-панель буде доступна за адресою http://<ip-камери>/

Перевірка роботи

# Перевірити версію
curl http://localhost/api/v1/version

# Перевірити конфігурацію
curl http://localhost/api/v1/config

# Перевірити, які параметри можна змінити в реальному часі
curl http://localhost/api/v1/capabilities

Крок 7: Автозапуск venc

Створіть init-скрипт для автоматичного запуску venc при завантаженні камери:

cat > /etc/init.d/S96venc << 'INITEOF'
#!/bin/sh

case "$1" in
  start)
    echo "Starting venc..."
    # Переконатися, що Majestic не запущений
    killall majestic 2>/dev/null
    # Запуск venc у фоновому режимі
    start-stop-daemon -S -b -x /usr/bin/venc -- 2>&1 | tee /tmp/venc.log &
    ;;
  stop)
    echo "Stopping venc..."
    killall venc 2>/dev/null
    ;;
  restart)
    $0 stop
    sleep 1
    $0 start
    ;;
  *)
    echo "Usage: $0 {start|stop|restart}"
    exit 1
    ;;
esac

exit 0
INITEOF

chmod +x /etc/init.d/S96venc

Порядок запуску

Скрипт має номер S96, що означає запуск після більшості системних сервісів, але вам потрібно переконатися, що WiFi-драйвери та WFB-ng вже завантажені до цього моменту.

audioPort та sidecarPort

У конфізі вище audioPort: 0 і sidecarPort: 0 встановлені значенням 0. Це означає:

  • audioPort: 0 — аудіо передається разом з відео через той самий Unix-сокет (оптимально для WFB-ng)
  • sidecarPort: 0 — sidecar-канал діагностики вимкнений (ніяких накладних витрат)

Дефолтний конфіг має audioPort: 5601 і sidecarPort: 5602 — якщо вам потрібна окрема передача аудіо через UDP, встановіть відповідні значення.


Крок 8: Зміна параметрів у реальному часі

Після запуску venc ви можете змінювати параметри без перезапуску:

# Змінити бітрейт
curl "http://localhost/api/v1/set?video0.bitrate=4096"

# Змінити роздільну здатність (потребує reinit)
curl "http://localhost/api/v1/set?video0.size=1280x720"

# Змінити FPS
curl "http://localhost/api/v1/set?video0.fps=90"

# Увімкнути ROI для FPV
curl "http://localhost/api/v1/set?fpv.roiEnabled=true"
curl "http://localhost/api/v1/set?fpv.roiQp=-18"

# Запит IDR-кейфрейму (корисно після підключення)
curl http://localhost/request/idr

Поширені проблеми

venc не запускається — помилка бібліотек

Переконайтеся, що всі бібліотеки SigmaStar доступні в /usr/lib. Якщо ви використовуєте staged-збірку, встановіть змінну:

export LD_LIBRARY_PATH=/шлях/до/lib

Немає відео після запуску
  1. Перевірте, що outgoing.enabled встановлено в true
  2. Перевірте правильність адреси outgoing.server
  3. Перевірте, що Majestic повністю зупинений: ps | grep majestic
  4. Перевірте логи: cat /tmp/venc.log
Чорний екран або артефакти

Перевірте сумісність сенсора:

curl http://localhost/api/v1/version
Переконайтеся, що sensor.index та sensor.mode встановлені на -1 (автовизначення).

Star6E: помилка при h264 з RTP

На Star6E RTP-режим підтримує тільки H.265. Змініть кодек:

curl "http://localhost/api/v1/set?video0.codec=h265"


Наступні кроки