137 lines
4.3 KiB
Markdown
137 lines
4.3 KiB
Markdown
# 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
|