An open API service indexing awesome lists of open source software.

https://github.com/cka3ka1337/python-udp-videostreaming

Система стриминга видеопотока от хоста к клиенту при помощи UDP протокола.
https://github.com/cka3ka1337/python-udp-videostreaming

cv2 mss opencv-python python sockets streaming-video udp udp-client udp-server

Last synced: about 1 month ago
JSON representation

Система стриминга видеопотока от хоста к клиенту при помощи UDP протокола.

Awesome Lists containing this project

README

        

# Python-UDP-VideoStreaming

## **Description**
Это программа для стриминга экрана, использует UDP протокол для передачи фрагментов изображения.
Главная её особенность - разбивает изображение на фрагменты и отправляет клиенту только те, что изменились.

В репозитории имеется 2 версии - pygame, cv2, это библиотеки, с помощью которых выводился собранный кадр на экран.
Pygame версия совместима с android устройствами, но необходимо будет дописать логику для расширения кадра до размеров экрана.

## **Libraries**
* `mss==10.0.0`;
* `numpy==2.2.2`;
* `opencv-python==4.11.0.86`;
* `pygame==2.6.1`;

## **Program pipeline**

1. **Работа с изображением**
1.1 Запуск потока для захвата.
1.2 Захват и запись в импровизированный буфер.
1.3 Разбиваем на N**2 фрагментов.
2. **Серверная часть**
2.1 Занимаем адрес.
2.2 Запоминаем пользователя, который отправит команду на подключение.
2.3 Из пунтка 1.3 отправляем только те фрагменты, которые не отправлялись ранее.
3. **Клиентская часть**
3.1 Отправляем серверу команду на подключение.
3.2 Принимаем фрагмент с координатами и вставляем его в импровизированный буфер.
3.3 Отображаем кадр с буфера.

## **Other**
1. Необходимо указать свой адрес в клиенте и сервере.
2. В коде сервера есть подряд закомементированные строки, которые отвечают за отправку зелёных фрагментов, которые не изменились.
3. При написании своего метода захвата с использованием класса Capture, необходимо передать в super().init() 2 аргумента - длина буфера счётчика кадра и размер фрагментации (**!Важно!** при делении вашего размера экрана на размер фрагментации, результат должен быть челочисленным).