ویدیوی فضایی را به برنامه خود اضافه کنید

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.