Files
cam_control_android/SETUP_GUIDE.md
2025-12-03 19:39:42 +09:00

12 KiB
Raw Permalink Blame History

🎬 Полное руководство: Сервер + Мобильное приложение

🖥️ Часть 1: Запуск сервера KazicCAM

Требования

  • Python 3.8+
  • pip (менеджер пакетов Python)
  • Операционная система: Windows, Linux, macOS

Установка зависимостей

  1. Создайте виртуальное окружение (опционально, но рекомендуется):
python -m venv venv

# На Windows:
venv\Scripts\activate

# На Linux/macOS:
source venv/bin/activate
  1. Установите зависимости:
pip install fastapi uvicorn opencv-python numpy websockets python-dotenv psutil

Конфигурация сервера

  1. Создайте файл .env в корне проекта сервера:
host=0.0.0.0
port=8000
  • host=0.0.0.0 - сервер доступен со всех интерфейсов
  • Для локального доступа: host=127.0.0.1
  1. Убедитесь, что стоит firewall правила (Windows):
# Разрешить порт 8000
netsh advfirewall firewall add rule name="FastAPI Port 8000" dir=in action=allow protocol=tcp localport=8000

Запуск сервера

python server.py

Вы должны увидеть:

============================================================
🎥 Video Streaming Server with Web Interface
============================================================
🌐 Web Interface: http://192.168.1.100:8000
🔌 WebSocket: ws://192.168.1.100:8000
👤 Admin Login: http://192.168.1.100:8000/
============================================================
Default Admin Accounts:
  • admin / admin123
  • administrator / securepass
  • supervisor / superpass
============================================================
Press Ctrl+C to stop the server

🌐 Часть 2: Веб-интерфейс сервера

Вход в систему

  1. Откройте браузер
  2. Перейдите на http://<ваш-ip>:8000
  3. Авторизуйтесь с одним из дефолтных аккаунтов:
    • Username: admin
    • Password: admin123

Создание комнаты для трансляции

  1. Нажмите кнопку "Create Room" (Создать комнату)
  2. Заполните форму:
    • Room Name: Название комнаты (например, "Моя камера")
    • Room Password: Пароль (запомните его!)
    • Max Connections: Максимум клиентов (например, 5)
  3. Нажмите "Create Room"

После создания вы получите:

  • Room ID: abc12def45gh (уникальный идентификатор)
  • WebSocket URL: ws://192.168.1.100:8000/ws/client/abc12def45gh/password

📱 Часть 3: Мобильное приложение

Требования

  • Android 7.0 (API 24) и выше
  • Минимум 100 MB свободной памяти
  • Камера на устройстве

Сборка и установка

Вариант 1: Через Android Studio (рекомендуется)

1. Откройте проект в Android Studio
2. Подождите синхронизации Gradle
3. Подключите устройство или запустите эмулятор
4. Нажмите Run (Shift+F10)

Вариант 2: Командная строка

# Сборка
./gradlew assembleDebug

# Установка
./gradlew installDebug

# Запуск
adb shell am start -n com.example.camcontrol/.MainActivity

Подключение к серверу

  1. Запустите приложение на устройстве

  2. Введите параметры подключения:

    • IP адрес сервера: IP вашего компьютера с сервером
      • Для локальной сети: 192.168.1.100 (узнайте через ipconfig на Windows или ifconfig на Linux)
    • Порт сервера: 8000
    • ID комнаты: Скопируйте Room ID из веб-интерфейса
    • Пароль комнаты: Введите пароль комнаты
  3. Нажмите "Подключиться"

Проверка подключения

  1. В веб-интерфейсе сервера откройте комнату
  2. Вы должны увидеть подключенного клиента
  3. Нажмите на клиента для просмотра потока

🔄 Полный рабочий процесс

Сценарий: Трансляция видео с телефона на компьютер

Шаг 1: Подготовка (на компьютере)

# 1. Запустить сервер
python server.py

# Примечание: сервер будет работать до нажатия Ctrl+C

Шаг 2: Создание комнаты (веб-интерфейс)

1. Открыть http://192.168.1.100:8000
2. Авторизоваться (admin/admin123)
3. Нажать "Create Room"
4. Заполнить форму:
   - Name: "Спальня"
   - Password: "pass123"
   - Max Connections: 5
5. Запомнить Room ID: например "aBcDeFgHiJkL"

Шаг 3: Подключение приложения (на телефоне)

1. Запустить приложение CamControl
2. Заполнить форму подключения:
   - Server IP: 192.168.1.100 (IP компьютера)
   - Port: 8000
   - Room ID: aBcDeFgHiJkL
   - Password: pass123
3. Нажать "Подключиться"

Шаг 4: Просмотр потока (веб-интерфейс)

1. В веб-интерфейсе нажать на комнату
2. Нажать "View" напротив подключенного клиента
3. Видеть трансляцию с телефона

🎮 Управление видео

Команды из приложения

В приложении доступны кнопки:

  • Rotate 90° - повернуть видео
  • Flip H - отразить горизонтально
  • Grayscale - чёрно-белое видео
  • Reset - сброс эффектов

Просмотр статистики

  • Статус: показывает состояние соединения
  • FPS: кадры в секунду
  • Объем данных: сколько данных передано

🚨 Решение проблем

Проблема: "Connection refused" или "Connection timeout"

Для Windows:

# Проверить, запущен ли сервер
netstat -an | findstr :8000

# Если не запущен - запустить
python server.py

Для Linux/macOS:

# Проверить порт
lsof -i :8000

# Если нужно освободить порт
kill -9 <PID>

Проблема: Сервер не доступен из других устройств

  1. Проверьте IP адрес сервера:
# Windows
ipconfig

# Linux/macOS
ifconfig

Используйте IPv4 адрес (например, 192.168.1.100)

  1. Проверьте firewall:
# Windows - открыть порт
netsh advfirewall firewall add rule name="FastAPI" dir=in action=allow protocol=tcp localport=8000

# Linux
sudo ufw allow 8000/tcp
  1. Убедитесь что устройства в одной сети:

Пингуйте сервер с телефона (используйте приложение Network Analyzer или Terminal для пинга).

Проблема: Приложение крашится при запуске

  1. Проверьте разрешения:
# Очистить кэш приложения
adb shell pm clear com.example.camcontrol

# Переустановить
./gradlew installDebug
  1. Проверьте Android версию:

Приложение требует Android 7.0 (API 24) и выше.

Проблема: Камера не работает

  1. Проверьте разрешения приложения:
adb shell pm grant com.example.camcontrol android.permission.CAMERA
  1. Убедитесь, что другие приложения не используют камеру:

Закройте Google Meet, WhatsApp и другие приложения, используюющие камеру.

📊 Мониторинг сервера

Просмотр статистики

В веб-интерфейсе доступна информация:

  • Total Rooms: количество созданных комнат
  • Connected Clients: активные клиенты
  • CPU Usage: загрузка процессора
  • Memory Usage: использование памяти
  • Server Uptime: время работы сервера

Логи сервера

Все события логируются в консоль:

[RoomManager] Created room: abc123 - Спальня
[ClientManager] Added client: uuid to room: abc123
[WebSocket] Client connected: uuid to room abc123
[VideoProcessor] Processed 150 frames

🔒 Безопасность

Рекомендации

  1. Измените пароли по умолчанию:

Отредактируйте список ADMINS в server.py:

ADMINS = [
    ["your_username", "your_secure_password"],
]
  1. Используйте HTTPS/WSS для продакшена:

Необходимо настроить SSL сертификаты и использовать https:// и wss://.

  1. Ограничьте доступ через firewall:
# Разрешить только локальные соединения
netsh advfirewall firewall set rule name="FastAPI" dir=in action=allow localip=192.168.1.0/24

📈 Масштабирование

Увеличение производительности

  1. Увеличьте JPEG качество в server.py:
"jpeg_quality": 90,  # 0-100, выше = больше качество
  1. Измените разрешение видео:
"video_width": 1280,
"video_height": 720,
  1. Добавьте больше потоков обработки в VideoProcessor.

📚 Дополнительные ресурсы

💡 Советы и трюки

Трансляция на нескольких устройствах

  1. Создайте разные комнаты для каждого телефона
  2. Откройте несколько окон браузера с разными комнатами
  3. Сравнивайте потоки

Запись видео

На веб-интерфейсе можно использовать встроенный инструмент браузера для записи экрана.

Удаленный доступ

Для доступа через интернет используйте:

  • VPN (OpenVPN, WireGuard)
  • Tunnel сервисы (ngrok, CloudFlare Tunnel)
  • Собственный reverse proxy (nginx)