# 🎥 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. Клонирование проекта ```bash git clone cd camControl ``` ### 2. Сборка проекта ```bash ./gradlew build ``` ### 3. Установка на устройство ```bash ./gradlew installDebug ``` или через Android Studio: - Откройте проект в Android Studio - Нажмите "Run" или используйте Shift+F10 ## 🔌 Подключение к серверу ### Шаг 1: Запустить сервер ```bash python server.py ``` Сервер будет доступен на `http://: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` - сообщения камеры Для просмотра логов используйте: ```bash adb logcat | grep -E "WebSocket|StreamViewModel|VideoStreamingManager|CameraManager" ``` ## 🔄 Цикл жизни приложения 1. **Инициализация**: приложение загружается и отображает форму подключения 2. **Подключение**: устанавливается WebSocket соединение с сервером 3. **Трансляция**: видео с камеры отправляется на сервер 4. **Управление**: пользователь может отправлять команды обработки видео 5. **Отключение**: соединение закрывается и ресурсы освобождаются ## 🎨 Интерфейс Приложение использует Material Design 3 с поддержкой: - Светлой и темной темы - Адаптивного дизайна - Smooth анимаций ## 📞 Поддержка Для вопросов и проблем обратитесь к документации сервера KazicCAM. ## 📄 Лицензия Проект распространяется под лицензией MIT. ## 🎯 Дорожная карта - [ ] Добавить запись видео на устройство - [ ] Поддержка фронтальной камеры - [ ] Настройка качества видео - [ ] Поддержка аудио - [ ] Сохранение профилей серверов - [ ] Поддержка HTTPS/WSS - [ ] Оптимизация батареи