Ihrer App ein räumliches Video hinzufügen

Das Jetpack XR SDK unterstützt die Wiedergabe von stereoskopischen Side-by-Side-Videos auf ebenen Oberflächen. Bei einem stereoskopischen Video besteht jeder Frame aus einem Bild für das linke und eins für das rechte Auge, um den Zuschauern einen Eindruck von der Tiefe zu vermitteln.

Sie können nicht-stereoskopische 2D-Videos in Android XR-Apps mit den Standardmedien-APIs rendern, die für die Android-Entwicklung auf anderen Formfaktoren verwendet werden.

Videos im Splitscreen-Modus mit dem Jetpack XR SDK abspielen

Bei einem Splitscreen-Video wird jeder stereoskopische Frame als zwei Bilder dargestellt, die horizontal nebeneinander angeordnet sind. Die Videoframes oben und unten sind vertikal nebeneinander angeordnet.

Side-by-Side-Video ist kein Codec, sondern eine Möglichkeit, stereoskopische Frames zu organisieren. Es kann also in einem beliebigen der von Android unterstützten Codecs codiert werden.

Du kannst ein Splitscreen-Video mit dem Media3 Exoplayer laden und dann mit dem neuen StereoSurfaceEntity rendern. Wenn Sie einen StereoSurfaceEntity erstellen möchten, rufen Sie createStereoSurfaceEntity() auf Ihrem Session auf, wie im folgenden Beispiel gezeigt.

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