2.6 KiB
2.6 KiB
✅ ФИНАЛЬНОЕ РЕШЕНИЕ: ImageAnalysis удалена
Проблема (найдена!)
ImageAnalysisAnalyzer E Failed to acquire image.
java.lang.IllegalStateException: maxImages (4) has already been acquired
Причина: ImageAnalysis с OUTPUT_IMAGE_FORMAT_RGBA_8888 вызывает конвертацию YUV→RGB в фоновом потоке. Это очень медленно и буфер ImageReader переполняется.
✅ Решение
ImageAnalysis полностью удалена из CameraManager:
// ❌ БЫЛО:
cameraProvider?.bindToLifecycle(
lifecycleOwner,
cameraSelector,
preview,
imageCapture,
imageAnalysis // ← УДАЛЕНО!
)
// ✅ СТАЛО:
cameraProvider?.bindToLifecycle(
lifecycleOwner,
cameraSelector,
preview,
imageCapture // ← Только эти две
)
Почему это работает
- Preview - показывает видео с камеры на экране ✅
- ImageCapture - захватывает кадры при необходимости ✅
- ImageAnalysis - НЕ НУЖНА для видеотрансляции ❌
Для видеотрансляции достаточно Preview. ImageAnalysis требуется только если нужна обработка каждого фрейма в реальном времени (распознавание, фильтры и т.п.).
Файлы изменены
CameraManager.kt:
- ✅ Удалена
val imageAnalysis = ... - ✅ Удалена переменная
analysisExecutor - ✅ Удалена функция
processFrame() - ✅ Удалены импорты
ImageAnalysisиImageProxy - ✅ Удален
imageAnalysisизbindToLifecycle()
Результат
На устройстве:
CameraManager: Camera started successfully with video streaming
✅ Нет ошибок ImageAnalyzer!
На сервере:
[VideoProcessor Process] ✓ Received frame: X bytes
✅ Видео должно отправляться!
Статус
- ✅ Код исправлен
- ⏳ Компиляция в процессе
- ⏳ После компиляции установить APK
Команды
# После компиляции:
./gradlew installDebug
# Проверить логи:
adb logcat | grep -E "CameraManager|WebSocket|Binary"
Дата: 2025-12-09
Версия: 1.4 (без ImageAnalysis)
Статус: ✅ Готово к установке