Jetpack XR SDK از پخش ویدئوهای استریوسکوپی کنار هم بر روی سطوح صاف پشتیبانی می کند. در ویدیوهای استریوسکوپی، هر فریم از یک تصویر چشم چپ و یک تصویر چشم راست تشکیل شده است تا به بینندگان احساس عمق بدهد.
میتوانید ویدیوهای دوبعدی غیر استریوسکوپی را در برنامههای Android XR با APIهای رسانه استانداردی که برای توسعه Android استفاده میشوند، بر روی سایر فاکتورها ارائه دهید.
با استفاده از Jetpack XR SDK ویدیوی کنار هم را پخش کنید
با ویدیوی کنار هم، هر فریم استریوسکوپی به صورت دو تصویر که به صورت افقی در مجاورت یکدیگر قرار گرفته اند ارائه می شود. فریم های ویدیویی بالا و پایین به صورت عمودی در مجاورت یکدیگر قرار گرفته اند.
ویدئوی ساید بای ساید یک کدک نیست، بلکه روشی برای سازماندهی فریم های استریوسکوپی است، به این معنی که می توان آن را در هر کدک پشتیبانی شده توسط Android رمزگذاری کرد.
میتوانید ویدیو را با استفاده از Media3 Exoplayer بارگیری کنید و سپس آن را با استفاده از StereoSurfaceEntity
جدید رندر کنید. برای ایجاد StereoSurfaceEntity
، همانطور که در مثال زیر نشان داده شده است، StereoSurfaceEntity.create
را فراخوانی کنید.
stereoSurfaceEntity = StereoSurfaceEntity.create(
xrSession,
StereoSurfaceEntity.StereoMode.SIDE_BY_SIDE,
// 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)),
StereoSurfaceEntity.CanvasShape.Quad(1.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()
پخش ویدیوی 180 درجه و 360 درجه با استفاده از Jetpack XR SDK
آلفا02 و بالاتر
StereoSurfaceEntity
با شروع نسخه 1.0.0-alpha02
از پخش ویدیوهای 180 درجه روی سطوح نیمکره و ویدیوهای 360 درجه روی سطوح کروی پشتیبانی می کند. اگر فیلمها استریوسکوپی هستند، فایلها باید در قالب کنار هم باشند.
کد زیر نحوه تنظیم StereoSurfaceEntity
را برای پخش در نیمکره 180 درجه و کره 360 درجه نشان می دهد. هنگام استفاده از این اشکال بوم، سطح را با استفاده از حالت سر کاربر برای ارائه یک تجربه همه جانبه قرار دهید.
// Set up the surface for playing a 180° video on a hemisphere.
hemisphereStereoSurfaceEntity =
StereoSurfaceEntity.create(
xrCoreSession,
StereoSurfaceEntity.StereoMode.SIDE_BY_SIDE,
xrCoreSession.spatialUser.head?.transformPoseTo(
Pose.Identity,
xrCoreSession.activitySpace
)!!,
StereoSurfaceEntity.CanvasShape.Vr180Hemisphere(1.0f),
)
// ... and use the surface for playing the media.
// Set up the surface for playing a 360° video on a sphere.
sphereStereoSurfaceEntity =
StereoSurfaceEntity.create(
xrCoreSession,
StereoSurfaceEntity.StereoMode.TOP_BOTTOM,
xrCoreSession.spatialUser.head?.transformPoseTo(
Pose.Identity,
xrCoreSession.activitySpace
)!!,
StereoSurfaceEntity.CanvasShape.Vr360Sphere(1.0f),
)
// ... and use the surface for playing the media.