RTSP + YOLO без лагов: собираем real-time конвейер на C++20 и ONNX Runtime
Классическая схема read → motion → YOLO → encode ломается, когда модель обрабатывает кадр дольше, чем камера успевает сформировать следующий. Очередь растёт, задержка увеличивается, и пользователь видит «прошлое» вместо прямого эфира. Автор рассказывает, как собрал real-time конвейер на C++20, который этого избегает.
В основе — постоянные workers и слоты последнего значения: каждый этап работает со свежим кадром, а устаревшие результаты отбрасываются. Используются std::jthread и stop_token для корректной остановки потоков, а защита от устаревших данных не даёт модели тратить время на уже неактуальные кадры.
Итог — 16-часовой тест на реальной RTSP-камере без накопления задержек. Материал будет полезен всем, кто строит видеосерверы с инференсом нейросетей и хочет избежать типовых проблем с очередями и блокировками.