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

Jetpack XR SDK از پخش ویدئوهای استریوسکوپی کنار هم بر روی سطوح صاف پشتیبانی می کند. در ویدیوهای استریوسکوپی، هر فریم از یک تصویر چشم چپ و یک تصویر چشم راست تشکیل شده است تا به بینندگان احساس عمق بدهد - همچنین به عنوان stereopsis شناخته می شود.

می‌توانید ویدیوهای دوبعدی غیر استریوسکوپی را در برنامه‌های Android XR با APIهای رسانه استانداردی که برای توسعه Android استفاده می‌شوند، بر روی سایر فاکتورها ارائه دهید.

با استفاده از Jetpack SceneCore ویدیوی کنار هم را پخش کنید

با ویدیوی کنار هم، هر فریم استریوسکوپی به صورت دو تصویر که به صورت افقی در مجاورت یکدیگر قرار گرفته اند ارائه می شود. فریم های ویدیویی بالا و پایین به صورت عمودی در مجاورت یکدیگر قرار گرفته اند.

ویدئوی ساید بای ساید یک کدک نیست، بلکه روشی برای سازماندهی فریم های استریوسکوپی است، به این معنی که می توان آن را در هر کدک پشتیبانی شده توسط Android رمزگذاری کرد.

می‌توانید ویدیو را با استفاده از Media3 Exoplayer بارگیری کنید و سپس آن را با استفاده از SurfaceEntity جدید رندر کنید. برای ایجاد یک SurfaceEntity ، همانطور که در مثال زیر نشان داده شده است، SurfaceEntity.create را فراخوانی کنید.

val stereoSurfaceEntity = SurfaceEntity.create(
    xrSession,
    SurfaceEntity.StereoMode.SIDE_BY_SIDE,
    Pose(Vector3(0.0f, 0.0f, -1.5f)),
    SurfaceEntity.CanvasShape.Quad(1.0f, 1.0f)
)
val videoUri = Uri.Builder()
    .scheme(ContentResolver.SCHEME_ANDROID_RESOURCE)
    .path("sbs_video.mp4")
    .build()
val mediaItem = MediaItem.fromUri(videoUri)

val exoPlayer = ExoPlayer.Builder(this).build()
exoPlayer.setVideoSurface(stereoSurfaceEntity.getSurface())
exoPlayer.setMediaItem(mediaItem)
exoPlayer.prepare()
exoPlayer.play()

ویدیوی MV-HEVC را با استفاده از Jetpack SceneCore پخش کنید

استاندارد کدک MV-HEVC برای ویدیوهای استریوسکوپی بهینه و طراحی شده است و به برنامه شما امکان می دهد فیلم های همهجانبه را با کیفیت عالی به طور موثر پخش کند. فایل های MV-HEVC دارای یک جریان اولیه، معمولاً چشم چپ، و یک جریان استریو با چشم دیگر هستند.

مشابه ویدیوی کنار هم، می‌توانید آن را با استفاده از Media3 Exoplayer بارگیری کنید و با استفاده از SurfaceEntity آن را رندر کنید. هنگام فراخوانی SurfaceEntity.create باید مشخص کنید که آیا فایل MV-HEVC شما در پارامتر stereoMode در سمت چپ یا راست اصلی باشد.

// Create the SurfaceEntity with the StereoMode corresponding to the MV-HEVC content
val stereoSurfaceEntity = SurfaceEntity.create(
    xrSession,
    SurfaceEntity.StereoMode.MULTIVIEW_LEFT_PRIMARY,
    Pose(Vector3(0.0f, 0.0f, -1.5f)),
    SurfaceEntity.CanvasShape.Quad(1.0f, 1.0f)
)
val videoUri = Uri.Builder()
    .scheme(ContentResolver.SCHEME_ANDROID_RESOURCE)
    .path("mvhevc_video.mp4")
    .build()
val mediaItem = MediaItem.fromUri(videoUri)

val exoPlayer = ExoPlayer.Builder(this).build()
exoPlayer.setVideoSurface(stereoSurfaceEntity.getSurface())
exoPlayer.setMediaItem(mediaItem)
exoPlayer.prepare()
exoPlayer.play()

