Cómo agregar video espacial a tu app

El SDK de Jetpack XR admite la reproducción de video en paralelo estereoscópico en superficies planas. Con el video estereoscópico, cada fotograma consta de una imagen para el ojo izquierdo y otra para el derecho para darles a los usuarios una sensación de profundidad.

Puedes renderizar videos 2D no estereoscópicos en apps para Android XR con las APIs de contenido multimedia estándar que se usan para el desarrollo de Android en otros factores de forma.

Cómo reproducir videos en paralelo con el SDK de Jetpack XR

Con el video en paralelo, cada fotograma estereoscópico se presenta como dos imágenes dispuestas horizontalmente una al lado de la otra. Los fotogramas de video de la parte superior y la inferior se organizan verticalmente uno al lado del otro.

El video en paralelo no es un códec, sino una forma de organizar fotogramas estereoscópicos, lo que significa que se puede codificar en cualquiera de los códecs compatibles con Android.

Puedes cargar videos en paralelo con Media3 Exoplayer y, luego, renderizarlos con el nuevo StereoSurfaceEntity. Para crear un StereoSurfaceEntity, llama a createStereoSurfaceEntity() en tu Session, como se muestra en el siguiente ejemplo.

stereoSurfaceEntity = xrSession.createStereoSurfaceEntity(
            StereoSurfaceEntity.StereoMode.SIDE_BY_SIDE,
            Dimensions(2.0F, 2.0F, 0.0F),
            // Position 1.5 meters in front of user
            Pose(Vector3(0.0f, 0.0f, -1.5f), Quaternion(0.0f, 0.0f, 0.0f, 1.0f))
        )
        val videoUri = Uri.Builder()
            .scheme(ContentResolver.SCHEME_ANDROID_RESOURCE)
            .path(R.raw.sbs_test_video.toString())
            .build()
        val mediaItem = MediaItem.fromUri(videoUri)

        exoPlayer = ExoPlayer.Builder(this).build()
        exoPlayer.setVideoSurface(stereoSurfaceEntity!!.getSurface())
        exoPlayer.setMediaItem(mediaItem)
        exoPlayer.prepare()
        exoPlayer.play()