向应用添加空间视频

Jetpack XR SDK 支持在平面上播放立体并排视频。立体视频的每个帧都包含左眼和右眼图像,以便观看者感受到深度。

您可以使用用于在其他外形规格的设备上进行 Android 开发的标准媒体 API,在 Android XR 应用中渲染非立体 2D 视频。

使用 Jetpack XR SDK 播放并排视频

在并排视频中,每个立体图像帧都显示为两张图片,水平排列在一起。顶部和底部的视频帧垂直排列,彼此相邻。

并排视频不是编解码器,而是组织立体声帧的方式,这意味着它可以使用 Android 支持的任何编解码器进行编码。

您可以使用 Media3 Exoplayer 加载并排列视频,然后使用新的 StereoSurfaceEntity 进行渲染。如需创建 StereoSurfaceEntity,请对 Session 调用 createStereoSurfaceEntity(),如以下示例所示。

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()