Как получить доступ к видео с камеры Meta Quest 3?Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Как получить доступ к видео с камеры Meta Quest 3?

Сообщение Anonymous »

Я работаю над плагином для Godot и хочу получить видео с камеры мета-квеста 3, который использует игрок. Ниже приведена моя функция, которая использует API-интерфейс Android camera2 для попытки получить доступ к каналу камеры из квеста 3. Однако это возвращает только черный экран.
Цель состоит в том, чтобы получить канал камеры, чтобы я мог использовать на нем трекер тела Mediapipe:

Руководство по которому можно найти здесь.
Я специально не ищу, как активировать сквозной режим, просто чтобы получить канал камеры в коде.
Кто-нибудь знает, как мне получить доступ к видео с камеры?
@UsedByGodot
fun startCameraFeed() {
if (ActivityCompat.checkSelfPermission(context, Manifest.permission.CAMERA)
!= PackageManager.PERMISSION_GRANTED
) {
godot.getActivity()?.requestPermissions(arrayOf(Manifest.permission.CAMERA), 0)
debug("permission requested and returning")
return
}

cameraThread = HandlerThread("CameraThread").also { it.start() }
cameraHandler = Handler(cameraThread!!.looper)

val cameraId = findPassthroughCameraId() ?: return
debug("Found a passthrough camera ID")

imageReader = ImageReader.newInstance(width, height, ImageFormat.YUV_420_888, 2)
imageReader!!.setOnImageAvailableListener({ reader ->
val image = reader.acquireLatestImage()
if (image == null) {
debug("ImageAvailableListener triggered → no image")
return@setOnImageAvailableListener
}
val rgb = yuv420ToRgb(image)
image.close()

lock.withLock {
latestRgb = rgb
}

}, cameraHandler)

cameraManager.openCamera(cameraId, object : CameraDevice.StateCallback() {
override fun onOpened(device: CameraDevice) {
cameraDevice = device
val surfaces = listOf(imageReader!!.surface)
device.createCaptureSession(surfaces, object : CameraCaptureSession.StateCallback() {
override fun onConfigured(session: CameraCaptureSession) {
captureSession = session
val builder = device.createCaptureRequest(CameraDevice.TEMPLATE_PREVIEW).apply {
addTarget(imageReader!!.surface)
}
session.setRepeatingRequest(builder.build(), null, cameraHandler)
}

override fun onConfigureFailed(session: CameraCaptureSession) {
// Handle configuration error
}
}, cameraHandler)
}

override fun onDisconnected(device: CameraDevice) = device.close()

override fun onError(device: CameraDevice, error: Int) = device.close()
}, cameraHandler)
}


Подробнее здесь: https://stackoverflow.com/questions/798 ... amera-feed
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»