پخش ویدیوی 180 درجه و 360 درجه با استفاده از Jetpack SceneCore

SurfaceEntity از پخش ویدیوهای 180 درجه روی سطوح نیمکره و ویدیوهای 360 درجه روی سطوح کروی پشتیبانی می کند. پارامتر radius به طور پیش فرض به اندازه شعاعی سطوح مربوطه بر حسب متر اشاره دارد.

کد زیر نحوه تنظیم SurfaceEntity را برای پخش در نیمکره 180 درجه و کره 360 درجه نشان می دهد. هنگام استفاده از این اشکال بوم، سطح را با استفاده از حالت سر کاربر برای ارائه یک تجربه همه جانبه قرار دهید.

// Set up the surface for playing a 180° video on a hemisphere.
val hemisphereStereoSurfaceEntity =
    SurfaceEntity.create(
        xrSession,
        SurfaceEntity.StereoMode.SIDE_BY_SIDE,
        xrSession.scene.spatialUser.head?.transformPoseTo(
            Pose.Identity,
            xrSession.scene.activitySpace
        )!!,
        SurfaceEntity.CanvasShape.Vr180Hemisphere(1.0f),
    )
// ... and use the surface for playing the media.

// Set up the surface for playing a 360° video on a sphere.
val sphereStereoSurfaceEntity =
    SurfaceEntity.create(
        xrSession,
        SurfaceEntity.StereoMode.TOP_BOTTOM,
        xrSession.scene.spatialUser.head?.transformPoseTo(
            Pose.Identity,
            xrSession.scene.activitySpace
        )!!,
        SurfaceEntity.CanvasShape.Vr360Sphere(1.0f),
    )
// ... and use the surface for playing the media.

پخش ویدیوی فضایی با استفاده از Jetpack Compose برای XR

اگر علاقه مند به یادگیری نحوه پخش ویدیو با استفاده از Jetpack Compose برای XR هستید، یاد بگیرید که چگونه یک سطح برای محتوای تصویر یا ویدیو اضافه کنید .

،

Jetpack XR SDK از پخش ویدئوهای استریوسکوپی کنار هم بر روی سطوح صاف پشتیبانی می کند. در ویدیوهای استریوسکوپی، هر فریم از یک تصویر چشم چپ و یک تصویر چشم راست تشکیل شده است تا به بینندگان احساس عمق بدهد - همچنین به عنوان stereopsis شناخته می شود.

می‌توانید ویدیوهای دوبعدی غیر استریوسکوپی را در برنامه‌های Android XR با APIهای رسانه استانداردی که برای توسعه Android استفاده می‌شوند، بر روی سایر فاکتورها ارائه دهید.

با استفاده از Jetpack SceneCore ویدیوی کنار هم را پخش کنید

با ویدیوی کنار هم، هر فریم استریوسکوپی به صورت دو تصویر که به صورت افقی در مجاورت یکدیگر قرار گرفته اند ارائه می شود. فریم های ویدیویی بالا و پایین به صورت عمودی در مجاورت یکدیگر قرار گرفته اند.

ویدئوی ساید بای ساید یک کدک نیست، بلکه روشی برای سازماندهی فریم های استریوسکوپی است، به این معنی که می توان آن را در هر کدک پشتیبانی شده توسط Android رمزگذاری کرد.

می‌توانید ویدیو را با استفاده از Media3 Exoplayer بارگیری کنید و سپس آن را با استفاده از SurfaceEntity جدید رندر کنید. برای ایجاد یک SurfaceEntity ، همانطور که در مثال زیر نشان داده شده است، SurfaceEntity.create را فراخوانی کنید.

val stereoSurfaceEntity = SurfaceEntity.create(
    xrSession,
    SurfaceEntity.StereoMode.SIDE_BY_SIDE,
    Pose(Vector3(0.0f, 0.0f, -1.5f)),
    SurfaceEntity.CanvasShape.Quad(1.0f, 1.0f)
)
val videoUri = Uri.Builder()
    .scheme(ContentResolver.SCHEME_ANDROID_RESOURCE)
    .path("sbs_video.mp4")
    .build()
