ФАЙЛ «SERVER_SITE.PY»

Основные задачи файла:

1. Получение данных о портах и RTSP-потоке: Из командной строки.

2. Настройка сокетов и WebSocket соединений: Для приема и отправки данных.

3. Захват видео с камеры: И отправка закодированных изображений клиентам.

4. Асинхронное управление: Веб-сервером и сокетами, с использованием Tornado и asyncio.

ИНИЦИАЛИЗАЦИЯ БИБЛИОТЕК

import asyncio
import base64
import contextlib
import io
import json
import sys
import threading
from PIL import Image
import cv2
import tornado.ioloop
import tornado.web
import tornado.websocket
import socket

- asyncio: Модуль для асинхронного программирования.

- base64: Модуль для кодирования и декодирования данных в формате base64.

- contextlib: Контекстные менеджеры и утилиты для работы с ними.

- io: Модуль для работы с потоками ввода/вывода.

- json: Модуль для работы с JSON-данными.

- sys: Модуль для работы с параметрами командной строки и другими системными функциями.

- threading: Модуль для многопоточности.

- PIL.Image: Библиотека для обработки изображений.

- cv2: Библиотека OpenCV для обработки изображений и видео.

- tornado.ioloop, tornado.web, tornado.websocket: Tornado - веб-фреймворк для создания веб-приложений и работы с WebSocket.

- socket: Модуль для сетевого взаимодействия.

ПАРАМЕТРЫ ПОДКЛЮЧЕНИЯ

Этот блок кода обрабатывает аргументы командной строки, чтобы установить параметры подключения:

- sys.argv: Используется для получения аргументов командной строки.

- port_data: Информация о портах для веб-сервера и RTSP потока.

НАСТРОЙКА СОКЕТА

Здесь происходит создание и настройка сокета для прослушивания входящих соединений.

ИНИЦИАЛЗАЦИЯ КЛАССА MainHandler

В этом классе происходит обработка GET-запроса и рендеринг HTML-шаблона.

ИНИЦИАЛИЗАЦИЯ КЛАССА SimpleWebSocket

В этом классе происходит обработка открытия, получения сообщений и закрытия WebSocket соединения, так же асинхронная отправка обновлений клиенту.

ЗАХВАТ ВИДЕО

В этом блоке кода инициализируется функция для захвата кадра из RTSP потока и его кодирования в формат base64.

ЗАПУСК TORNADO

Это асинхронная функция для настройки и запуска веб-сервера Tornado.

ОБРАБОТКА СОКЕТОВ

Это функция для обработки входящих соединений через сокеты и получения данных от клиентов

ГЛАВНАЯ ФУНКЦИЯ

Это основная функция запуска, которая инициализирует поток для обработки сокетов и запускает сервер Tornado.

ЗАВЕРШЕНИЕ РАБОТЫ

Здесь происходит закрытие сокета и сервера Tornado

Процесс подготовки кода:

  1. Создайте файл и назовите его Server_site.py

Файл Server_site.py в иерархии
  1. Поэтапно скопируйте код в файл:

  1. Установите необходимые библиотеки: в данном случае у нас не предустановлены следующие библиотеки: PIL (Pillow), cv2 и tornado. Если у вас не установлены эти библиотеки, выполните следующие действия:

    1. Откройте терминал VS Code (Terminal -> New Termial или комбинацией Ctrl + Shift + `)

    2. В терминале поочередно введите и запустите следующие команды: pip install pillow; pip install opencv-python, pip install tornado

Последнее обновление