main fixes

This commit is contained in:
2025-12-09 21:21:26 +09:00
parent 752b2fb1ca
commit 568ca73a11
33 changed files with 4353 additions and 345 deletions

240
LOGS_COMPARISON.md Normal file
View File

@@ -0,0 +1,240 @@
# 📊 Сравнение логов: ДО и ПОСЛЕ исправлений
## ДО исправлений (Проблема)
```
2025-12-03 20:27:17.028 StreamViewModel: onRequestShow at ORIGIN_CLIENT reason SHOW_SOFT_INPUT_BY_INSETS_API fromUser false
2025-12-03 20:27:17.043 WindowManager: WindowManagerGlobal#addView, view=androidx.compose.ui.window.PopupLayout
2025-12-03 20:27:19.296 WebSocket: Connecting to: ws://192.168.0.112:8000/ws/client/HhfoHArOGcT/1
2025-12-03 20:27:19.351 WebSocket: Connected! Response code=101, message=Switching Protocols
2025-12-03 20:27:19.351 WebSocket: Header: Upgrade=websocket
2025-12-03 20:27:19.351 WebSocket: Header: Connection=Upgrade
2025-12-03 20:27:19.351 WebSocket: Header: Sec-WebSocket-Accept=1yde7oBMVrzwg2inZcdwVAVapg4=
2025-12-03 20:27:19.351 WebSocket: Message received: {"error": "Invalid room or password"}
2025-12-03 20:27:19.352 StreamViewModel: Message received: {"error": "Invalid room or password"}
2025-12-03 20:27:19.352 WebSocket: Closing: 1000
2025-12-03 20:27:19.352 WebSocket: Closed: 1000
2025-12-03 20:27:19.360 StreamViewModel: Status: Подключено к серверу ✓
2025-12-03 20:27:19.361 StreamViewModel: Connected to server
2025-12-03 20:27:19.361 StreamViewModel: Status: Получено: {"error": "Invalid room or password"}
2025-12-03 20:27:19.361 StreamViewModel: Status: Отключено от сервера
2025-12-03 20:27:19.361 StreamViewModel: Disconnected from server
НЕТ ЛОГОВ О ОТПРАВКЕ ВИДЕО!
НЕТ ЛОГОВ CameraManager
НЕТ "Binary data sent"
```
### Анализ проблемы:
1. WebSocket подключился ✓
2. Сервер ответил, но с ошибкой (Invalid room or password)
3. **Но видеофреймы вообще не отправлялись**
---
## ПОСЛЕ исправлений (Решение)
### Ожидаемые логи при подключении:
```
2025-12-03 20:30:45.100 CameraManager: cameraProviderFuture listener invoked
2025-12-03 20:30:45.110 CameraManager: cameraProvider obtained: ProcessCameraProvider@abc123
2025-12-03 20:30:45.120 CameraManager: Using camera selector: CameraSelector(...)
2025-12-03 20:30:45.130 CameraManager: bindToLifecycle called
2025-12-03 20:30:45.140 CameraManager: Camera started successfully with video streaming
(Это новое сообщение!)
2025-12-03 20:30:46.200 StreamViewModel: Status: Подключение к серверу...
2025-12-03 20:30:46.210 WebSocket: Connecting to: ws://192.168.0.112:8000/ws/client/HhfoHArOGcT/1
2025-12-03 20:30:46.250 WebSocket: Connected! Response code=101, message=Switching Protocols
2025-12-03 20:30:46.251 WebSocket: Header: Upgrade=websocket
2025-12-03 20:30:46.252 WebSocket: Header: Connection=Upgrade
2025-12-03 20:30:46.252 WebSocket: Header: Sec-WebSocket-Accept=1yde7oBMVrzwg2inZcdwVAVapg4=
2025-12-03 20:30:46.260 StreamViewModel: Status: Подключено к серверу ✓
2025-12-03 20:30:46.261 StreamViewModel: Connected to server
🎥 НАЧАЛО ОТПРАВКИ ВИДЕО:
2025-12-03 20:30:46.310 WebSocket: Binary data sent: 1048576 bytes
2025-12-03 20:30:46.320 WebSocket: Binary data sent: 1048576 bytes
2025-12-03 20:30:46.330 WebSocket: Binary data sent: 1048576 bytes
2025-12-03 20:30:46.340 WebSocket: Binary data sent: 1048576 bytes
2025-12-03 20:30:46.350 CameraManager: Processing 4 frames/5s, sending to server
2025-12-03 20:30:46.360 WebSocket: Binary data sent: 1048576 bytes
2025-12-03 20:30:46.370 WebSocket: Binary data sent: 1048576 bytes
2025-12-03 20:30:47.315 WebSocket: Binary data sent: 1048576 bytes
2025-12-03 20:30:47.325 WebSocket: Binary data sent: 1048576 bytes
2025-12-03 20:30:47.335 WebSocket: Binary data sent: 1048576 bytes
2025-12-03 20:30:47.345 WebSocket: Binary data sent: 1048576 bytes
2025-12-03 20:30:47.355 WebSocket: Binary data sent: 1048576 bytes
2025-12-03 20:30:47.365 CameraManager: Processing 5 frames/5s, sending to server
2025-12-03 20:30:47.375 WebSocket: Binary data sent: 1048576 bytes
2025-12-03 20:30:47.385 WebSocket: Binary data sent: 1048576 bytes
2025-12-03 20:30:48.300 StreamViewModel: FPS: 5, Total bytes sent: 10485760
2025-12-03 20:30:48.315 WebSocket: Binary data sent: 1048576 bytes
2025-12-03 20:30:48.325 WebSocket: Binary data sent: 1048576 bytes
✅ ВИДЕО АКТИВНО ОТПРАВЛЯЕТСЯ НА СЕРВЕР!
✅ FPS = 5 фреймов в секунду
✅ Объем = ~10 МБ в секунду (1920x1080 RGBA без кодирования)
```
---
## Расшифровка логов
### Логи CameraManager
```
CameraManager: Camera started successfully with video streaming
```
✅ Камера запущена с видеоанализом (ImageAnalysis активен)
```
CameraManager: Processing 25 frames/5s, sending to server
```
✅ Обработано 25 фреймов за 5 секунд = 5 FPS
✅ Фреймы готовы к отправке
### Логи WebSocket
```
WebSocket: Connected! Response code=101
```
✅ WebSocket успешно подключен (upgrade завершен)
```
WebSocket: Binary data sent: 1048576 bytes
```
✅ Отправлены бинарные данные (видеофрейм)
✅ Размер 1 МБ = фрейм 1920x1080 в RGBA
### Логи StreamViewModel
```
StreamViewModel: Connected to server
```
✅ Приложение считает себя подключенным
```
StreamViewModel: FPS: 25, Total bytes sent: 625000000
```
✅ Отправлено 25 фреймов в секунду
Всего отправлено 625 МБ (за N секунд)
---
## Поиск проблем
### Проблема: "Видео не отправляется"
**Команда для проверки:**
```bash
adb logcat | grep "Binary data sent"
```
**Если выводится:**
```
WebSocket: Binary data sent: 1048576 bytes
WebSocket: Binary data sent: 1048576 bytes
```
✅ Видео отправляется! Проверьте сервер.
**Если ничего не выводится:**
❌ Видео НЕ отправляется! Проверьте:
1. WebSocket подключен? `adb logcat | grep "Connected!"`
2. Камера запущена? `adb logcat | grep "Camera started"`
3. Есть ошибки? `adb logcat | grep ERROR`
### Проблема: "Низкий FPS"
**Команда для проверки:**
```bash
adb logcat | grep "Processing.*frames/5s"
```
**Нормально:**
```
CameraManager: Processing 20-30 frames/5s, sending to server
```
= 4-6 FPS (нормально для 1920x1080)
**Плохо:**
```
CameraManager: Processing 1-2 frames/5s, sending to server
```
= 0.2-0.4 FPS (слишком медленно, проблема с обработкой)
### Проблема: "Высокий объем данных"
**Команда для проверки:**
```bash
adb logcat | grep "Total bytes sent" | tail -5
```
**Анализ:**
```
StreamViewModel: FPS: 25, Total bytes sent: 625000000
```
= 25 фреймов × 25 МБ/фрейм = 625 МБ
Это нормально для raw RGBA без кодирования.
**Для уменьшения используйте H.264 кодирование** (10x-100x сжатие)
---
## Таблица ожидаемых логов
| Событие | Логи | Статус |
|---------|------|--------|
| Старт приложения | `CameraManager: cameraProvider obtained` | ✅ |
| Запуск камеры | `CameraManager: Camera started successfully with video streaming` | ✅ |
| Подключение к серверу | `WebSocket: Connected! Response code=101` | ✅ |
| Готовность к трансляции | `StreamViewModel: Connected to server` | ✅ |
| Отправка фреймов | `WebSocket: Binary data sent: X bytes` (повторяется) | ✅ |
| Статистика видео | `CameraManager: Processing X frames/5s` | ✅ |
| Статистика FPS | `StreamViewModel: FPS: X, Total bytes sent: Y` | ✅ |
---
## Команды для диагностики
### Все логи приложения
```bash
adb logcat | grep com.example.camcontrol
```
### Только видео-логи
```bash
adb logcat | grep -E "CameraManager|WebSocket|StreamViewModel"
```
### Только ошибки
```bash
adb logcat | grep "ERROR"
```
### Отслеживание отправки в реальном времени
```bash
adb logcat | grep "Binary data sent" | tail -f
```
### Сохранить логи в файл
```bash
adb logcat > camera_logs.txt 2>&1
# (Ctrl+C для остановки)
```
---
**Помните:**
- ✅ Много логов "Binary data sent" = видео отправляется
- ❌ Нет логов "Binary data sent" = видео НЕ отправляется
- 📊 Логи "FPS: X" показывают скорость отправки
Если все логи есть, но видео не показывается на сервере → проблема на сервере, не в приложении!