Сервер потокового видео в реальном времени на основе AIOHTTP, OpenCV и ECMA6 JS
Здравствуйте, это мой новый сайд-проект — сервер потокового видео в реальном времени.
Исходный код доступен по ссылке ниже: https://github.com/ArtyomKozyrev8/stream_video_server
Приложение состоит из двух сервисов: 1. http-сервер 2. процесс обработки видео 3. опционально Nginx
HTTP-сервер
Он прослушивает входящие соединения через веб-сокет от процессов обработки видео, получает видеокадры из соединений и распределяет их в очереди Asyncio, которые связаны с входящими соединениями через веб-сокет от клиентов (веб-браузеров), затем задачи, связанные с клиентами, получают данные из очередей. и отправить данные в клиентский браузер.
Кроме того, процесс HTTP-сервера уведомляет процесс обработки видео, когда он хочет получить данные, поскольку нет необходимости отправлять видеокадр, когда ни один клиент (веб-браузер) не просматривает видеопоток.
Процесс обработки видео
Он обрабатывает веб-камеру или поток RTSP, получает кадры из потока, добавляет временные метки, изменяет размер кадра и отправляет его в процесс HTTP-сервера.
Ограничения решения
У него может быть только один процесс HTTP-сервера одновременно, у вас может быть больше процессов HTTP-сервера, но вы можете получить неожиданные результаты. Я собираюсь решить эту проблему с помощью очереди сообщений, такой как NATS, и напишу об этом в следующей статье.