Я работаю над плагином для 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
Как получить доступ к видео с камеры Meta Quest 3? ⇐ Android
Форум для тех, кто программирует под Android
-
Anonymous
1768830107
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)
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79871234/how-to-get-access-to-the-meta-quest-3-camera-feed[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия