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

7.3 KiB
Raw Permalink Blame History

🎥 CamControl - Мобильное приложение для трансляции видео

Мобильное приложение на Android для трансляции видео с камеры на сервер KazicCAM.

📱 Функции

  • Подключение к серверу через WebSocket
  • Трансляция видео с камеры в реальном времени
  • Управление видеоэффектами (поворот, отражение, оттенки серого)
  • Статистика трансляции (FPS, объем переданных данных)
  • Поддержка IPv4 подключения
  • Современный интерфейс на Compose

🔧 Требования

  • Android 7.0 (API 24) и выше
  • Camera2 API
  • Java 11+

📦 Зависимости

  • Jetpack Compose
  • CameraX
  • OkHttp 4.11.0
  • Gson
  • Kotlinx Coroutines

🚀 Установка и запуск

1. Клонирование проекта

git clone <repository>
cd camControl

2. Сборка проекта

./gradlew build

3. Установка на устройство

./gradlew installDebug

или через Android Studio:

  • Откройте проект в Android Studio
  • Нажмите "Run" или используйте Shift+F10

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

Шаг 1: Запустить сервер

python server.py

Сервер будет доступен на http://<server-ip>:8000

Шаг 2: Создать комнату на сервере

  1. Перейдите на веб-интерфейс сервера
  2. Авторизуйтесь (по умолчанию: admin/admin123)
  3. Создайте новую комнату (получите Room ID и пароль)

Шаг 3: Подключиться из приложения

  1. Запустите приложение CamControl на телефоне
  2. Введите параметры подключения:
    • IP адрес сервера: IP вашего сервера (например, 192.168.1.100)
    • Порт сервера: 8000
    • ID комнаты: ID из шага 2
    • Пароль комнаты: Пароль из шага 2
  3. Нажмите "Подключиться"

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

После подключения доступны следующие команды:

Команда Описание
Rotate 90° Повернуть видео на 90° по часовой стрелке
Flip H Отразить видео по горизонтали
Grayscale Преобразовать в чёрно-белое
Reset Сброс всех эффектов

📊 Статистика

Приложение отображает:

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

🔐 Разрешения

Приложение требует следующие разрешения:

  • android.permission.CAMERA - для доступа к камере
  • android.permission.INTERNET - для сетевого соединения
  • android.permission.ACCESS_NETWORK_STATE - для проверки состояния сети

📁 Структура проекта

app/src/main/java/com/example/camcontrol/
├── MainActivity.kt              # Главное окно приложения
├── StreamViewModel.kt           # ViewModel для управления состоянием
├── WebSocketManager.kt          # Менеджер WebSocket соединения
├── VideoStreamingManager.kt    # Менеджер захвата видео
├── CameraManager.kt            # Менеджер камеры
├── Models.kt                   # Модели данных
└── ui/
    └── theme/
        ├── Color.kt
        ├── Theme.kt
        └── Type.kt

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

Проблема: Приложение не может подключиться к серверу

Решение:

  • Убедитесь, что сервер запущен и доступен
  • Проверьте IP адрес и порт сервера
  • Убедитесь, что устройство и сервер в одной сети
  • Проверьте разрешения на доступ в интернет

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

Решение:

  • Убедитесь, что приложение имеет разрешение на использование камеры
  • Проверьте, что камера не используется другим приложением
  • Перезагрузите приложение

Проблема: Видео не передается

Решение:

  • Проверьте статус соединения
  • Убедитесь, что Room ID и пароль верны
  • Проверьте логи приложения (Logcat)

📝 Логирование

Приложение выводит логи в Logcat с тегами:

  • WebSocket - сообщения WebSocket соединения
  • StreamViewModel - сообщения ViewModel
  • VideoStreamingManager - сообщения видео потока
  • CameraManager - сообщения камеры

Для просмотра логов используйте:

adb logcat | grep -E "WebSocket|StreamViewModel|VideoStreamingManager|CameraManager"

🔄 Цикл жизни приложения

  1. Инициализация: приложение загружается и отображает форму подключения
  2. Подключение: устанавливается WebSocket соединение с сервером
  3. Трансляция: видео с камеры отправляется на сервер
  4. Управление: пользователь может отправлять команды обработки видео
  5. Отключение: соединение закрывается и ресурсы освобождаются

🎨 Интерфейс

Приложение использует Material Design 3 с поддержкой:

  • Светлой и темной темы
  • Адаптивного дизайна
  • Smooth анимаций

📞 Поддержка

Для вопросов и проблем обратитесь к документации сервера KazicCAM.

📄 Лицензия

Проект распространяется под лицензией MIT.

🎯 Дорожная карта

  • Добавить запись видео на устройство
  • Поддержка фронтальной камеры
  • Настройка качества видео
  • Поддержка аудио
  • Сохранение профилей серверов
  • Поддержка HTTPS/WSS
  • Оптимизация батареи