val mediaItem = MediaItem.fromUri(videoUri)

val exoPlayer = ExoPlayer.Builder(this).build()
exoPlayer.setVideoSurface(stereoSurfaceEntity.getSurface())
exoPlayer.setMediaItem(mediaItem)
exoPlayer.prepare()
exoPlayer.play()

ویدیوی MV-HEVC را با استفاده از Jetpack SceneCore پخش کنید

استاندارد کدک MV-HEVC برای ویدیوهای استریوسکوپی بهینه و طراحی شده است و به برنامه شما امکان می دهد فیلم های همهجانبه را با کیفیت عالی به طور موثر پخش کند. فایل های MV-HEVC دارای یک جریان اولیه، معمولاً چشم چپ، و یک جریان استریو با چشم دیگر هستند.

مشابه ویدیوی کنار هم، می‌توانید آن را با استفاده از Media3 Exoplayer بارگیری کنید و با استفاده از SurfaceEntity آن را رندر کنید. هنگام فراخوانی SurfaceEntity.create باید مشخص کنید که آیا فایل MV-HEVC شما در پارامتر stereoMode در سمت چپ یا راست اصلی باشد.

// Create the SurfaceEntity with the StereoMode corresponding to the MV-HEVC content
val stereoSurfaceEntity = SurfaceEntity.create(
    xrSession,
    SurfaceEntity.StereoMode.MULTIVIEW_LEFT_PRIMARY,
    Pose(Vector3(0.0f, 0.0f, -1.5f)),
    SurfaceEntity.CanvasShape.Quad(1.0f, 1.0f)
)
val videoUri = Uri.Builder()
    .scheme(ContentResolver.SCHEME_ANDROID_RESOURCE)
    .path("mvhevc_video.mp4")
    .build()
val mediaItem = MediaItem.fromUri(videoUri)

val exoPlayer = ExoPlayer.Builder(this).build()
exoPlayer.setVideoSurface(stereoSurfaceEntity.getSurface())
exoPlayer.setMediaItem(mediaItem)
exoPlayer.prepare()
exoPlayer.play()

پخش ویدیوی 180 درجه و 360 درجه با استفاده از Jetpack SceneCore

SurfaceEntity از پخش ویدیوهای 180 درجه روی سطوح نیمکره و ویدیوهای 360 درجه روی سطوح کروی پشتیبانی می کند. پارامتر radius به طور پیش فرض به اندازه شعاعی سطوح مربوطه بر حسب متر اشاره دارد.

کد زیر نحوه تنظیم SurfaceEntity را برای پخش در نیمکره 180 درجه و کره 360 درجه نشان می دهد. هنگام استفاده از این اشکال بوم، سطح را با استفاده از حالت سر کاربر برای ارائه یک تجربه همه جانبه قرار دهید.

// Set up the surface for playing a 180° video on a hemisphere.
val hemisphereStereoSurfaceEntity =
    SurfaceEntity.create(
        xrSession,
        SurfaceEntity.StereoMode.SIDE_BY_SIDE,
        xrSession.scene.spatialUser.head?.transformPoseTo(
            Pose.Identity,
            xrSession.scene.activitySpace
        )!!,
        SurfaceEntity.CanvasShape.Vr180Hemisphere(1.0f),
    )
// ... and use the surface for playing the media.

// Set up the surface for playing a 360° video on a sphere.
val sphereStereoSurfaceEntity =
    SurfaceEntity.create(
        xrSession,
        SurfaceEntity.StereoMode.TOP_BOTTOM,
        xrSession.scene.spatialUser.head?.transformPoseTo(
            Pose.Identity,
            xrSession.scene.activitySpace
        )!!,
        SurfaceEntity.CanvasShape.Vr360Sphere(1.0f),
    )
// ... and use the surface for playing the media.

پخش ویدیوی فضایی با استفاده از Jetpack Compose برای XR

اگر علاقه مند به یادگیری نحوه پخش ویدیو با استفاده از Jetpack Compose برای XR هستید، یاد بگیرید که چگونه یک سطح برای محتوای تصویر یا ویدیو اضافه کنید .

