Я новичок в этой области и не знаю, правильно ли я делаю это. Поэтому мне нужна помощь в решении архитектурных и дизайнерских вопросов, чтобы убедиться, что я двигаюсь в правильном направлении.
Я пытаюсь обработать запись видео в реальном времени с камеры клиента. Захваченный видеопоток конвертируется в кадры и отправляется на сервер для обработки. После обработки сервер отправляет его обратно на экран клиента.
Мой бэкэнд-код написан на Python, и я использую SocketIo для отправки кадров из внешнего интерфейса в бэкэнд. Вы можете взглянуть на этот дизайн, чтобы лучше понять, что происходит - изображение
- Мой сервер (app.py) будет работать в бэкэнде, а клиент будет обращаться к index.html
- Соединение SocketIo будет установлено, и видеопоток, захваченный с помощью веб-камеры, будет посылаться на сервер кадр за кадром.
- Эти кадры затем будут обработаны на сервере и отправлены обратно клиенту.
- Обработанные кадры, поступающие с сервера, могут быть показаны в теге img.
Итак, моя проблема с этой архитектурой - это отставание. Даже после ограничения fps есть заметная задержка. От клиента к серверу, затем обработка и обратно к клиенту, каждый кадр занимает в среднем 150 мс и не дает ответа в реальном времени. Я пробовал свой код обработки изображений отдельно, без программирования сокетов на локальном компьютере, и он более близок к реальному времени (для одного кадра требуется 80 мс).
Но я здесь не понимаю, как я могу минимизировать запаздывание с этим дизайном или импровизировать? Есть ли лучший способ выполнить эту задачу, чтобы получить больше результатов в реальном времени?
Заранее спасибо!