জেটপ্যাক XR SDK সমতল পৃষ্ঠে স্টেরিওস্কোপিক পাশাপাশি ভিডিও প্লেব্যাক সমর্থন করে। স্টেরিওস্কোপিক ভিডিওর সাথে, দর্শকদের গভীরতার অনুভূতি দেওয়ার জন্য প্রতিটি ফ্রেমে একটি বাম-চোখ এবং একটি ডান-চোখের ছবি থাকে—যা স্টেরিওপসিস নামেও পরিচিত।
আপনি Android XR অ্যাপে নন-স্টেরিওস্কোপিক 2D ভিডিও রেন্ডার করতে পারেন যা অন্যান্য ফর্ম ফ্যাক্টরগুলিতে অ্যান্ড্রয়েড ডেভেলপমেন্টের জন্য ব্যবহৃত স্ট্যান্ডার্ড মিডিয়া APIs সহ।
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()
Jetpack SceneCore ব্যবহার করে MV-HEVC ভিডিও চালান
MV-HEVC কোডেক স্ট্যান্ডার্ড অপ্টিমাইজ করা হয়েছে এবং স্টেরিওস্কোপিক ভিডিওর জন্য ডিজাইন করা হয়েছে, যা আপনার অ্যাপকে দুর্দান্ত মানের সাথে নিমজ্জিত ভিডিওগুলিকে দক্ষতার সাথে প্লে করতে দেয়৷ MV-HEVC ফাইলগুলির একটি প্রাথমিক স্ট্রীম থাকে, সাধারণত বাম চোখ এবং অন্য চোখের সাথে একটি স্টেরিও স্ট্রীম।
পাশাপাশি ভিডিওর মতো, আপনি Media3 Exoplayer ব্যবহার করে এটি লোড করতে পারেন এবং SurfaceEntity
ব্যবহার করে রেন্ডার করতে পারেন। SurfaceEntity.create
কল করার সময় আপনি stereoMode
প্যারামিটারে আপনার MV-HEVC ফাইলটি বাম বা ডান প্রাথমিক কিনা তা নির্দিষ্ট করতে চাইবেন।
// 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()
Jetpack SceneCore ব্যবহার করে 180-ডিগ্রী এবং 360-ডিগ্রী ভিডিও চালান
SurfaceEntity
অর্ধগোলাকার পৃষ্ঠে 180° ভিডিও এবং গোলাকার পৃষ্ঠে 360° ভিডিও প্লেব্যাক সমর্থন করে। radius
প্যারামিটার ডিফল্টভাবে মিটারে সংশ্লিষ্ট পৃষ্ঠের রেডিয়াল আকারকে বোঝায়।
নিম্নলিখিত কোডটি দেখায় কিভাবে একটি 180° গোলার্ধ এবং একটি 360° গোলকের প্লেব্যাকের জন্য SurfaceEntity
সেট আপ করতে হয়। এই ক্যানভাস আকারগুলি ব্যবহার করার সময়, একটি নিমগ্ন অভিজ্ঞতা প্রদানের জন্য ব্যবহারকারীর মাথার ভঙ্গিটি ব্যবহার করে পৃষ্ঠটি অবস্থান করুন৷
// 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.
XR-এর জন্য Jetpack Compose ব্যবহার করে স্থানিক ভিডিও চালান
আপনি যদি XR এর জন্য Jetpack Compose ব্যবহার করে ভিডিও চালাতে শিখতে আগ্রহী হন, তাহলে ইমেজ বা ভিডিও বিষয়বস্তুর জন্য একটি সারফেস কিভাবে যোগ করবেন তা শিখুন।