Jetpack XR SDK, सपाट सतहों पर स्टीरियोस्कोपिक साइड-बाय-साइड वीडियो चलाने की सुविधा देता है. स्टीरियोस्कोपिक वीडियो में, हर फ़्रेम में बाईं और दाईं आंख की इमेज होती है. इससे दर्शकों को गहराई का एहसास होता है.
Android XR ऐप्लिकेशन पर, नॉन-स्टीरियोस्कोपिक 2D वीडियो को रेंडर किया जा सकता है. इसके लिए, दूसरे डिवाइसों के साइज़, डाइमेंशन या कॉन्फ़िगरेशन के हिसाब से 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()
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.