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