Files
cam_control_android/FINAL_SOLUTION_NO_IMAGEANALYSIS.md
2025-12-09 21:21:26 +09:00

2.6 KiB
Raw Permalink Blame History

ФИНАЛЬНОЕ РЕШЕНИЕ: 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)
Статус: Готово к установке