This commit is contained in:
2025-12-03 19:39:42 +09:00
commit 2bc018a4f7
68 changed files with 5663 additions and 0 deletions

194
README.md Normal file
View File

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