init
This commit is contained in:
194
README.md
Normal file
194
README.md
Normal 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
|
||||
- [ ] Оптимизация батареи
|
||||
|
||||
|
||||
Reference in New Issue
Block a user