add stream_module

This commit is contained in:
awe
2025-11-18 12:26:48 +03:00
commit c67ac45617
1353 changed files with 253533 additions and 0 deletions

136
web_viewer/README.md Normal file
View File

@ -0,0 +1,136 @@
# Beacon Tracker Web Viewer
Веб-приложение для просмотра видео потока с камеры в реальном времени из проекта beacon_track.
## Архитектура
Приложение состоит из трех компонентов:
1. **C++ Beacon Tracker** - захватывает кадры с камеры, детектирует белую точку и записывает JPEG-кодированные кадры в shared memory
2. **Python Flask Server** - читает кадры из shared memory и стримит их через Server-Sent Events (SSE)
3. **HTML/JavaScript Frontend** - отображает видео поток в браузере
## Установка
### Зависимости для Python
```bash
cd /home/awe/Documents/radar_frontend/web_viewer
pip install -r requirements.txt
```
Если у вас нет `posix_ipc`, установите его:
```bash
pip install posix_ipc
```
### Сборка C++ приложения
```bash
cd /home/awe/Documents/radar_frontend/beacon_track/build
cmake ..
make
```
## Настройка
Убедитесь, что в файле `beacon_track/config.ini` включены следующие параметры:
```ini
[Processing]
EnableFrameBuffer = true
FrameBufferMaxSize = 2097152
FrameBufferJpegQuality = 85
```
## Запуск
### 1. Запустите C++ приложение beacon_track
```bash
cd /home/awe/Documents/radar_frontend/beacon_track/build
./main realtime output.txt
```
Это создаст shared memory сегмент `BeaconFrameBuffer` и начнет записывать кадры.
### 2. Запустите Flask сервер
В отдельном терминале:
```bash
cd /home/awe/Documents/radar_frontend/web_viewer
python3 app.py
```
Сервер запустится на `http://0.0.0.0:5000`
### 3. Откройте браузер
Перейдите на:
```
http://localhost:5000
```
или с другого компьютера в сети:
```
http://<IP_адресашегоомпьютера>:5000
```
## Тестирование shared memory reader
Чтобы проверить работу shared memory reader без веб-интерфейса:
```bash
cd /home/awe/Documents/radar_frontend/web_viewer
python3 shared_memory_reader.py
```
Это отобразит информацию о получаемых кадрах в консоли.
## API Endpoints
- `GET /` - главная страница с видео плеером
- `GET /stream` - Server-Sent Events stream с JPEG кадрами
- `GET /status` - JSON статус подключения и последнего кадра
- `GET /latest_frame` - последний кадр как JPEG изображение
## Возможные проблемы
### Shared memory не найден
Если вы видите ошибку "Shared memory segment 'BeaconFrameBuffer' does not exist":
1. Убедитесь, что C++ приложение beacon_track запущено
2. Проверьте, что в config.ini параметр `EnableFrameBuffer = true`
3. Убедитесь, что приложение скомпилировано после изменений
### Нет кадров
Если подключение установлено, но кадры не появляются:
1. Проверьте логи C++ приложения на наличие ошибок
2. Убедитесь, что камера работает корректно
3. Проверьте размер JPEG кадров - они не должны превышать `FrameBufferMaxSize`
### Низкий FPS
Если FPS низкий:
1. Увеличьте `FrameBufferJpegQuality` в config.ini (это уменьшит размер кадров)
2. Уменьшите разрешение камеры в config.ini
3. Проверьте загрузку CPU
## Производительность
- **Разрешение**: зависит от настроек камеры (например, 1920x1080)
- **FPS**: до 30-60 FPS (зависит от камеры и настроек)
- **Задержка**: обычно 20-100ms
- **Битрейт**: зависит от качества JPEG и содержимого кадра (обычно 1-5 Mbps)
## Лицензия
Часть проекта beacon_track