アプリに空間オーディオ動画を追加する

Jetpack XR SDK は、平面へのステレオ サイドバイサイド動画の再生をサポートしています。ステレオスコープ動画では、各フレームは左目と右目の画像で構成され、視聴者に奥行き感を与えます。

他のフォーム ファクタでの Android 開発に使用される標準メディア API を使用して、Android XR アプリで非ステレオ 2D 動画をレンダリングできます。

Jetpack XR SDK を使用して並列表示動画を再生する

左右分割動画では、各立体フレームが横方向に隣接して配置された 2 つの画像として表示されます。上部と下部の動画フレームは、垂直方向に隣接して配置されます。

サイドバイサイド動画はコーデックではなく、立体フレームを整理する方法です。つまり、Android でサポートされているコーデックのいずれかでエンコードできます。

Media3 Exoplayer を使用して並列表示動画を読み込み、新しい StereoSurfaceEntity を使用してレンダリングできます。StereoSurfaceEntity を作成するには、次の例に示すように SessioncreateStereoSurfaceEntity() を呼び出します。

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