،

Jetpack XR SDK از پخش ویدئوهای استریوسکوپی کنار هم بر روی سطوح صاف پشتیبانی می کند. در ویدیوهای استریوسکوپی، هر فریم از یک تصویر چشم چپ و یک تصویر چشم راست تشکیل شده است تا به بینندگان احساس عمق بدهد - همچنین به عنوان stereopsis شناخته می شود.

می‌توانید ویدیوهای دوبعدی غیر استریوسکوپی را در برنامه‌های Android XR با APIهای رسانه استانداردی که برای توسعه Android استفاده می‌شوند، بر روی سایر فاکتورها ارائه دهید.

با استفاده از Jetpack SceneCore ویدیوی کنار هم را پخش کنید

با ویدیوی کنار هم، هر فریم استریوسکوپی به صورت دو تصویر که به صورت افقی در مجاورت یکدیگر قرار گرفته اند ارائه می شود. فریم های ویدیویی بالا و پایین به صورت عمودی در مجاورت یکدیگر قرار گرفته اند.

ویدئوی ساید بای ساید یک کدک نیست، بلکه روشی برای سازماندهی فریم های استریوسکوپی است، به این معنی که می توان آن را در هر کدک پشتیبانی شده توسط Android رمزگذاری کرد.

می‌توانید ویدیو را با استفاده از Media3 Exoplayer بارگیری کنید و سپس آن را با استفاده از SurfaceEntity جدید رندر کنید. برای ایجاد یک SurfaceEntity ، همانطور که در مثال زیر نشان داده شده است، SurfaceEntity.create را فراخوانی کنید.

val stereoSurfaceEntity = SurfaceEntity.create(
    xrSession,
    SurfaceEntity.StereoMode.SIDE_BY_SIDE,
    Pose(Vector3(0.0f, 0.0f, -1.5f)),
    SurfaceEntity.CanvasShape.Quad(1.0f, 1.0f)
)
val videoUri = Uri.Builder()
    .scheme(ContentResolver.SCHEME_ANDROID_RESOURCE)
    .path("sbs_video.mp4")
    .build()
val mediaItem = MediaItem.fromUri(videoUri)

val exoPlayer = ExoPlayer.Builder(this).build()
exoPlayer.setVideoSurface(stereoSurfaceEntity.getSurface())
exoPlayer.setMediaItem(mediaItem)
exoPlayer.prepare()
exoPlayer.play()

ویدیوی MV-HEVC را با استفاده از Jetpack SceneCore پخش کنید

استاندارد کدک MV-HEVC برای ویدیوهای استریوسکوپی بهینه و طراحی شده است و به برنامه شما امکان می دهد فیلم های همهجانبه را با کیفیت عالی به طور موثر پخش کند. فایل های MV-HEVC دارای یک جریان اولیه، معمولاً چشم چپ، و یک جریان استریو با چشم دیگر هستند.

مشابه ویدیوی کنار هم، می‌توانید آن را با استفاده از Media3 Exoplayer بارگیری کنید و با استفاده از SurfaceEntity آن را رندر کنید. هنگام فراخوانی SurfaceEntity.create باید مشخص کنید که آیا فایل MV-HEVC شما در پارامتر stereoMode در سمت چپ یا راست اصلی باشد.

// Create the SurfaceEntity with the StereoMode corresponding to the MV-HEVC content
val stereoSurfaceEntity = SurfaceEntity.create(
    xrSession,
    SurfaceEntity.StereoMode.MULTIVIEW_LEFT_PRIMARY,
    Pose(Vector3(0.0f, 0.0f, -1.5f)),
    SurfaceEntity.CanvasShape.Quad(1.0f, 1.0f)
)
val videoUri = Uri.Builder()
    .scheme(ContentResolver.SCHEME_ANDROID_RESOURCE)
    .path("mvhevc_video.mp4")
    .build()
val mediaItem = MediaItem.fromUri(videoUri)

val exoPlayer = ExoPlayer.Builder(this).build()
exoPlayer.setVideoSurface(stereoSurfaceEntity.getSurface())
exoPlayer.setMediaItem(mediaItem)
exoPlayer.prepare()
exoPlayer.play()

