← Обзор проекта

Документация проекта

Сервер видеоаналитики на Rust

Назначение

RustVideoAnalyticsServer реализует тот же REST-контракт /api/v1/*, что C++20- и Python-серверы. JavaScript Viewer и общий набор контрактных тестов работают без изменения пользовательского сценария.

Технологический стек

  • Rust и Cargo;
  • Axum и Tokio для REST API и асинхронной оркестрации;
  • Serde для конфигурации и JSON;
  • sqlx для PostgreSQL;
  • FFmpeg для RTSP, HLS и MP4;
  • ONNX Runtime для двух контуров YOLO.

Владение и многопоточность

Кадр передаётся как общий неизменяемый объект. Ownership, Arc, Send и Sync делают границы владения явными. Tokio обслуживает REST и асинхронные операции, а вычислительные этапы работают в отдельных потоках ОС.

FFmpeg→Последний кадр→Motion / Tracking→Два YOLO→Координатор→HLS / PostgreSQL

Однослотовая передача последних значений ограничивает backpressure: медленный inference не создаёт растущую очередь устаревших кадров. Захват, координатор и вывод отделены от ресурсоёмких потоков YOLO.

Реализовано

  • RTSP и видеофайлы с восстановлением;
  • Motion и Tracking на Rust без OpenCV;
  • два режима YOLO;
  • JPEG, HLS и H.264/MP4;
  • PostgreSQL, Bearer-аутентификация, роли, камеры и PTZ;
  • совместимость с общей конфигурацией и тестами.

Сервер проверен на RTSP-камере 2304×1296 с YOLO-моделью ONNX.