Идея заключается в разработке Android-приложения, которое будет передавать изображение экрана с устройства на сервер с минимальной потерей качества и кадров. Оно предназначено для работы в VR-гарнитуре PICO 4, где важно учитывать специфику захвата изображения и совместимости с SDK гарнитуры. Здесь я описал своё видение функционала и требований, но если у вас есть предложения по улучшению или более оптимальные варианты, обсудим их. Также, при необходимости, бюджет может быть скорректирован, но в разумных пределах.
1. Общие требования:
- Платформа: Android (с прицелом на VR-гарнитуру PICO 4).
- Минимальная версия SDK: 29.
- Совместимость с VR: Использование SDK PICO 4 для максимальной интеграции с гарнитурой (опционально — задействовать функцию Passthrough для улучшения качества визуализации).
- Захват и передача экрана: Главные приоритеты — минимальная потеря качества и стабильность кадров. Планируем использовать `MediaProjection` и `VirtualDisplay` из Android SDK.
2. Основной функционал:
Захват экрана:
- Разрешение: До 1920x1080.
- Фреймрейт: Поддержка стабильных 30–60 кадров в секунду (fps) с минимальными задержками. Это необходимо, так как приложение будет передавать изображение для дальнейшего анализа (например, распознавания лиц).
Передача видео с буферизацией:
- Качество: Для предотвращения потерь качества при низкой скорости интернета или непостоянном соединении желательно реализовать буферизацию.
- Буферизация: Должен быть локальный буфер, который позволит временно сохранять кадры при потере соединения, чтобы избежать прерывания. Допустимая задержка буфера — 2–5 секунд.
- Обработка восстановления: При восстановлении соединения кадры должны передаваться в строгой последовательности, чтобы не было пропусков и для обеспечения корректного анализа.
Протокол передачи:
- Предпочтительные варианты:
RTSP: Оптимальный вариант для потоковой передачи, совместимый с инструментами FFmpeg, aiortc и OpenCV для приёма и обработки данных.
WebRTC (опционально): Можно рассмотреть как альтернативу RTSP. Если WebRTC окажется более гибким, желательно минимизировать использование STUN/TURN-серверов (так как планируется стабильное P2P-соединение).
- Качество передачи: Важен баланс между высоким качеством изображения и стабильностью передачи, включая доставку всех кадров в правильной последовательности даже при низкой скорости сети.
3. Требования к качеству видео:
- Максимальное качество: Должно поддерживаться максимальное качество картинки при разрешении 1920x1080 без излишней компрессии или пикселизации.
- Корректное распознавание лиц: Качество изображения должно обеспечивать возможность точного анализа лиц, чтобы в дальнейшем можно было проводить Reverse Image Search.
- Оптимизация трафика: Передача данных должна быть оптимизирована для уменьшения нагрузки на сеть, но при этом не должна ухудшать качество изображения.
4. Бэкэнд для анализа изображений
- В идеале предусмотреть бэкэнд-сервер для обработки поступающего изображения, интегрированный с OpenCV, который будет обрабатывать видео-поток для анализа лиц или других объектов.
- Бэкэнд должен принимать поток RTSP/WebRTC, обеспечивая быстрый приём и анализ изображения.
- Требования по стабильности: минимальная задержка при передаче и обработке видео для обеспечения высокого качества распознавания лиц.
Полезные ссылки для ознакомления с PICO SDK:
- Документация PICO SDK
developer.picoxr.com/docu... - Ресурсы и эмулятор PICO
developer.picoxr.com/reso... > Это не финальное ТЗ, а мой ориентир. Если у вас есть идеи, как улучшить или оптимизировать реализацию, буду рад обсудить.