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

195 lines
7.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 🎥 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
- [ ] Оптимизация батареи