12 KiB
🎬 Полное руководство: Сервер + Мобильное приложение
🖥️ Часть 1: Запуск сервера KazicCAM
Требования
- Python 3.8+
- pip (менеджер пакетов Python)
- Операционная система: Windows, Linux, macOS
Установка зависимостей
- Создайте виртуальное окружение (опционально, но рекомендуется):
python -m venv venv
# На Windows:
venv\Scripts\activate
# На Linux/macOS:
source venv/bin/activate
- Установите зависимости:
pip install fastapi uvicorn opencv-python numpy websockets python-dotenv psutil
Конфигурация сервера
- Создайте файл
.envв корне проекта сервера:
host=0.0.0.0
port=8000
host=0.0.0.0- сервер доступен со всех интерфейсов- Для локального доступа:
host=127.0.0.1
- Убедитесь, что стоит firewall правила (Windows):
# Разрешить порт 8000
netsh advfirewall firewall add rule name="FastAPI Port 8000" dir=in action=allow protocol=tcp localport=8000
Запуск сервера
python server.py
Вы должны увидеть:
============================================================
🎥 Video Streaming Server with Web Interface
============================================================
🌐 Web Interface: http://192.168.1.100:8000
🔌 WebSocket: ws://192.168.1.100:8000
👤 Admin Login: http://192.168.1.100:8000/
============================================================
Default Admin Accounts:
• admin / admin123
• administrator / securepass
• supervisor / superpass
============================================================
Press Ctrl+C to stop the server
🌐 Часть 2: Веб-интерфейс сервера
Вход в систему
- Откройте браузер
- Перейдите на
http://<ваш-ip>:8000 - Авторизуйтесь с одним из дефолтных аккаунтов:
- Username:
admin - Password:
admin123
- Username:
Создание комнаты для трансляции
- Нажмите кнопку "Create Room" (Создать комнату)
- Заполните форму:
- Room Name: Название комнаты (например, "Моя камера")
- Room Password: Пароль (запомните его!)
- Max Connections: Максимум клиентов (например, 5)
- Нажмите "Create Room"
После создания вы получите:
- Room ID:
abc12def45gh(уникальный идентификатор) - WebSocket URL:
ws://192.168.1.100:8000/ws/client/abc12def45gh/password
📱 Часть 3: Мобильное приложение
Требования
- Android 7.0 (API 24) и выше
- Минимум 100 MB свободной памяти
- Камера на устройстве
Сборка и установка
Вариант 1: Через Android Studio (рекомендуется)
1. Откройте проект в Android Studio
2. Подождите синхронизации Gradle
3. Подключите устройство или запустите эмулятор
4. Нажмите Run (Shift+F10)
Вариант 2: Командная строка
# Сборка
./gradlew assembleDebug
# Установка
./gradlew installDebug
# Запуск
adb shell am start -n com.example.camcontrol/.MainActivity
Подключение к серверу
-
Запустите приложение на устройстве
-
Введите параметры подключения:
- IP адрес сервера: IP вашего компьютера с сервером
- Для локальной сети:
192.168.1.100(узнайте черезipconfigна Windows илиifconfigна Linux)
- Для локальной сети:
- Порт сервера:
8000 - ID комнаты: Скопируйте Room ID из веб-интерфейса
- Пароль комнаты: Введите пароль комнаты
- IP адрес сервера: IP вашего компьютера с сервером
-
Нажмите "Подключиться"
Проверка подключения
- В веб-интерфейсе сервера откройте комнату
- Вы должны увидеть подключенного клиента
- Нажмите на клиента для просмотра потока
🔄 Полный рабочий процесс
Сценарий: Трансляция видео с телефона на компьютер
Шаг 1: Подготовка (на компьютере)
# 1. Запустить сервер
python server.py
# Примечание: сервер будет работать до нажатия Ctrl+C
Шаг 2: Создание комнаты (веб-интерфейс)
1. Открыть http://192.168.1.100:8000
2. Авторизоваться (admin/admin123)
3. Нажать "Create Room"
4. Заполнить форму:
- Name: "Спальня"
- Password: "pass123"
- Max Connections: 5
5. Запомнить Room ID: например "aBcDeFgHiJkL"
Шаг 3: Подключение приложения (на телефоне)
1. Запустить приложение CamControl
2. Заполнить форму подключения:
- Server IP: 192.168.1.100 (IP компьютера)
- Port: 8000
- Room ID: aBcDeFgHiJkL
- Password: pass123
3. Нажать "Подключиться"
Шаг 4: Просмотр потока (веб-интерфейс)
1. В веб-интерфейсе нажать на комнату
2. Нажать "View" напротив подключенного клиента
3. Видеть трансляцию с телефона
🎮 Управление видео
Команды из приложения
В приложении доступны кнопки:
- Rotate 90° - повернуть видео
- Flip H - отразить горизонтально
- Grayscale - чёрно-белое видео
- Reset - сброс эффектов
Просмотр статистики
- Статус: показывает состояние соединения
- FPS: кадры в секунду
- Объем данных: сколько данных передано
🚨 Решение проблем
Проблема: "Connection refused" или "Connection timeout"
Для Windows:
# Проверить, запущен ли сервер
netstat -an | findstr :8000
# Если не запущен - запустить
python server.py
Для Linux/macOS:
# Проверить порт
lsof -i :8000
# Если нужно освободить порт
kill -9 <PID>
Проблема: Сервер не доступен из других устройств
- Проверьте IP адрес сервера:
# Windows
ipconfig
# Linux/macOS
ifconfig
Используйте IPv4 адрес (например, 192.168.1.100)
- Проверьте firewall:
# Windows - открыть порт
netsh advfirewall firewall add rule name="FastAPI" dir=in action=allow protocol=tcp localport=8000
# Linux
sudo ufw allow 8000/tcp
- Убедитесь что устройства в одной сети:
Пингуйте сервер с телефона (используйте приложение Network Analyzer или Terminal для пинга).
Проблема: Приложение крашится при запуске
- Проверьте разрешения:
# Очистить кэш приложения
adb shell pm clear com.example.camcontrol
# Переустановить
./gradlew installDebug
- Проверьте Android версию:
Приложение требует Android 7.0 (API 24) и выше.
Проблема: Камера не работает
- Проверьте разрешения приложения:
adb shell pm grant com.example.camcontrol android.permission.CAMERA
- Убедитесь, что другие приложения не используют камеру:
Закройте Google Meet, WhatsApp и другие приложения, используюющие камеру.
📊 Мониторинг сервера
Просмотр статистики
В веб-интерфейсе доступна информация:
- Total Rooms: количество созданных комнат
- Connected Clients: активные клиенты
- CPU Usage: загрузка процессора
- Memory Usage: использование памяти
- Server Uptime: время работы сервера
Логи сервера
Все события логируются в консоль:
[RoomManager] Created room: abc123 - Спальня
[ClientManager] Added client: uuid to room: abc123
[WebSocket] Client connected: uuid to room abc123
[VideoProcessor] Processed 150 frames
🔒 Безопасность
Рекомендации
- Измените пароли по умолчанию:
Отредактируйте список ADMINS в server.py:
ADMINS = [
["your_username", "your_secure_password"],
]
- Используйте HTTPS/WSS для продакшена:
Необходимо настроить SSL сертификаты и использовать https:// и wss://.
- Ограничьте доступ через firewall:
# Разрешить только локальные соединения
netsh advfirewall firewall set rule name="FastAPI" dir=in action=allow localip=192.168.1.0/24
📈 Масштабирование
Увеличение производительности
- Увеличьте JPEG качество в
server.py:
"jpeg_quality": 90, # 0-100, выше = больше качество
- Измените разрешение видео:
"video_width": 1280,
"video_height": 720,
- Добавьте больше потоков обработки в
VideoProcessor.
📚 Дополнительные ресурсы
💡 Советы и трюки
Трансляция на нескольких устройствах
- Создайте разные комнаты для каждого телефона
- Откройте несколько окон браузера с разными комнатами
- Сравнивайте потоки
Запись видео
На веб-интерфейсе можно использовать встроенный инструмент браузера для записи экрана.
Удаленный доступ
Для доступа через интернет используйте:
- VPN (OpenVPN, WireGuard)
- Tunnel сервисы (ngrok, CloudFlare Tunnel)
- Собственный reverse proxy (nginx)