জেটপ্যাক XR SDK সমতল পৃষ্ঠে স্টেরিওস্কোপিক পাশাপাশি ভিডিও প্লেব্যাক সমর্থন করে। স্টেরিওস্কোপিক ভিডিওর সাথে, দর্শকদের গভীরতার ধারনা দিতে প্রতিটি ফ্রেমে একটি বাম-চোখ এবং একটি ডান-চোখের ছবি থাকে।
আপনি Android XR অ্যাপে নন-স্টেরিওস্কোপিক 2D ভিডিও রেন্ডার করতে পারেন যা অন্যান্য ফর্ম ফ্যাক্টরগুলিতে অ্যান্ড্রয়েড ডেভেলপমেন্টের জন্য ব্যবহৃত স্ট্যান্ডার্ড মিডিয়া APIs সহ।
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()
Jetpack XR SDK ব্যবহার করে 180-ডিগ্রি এবং 360-ডিগ্রি ভিডিও চালান
Alpha02 এবং উচ্চতর
ভার্সন 1.0.0-alpha02
থেকে শুরু করে, StereoSurfaceEntity
গোলার্ধীয় পৃষ্ঠে 180° ভিডিও এবং গোলাকার পৃষ্ঠে 360° ভিডিও প্লেব্যাক সমর্থন করে। যদি ভিডিওগুলি স্টেরিওস্কোপিক হয়, তাহলে ফাইলগুলি পাশাপাশি ফর্ম্যাটে হওয়া উচিত।
নিচের কোডটি দেখায় কিভাবে একটি 180° গোলার্ধ এবং একটি 360° গোলায় প্লেব্যাকের জন্য StereoSurfaceEntity
সেট আপ করতে হয়। এই ক্যানভাস আকারগুলি ব্যবহার করার সময়, একটি নিমগ্ন অভিজ্ঞতা প্রদানের জন্য ব্যবহারকারীর মাথার ভঙ্গিটি ব্যবহার করে পৃষ্ঠটি অবস্থান করুন৷
// 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.