پخش ویدیوی 180 درجه و 360 درجه با استفاده از Jetpack SceneCore

SurfaceEntity از پخش ویدیوهای 180 درجه روی سطوح نیمکره و ویدیوهای 360 درجه روی سطوح کروی پشتیبانی می کند. پارامتر radius به طور پیش فرض به اندازه شعاعی سطوح مربوطه بر حسب متر اشاره دارد.

کد زیر نحوه تنظیم SurfaceEntity را برای پخش در نیمکره 180 درجه و کره 360 درجه نشان می دهد. هنگام استفاده از این اشکال بوم، سطح را با استفاده از حالت سر کاربر برای ارائه یک تجربه همه جانبه قرار دهید.

// Set up the surface for playing a 180° video on a hemisphere.
val hemisphereStereoSurfaceEntity =
    SurfaceEntity.create(
        xrSession,
        SurfaceEntity.StereoMode.SIDE_BY_SIDE,
        xrSession.scene.spatialUser.head?.transformPoseTo(
            Pose.Identity,
            xrSession.scene.activitySpace
        )!!,
        SurfaceEntity.CanvasShape.Vr180Hemisphere(1.0f),
    )
// ... and use the surface for playing the media.

// Set up the surface for playing a 360° video on a sphere.
val sphereStereoSurfaceEntity =
    SurfaceEntity.create(
        xrSession,
        SurfaceEntity.StereoMode.TOP_BOTTOM,
        xrSession.scene.spatialUser.head?.transformPoseTo(
            Pose.Identity,
            xrSession.scene.activitySpace
        )!!,
        SurfaceEntity.CanvasShape.Vr360Sphere(1.0f),
    )
// ... and use the surface for playing the media.

پخش ویدیوی فضایی با استفاده از Jetpack Compose برای XR

اگر علاقه مند به یادگیری نحوه پخش ویدیو با استفاده از Jetpack Compose برای XR هستید، یاد بگیرید که چگونه یک سطح برای محتوای تصویر یا ویدیو اضافه کنید .

،

Jetpack XR SDK از پخش ویدئوهای استریوسکوپی کنار هم بر روی سطوح صاف پشتیبانی می کند. در ویدیوهای استریوسکوپی، هر فریم از یک تصویر چشم چپ و یک تصویر چشم راست تشکیل شده است تا به بینندگان احساس عمق بدهد - همچنین به عنوان stereopsis شناخته می شود.

می‌توانید ویدیوهای دوبعدی غیر استریوسکوپی را در برنامه‌های Android XR با APIهای رسانه استانداردی که برای توسعه Android استفاده می‌شوند، بر روی سایر فاکتورها ارائه دهید.

با استفاده از Jetpack SceneCore ویدیوی کنار هم را پخش کنید

با ویدیوی کنار هم، هر فریم استریوسکوپی به صورت دو تصویر که به صورت افقی در مجاورت یکدیگر قرار گرفته اند ارائه می شود. فریم های ویدیویی بالا و پایین به صورت عمودی در مجاورت یکدیگر قرار گرفته اند.

ویدئوی ساید بای ساید یک کدک نیست، بلکه روشی برای سازماندهی فریم های استریوسکوپی است، به این معنی که می توان آن را در هر کدک پشتیبانی شده توسط Android رمزگذاری کرد.

می‌توانید ویدیو را با استفاده از Media3 Exoplayer بارگیری کنید و سپس آن را با استفاده از SurfaceEntity جدید رندر کنید. برای ایجاد یک SurfaceEntity ، همانطور که در مثال زیر نشان داده شده است، SurfaceEntity.create را فراخوانی کنید.

val stereoSurfaceEntity = SurfaceEntity.create(
    xrSession,
    SurfaceEntity.StereoMode.SIDE_BY_SIDE,
    Pose(Vector3(0.0f, 0.0f, -1.5f)),
    SurfaceEntity.CanvasShape.Quad(1.0f, 1.0f)
)
val videoUri = Uri.Builder()
    .scheme(ContentResolver.SCHEME_ANDROID_RESOURCE)
    .path("sbs_video.mp4")
    .build()
