Jetpack XR SDK'sı, düz yüzeylerde stereoskopik yan yana video oynatmayı destekler. Stereoskopik videolarda her kare, izleyicilere stereopsis olarak da bilinen derinlik hissi vermek için sol göz ve sağ göz görüntülerinden oluşur.
Diğer form faktörlerinde Android geliştirme için kullanılan standart medya API'lerini kullanarak Android XR uygulamalarında stereoskopik olmayan 2D video oluşturabilirsiniz.
Jetpack SceneCore'u kullanarak yan yana video oynatma
Yan yana videoda her stereoskopik kare, yatay olarak birbirine bitişik iki resim olarak sunulur. Üst ve alt video kareleri birbirine bitişik şekilde dikey olarak düzenlenir.
Yan yana video bir codec değil, stereoskopik kareleri düzenlemenin bir yoludur. Yani Android tarafından desteklenen codec'lerden herhangi birinde kodlanabilir.
Media3 Exoplayer'ı kullanarak yan yana video yükleyebilir ve ardından yeni SurfaceEntity
'ı kullanarak videoyu oluşturabilirsiniz. SurfaceEntity
oluşturmak için aşağıdaki örnekte gösterildiği gibi SurfaceEntity.create
işlevini çağırın.
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'u kullanarak MV-HEVC video oynatma
MV-HEVC codec standardı, stereoskopik video için optimize edilmiş ve tasarlanmıştır. Bu sayede uygulamanız, etkileyici videoları yüksek kalitede verimli bir şekilde oynatabilir. MV-HEVC dosyalarında birincil bir akış (genellikle sol göz) ve diğer gözle stereo bir akış bulunur.
Yan yana videoya benzer şekilde, Media3 Exoplayer'ı kullanarak yükleyebilir ve SurfaceEntity
'ı kullanarak oluşturabilirsiniz. SurfaceEntity.create
işlevini çağırırken MV-HEVC dosyanızın stereoMode
parametresinde sol veya sağ birincil olup olmadığını belirtmeniz gerekir.
// 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'u kullanarak 180 derece ve 360 derece video oynatma
SurfaceEntity
, yarım küre şeklindeki yüzeylerde 180° videoların ve küresel yüzeylerde 360° videoların oynatılmasını destekler. radius
parametresi, varsayılan olarak ilgili yüzeylerin radyal boyutunu metre cinsinden ifade eder.
Aşağıdaki kodda, SurfaceEntity
'ün 180° yarım küre ve 360° küre üzerinde oynatılması için nasıl ayarlanacağı gösterilmektedir. Bu kanvas şekillerini kullanırken sürükleyici bir deneyim sunmak için kullanıcının kafa duruşundan yararlanarak yüzeyi konumlandırın.
canvasShape
// 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 için Jetpack Compose'u kullanarak üç boyutlu video oynatma
XR için Jetpack Compose'u kullanarak video oynatmayı öğrenmek istiyorsanız Resim veya video içeriği için yüzey ekleme hakkında bilgi edinin.