Jetpack XR SDK поддерживает воспроизведение стереоскопического параллельного видео на плоских поверхностях. В стереоскопическом видео каждый кадр состоит из изображения для левого и правого глаза, что дает зрителям ощущение глубины.
Вы можете визуализировать нестереоскопическое 2D-видео в приложениях Android XR с помощью стандартных мультимедийных API, используемых для разработки Android в других форм-факторах.
Воспроизведение параллельного видео с помощью Jetpack XR SDK
При параллельном видео каждый стереоскопический кадр представляется как два изображения, расположенные горизонтально рядом друг с другом. Верхние и нижние видеокадры располагаются вертикально рядом друг с другом.
Параллельное видео — это не кодек, а скорее способ организации стереоскопических кадров, что означает, что оно может быть закодировано любым из кодеков, поддерживаемых Android .
Вы можете загрузить параллельное видео с помощью Media3 Exoplayer , а затем визуализировать его с помощью нового StereoSurfaceEntity
. Чтобы создать StereoSurfaceEntity
, вызовите createStereoSurfaceEntity()
в своем Session
, как показано в следующем примере.
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()