val mediaItem = MediaItem.fromUri(videoUri)

val exoPlayer = ExoPlayer.Builder(this).build()
exoPlayer.setVideoSurface(stereoSurfaceEntity.getSurface())
exoPlayer.setMediaItem(mediaItem)
exoPlayer.prepare()
exoPlayer.play()

ویدیوی MV-HEVC را با استفاده از Jetpack SceneCore پخش کنید

استاندارد کدک MV-HEVC برای ویدیوهای استریوسکوپی بهینه و طراحی شده است و به برنامه شما امکان می دهد فیلم های همهجانبه را با کیفیت عالی به طور موثر پخش کند. فایل های MV-HEVC دارای یک جریان اولیه، معمولاً چشم چپ، و یک جریان استریو با چشم دیگر هستند.

مشابه ویدیوی کنار هم، می‌توانید آن را با استفاده از Media3 Exoplayer بارگیری کنید و با استفاده از SurfaceEntity آن را رندر کنید. هنگام فراخوانی SurfaceEntity.create باید مشخص کنید که آیا فایل MV-HEVC شما در پارامتر stereoMode در سمت چپ یا راست اصلی باشد.

// Create the SurfaceEntity with the StereoMode corresponding to the MV-HEVC content
val stereoSurfaceEntity = SurfaceEntity.create(
    xrSession,
    SurfaceEntity.StereoMode.MULTIVIEW_LEFT_PRIMARY,
    Pose(Vector3(0.0f, 0.0f, -1.5f)),
    SurfaceEntity.CanvasShape.Quad(1.0f, 1.0f)
)
val videoUri = Uri.Builder()
    .scheme(ContentResolver.SCHEME_ANDROID_RESOURCE)
    .path("mvhevc_video.mp4")
    .build()
val mediaItem = MediaItem.fromUri(videoUri)

val exoPlayer = ExoPlayer.Builder(this).build()
exoPlayer.setVideoSurface(stereoSurfaceEntity.getSurface())
exoPlayer.setMediaItem(mediaItem)
exoPlayer.prepare()
exoPlayer.play()

پخش ویدیوی 180 درجه و 360 درجه با استفاده از Jetpack SceneCore

SurfaceEntity از پخش ویدیوهای 180 درجه روی سطوح نیمکره و ویدیوهای 360 درجه روی سطوح کروی پشتیبانی می کند. پارامتر radius به طور پیش فرض به اندازه شعاعی سطوح مربوطه بر حسب متر اشاره دارد.

کد زیر نحوه تنظیم SurfaceEntity را برای پخش در نیمکره 180 درجه و کره 360 درجه نشان می دهد. هنگام استفاده از این اشکال بوم، سطح را با استفاده از حالت سر کاربر برای ارائه یک تجربه همه جانبه قرار دهید.

// Set up the surface for playing a 180° video on a hemisphere.
val hemisphereStereoSurfaceEntity =
    SurfaceEntity.create(
        xrSession,
        SurfaceEntity.StereoMode.SIDE_BY_SIDE,
        xrSession.scene.spatialUser.head?.transformPoseTo(
            Pose.Identity,
            xrSession.scene.activitySpace
        )!!,
        SurfaceEntity.CanvasShape.Vr180Hemisphere(1.0f),
    )
// ... and use the surface for playing the media.

// Set up the surface for playing a 360° video on a sphere.
val sphereStereoSurfaceEntity =
    SurfaceEntity.create(
        xrSession,
        SurfaceEntity.StereoMode.TOP_BOTTOM,
        xrSession.scene.spatialUser.head?.transformPoseTo(
            Pose.Identity,
            xrSession.scene.activitySpace
        )!!,
        SurfaceEntity.CanvasShape.Vr360Sphere(1.0f),
    )
// ... and use the surface for playing the media.

پخش ویدیوی فضایی با استفاده از Jetpack Compose برای XR

اگر علاقه مند به یادگیری نحوه پخش ویدیو با استفاده از Jetpack Compose برای XR هستید، یاد بگیرید که چگونه یک سطح برای محتوای تصویر یا ویدیو اضافه کنید .