7.3 KiB
7.3 KiB
🎥 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: Создать комнату на сервере
- Перейдите на веб-интерфейс сервера
- Авторизуйтесь (по умолчанию: admin/admin123)
- Создайте новую комнату (получите Room ID и пароль)
Шаг 3: Подключиться из приложения
- Запустите приложение CamControl на телефоне
- Введите параметры подключения:
- IP адрес сервера: IP вашего сервера (например, 192.168.1.100)
- Порт сервера: 8000
- ID комнаты: ID из шага 2
- Пароль комнаты: Пароль из шага 2
- Нажмите "Подключиться"
🎮 Управление видео
После подключения доступны следующие команды:
| Команда | Описание |
|---|---|
| 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- сообщения ViewModelVideoStreamingManager- сообщения видео потокаCameraManager- сообщения камеры
Для просмотра логов используйте:
adb logcat | grep -E "WebSocket|StreamViewModel|VideoStreamingManager|CameraManager"
🔄 Цикл жизни приложения
- Инициализация: приложение загружается и отображает форму подключения
- Подключение: устанавливается WebSocket соединение с сервером
- Трансляция: видео с камеры отправляется на сервер
- Управление: пользователь может отправлять команды обработки видео
- Отключение: соединение закрывается и ресурсы освобождаются
🎨 Интерфейс
Приложение использует Material Design 3 с поддержкой:
- Светлой и темной темы
- Адаптивного дизайна
- Smooth анимаций
📞 Поддержка
Для вопросов и проблем обратитесь к документации сервера KazicCAM.
📄 Лицензия
Проект распространяется под лицензией MIT.
🎯 Дорожная карта
- Добавить запись видео на устройство
- Поддержка фронтальной камеры
- Настройка качества видео
- Поддержка аудио
- Сохранение профилей серверов
- Поддержка HTTPS/WSS
- Оптимизация батареи