Dodawanie dźwięku przestrzennego do aplikacji

Pakiet Jetpack XR SDK obsługuje odtwarzanie stereoskopowych filmów side-by-side na płaskich powierzchniach. W przypadku filmów stereoskopowych każdy kadr składa się z obrazu dla lewego i prawego oka, aby zapewnić widzom wrażenie głębi.

Niestereoskopowe filmy 2D możesz renderować w aplikacjach XR na Androida za pomocą standardowych interfejsów API multimediów używanych do tworzenia aplikacji na Androida na inne formaty.

Odtwarzanie filmów obok siebie za pomocą pakietu Jetpack XR SDK

W przypadku filmu side-by-side każdy kadr stereoskopowy jest wyświetlany jako 2 obrazy ułożone obok siebie. Górne i dolne klatki filmu są ułożone obok siebie w pionie.

Filmy side-by-side nie są kodekami, ale sposobem organizacji stereoskopowych klatek, co oznacza, że można je zakodować za pomocą dowolnego z kodekōw obsługiwanych przez Androida.

Możesz wczytać filmy obok siebie za pomocą Media3 Exoplayer, a następnie renderować je za pomocą nowego StereoSurfaceEntity. Aby utworzyć StereoSurfaceEntity, wywołaj funkcję createStereoSurfaceEntity()Session, jak w tym przykładzie.

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