Bu sayfada, Media3 ile video oynatma için kullanılabilecek farklı yüzey türleri ve kullanım alanınıza uygun türü nasıl seçeceğiniz açıklanmaktadır. Android'deki Surface nesneleri hakkında daha fazla bilgi edinmek için bu grafik belgesini okuyun.
PlayerView için bir yüzey türü seçin
PlayerView
öğesinin surface_type
özelliği, video oynatma için kullanılan yüzey türünü ayarlamanıza olanak tanır. İzin verilen değerler şunlardır:
surface_view
(SurfaceView
)texture_view
(TextureView
)spherical_gl_surface_view
(SphericalGLSurfaceView
): Küresel video oynatma içinvideo_decoder_gl_surface_view
(VideoDecoderGLSurfaceView
): Uzantı oluşturucular kullanılarak video oluşturmanone
- Yalnızca sesli oynatma için kullanılır ve yüzey oluşturmaktan kaçınmak için kullanılmalıdır. Yüzey oluşturmak maliyetli olabilir.
Görünüm normal video oynatma içinse surface_view
veya texture_view
kullanılmalıdır. SurfaceView
, video oynatma için TextureView
'a kıyasla bir dizi avantaj sunar:
- Birçok cihazda güç tüketimi önemli ölçüde düşer.
- Daha doğru kare zamanlaması sayesinde daha akıcı video oynatma
- Uygun özellikli cihazlarda daha yüksek kaliteli HDR video çıkışı desteği.
- DRM korumalı içerik oynatılırken güvenli çıkış desteği.
- Kullanıcı arayüzü katmanını yükselten Android TV cihazlarda video içeriğini ekranın tam çözünürlüğünde oluşturma özelliği.
Bu nedenle, mümkün olduğunda SurfaceView
, TextureView
'ye tercih edilmelidir.
TextureView
yalnızca SurfaceView
ihtiyaçlarınızı karşılamıyorsa kullanılmalıdır. Bir örnek olarak, aşağıdaki notlarda açıklandığı gibi Android 7.0'dan (API düzeyi 24) önceki sürümlerde video yüzeyinin sorunsuz şekilde animasyonlandırılması veya kaydırılması gerektiği durumlar verilebilir. Bu durumda, SDK_INT
değeri 24'ten küçük olduğunda (Android 7.0) TextureView
, aksi takdirde SurfaceView
kullanılması tercih edilir.
Oluşturma bölümünde bir yüzey türü seçme
Compose'da birlikte çalışabilirlik çözümü, SurfaceView
ve TextureView
sarmalamak için AndroidView
Composable'ı kullanır. Buna karşılık gelen iki composable işlevi AndroidExternalSurface
ve AndroidEmbeddedExternalSurface
'dır.
Media3 ui-compose
modülü, yaşam döngüsüne duyarlı bir şekilde Player
öğesini Surface
öğesine bağlayan bir PlayerSurface
Composable sağlar. Bu örnekteki yüzey türleri şunlardır:
SURFACE_TYPE_SURFACE_VIEW
(etkili bir şekildeAndroidExternalSurface
)SURFACE_TYPE_TEXTURE_VIEW
(etkili bir şekildeAndroidEmbeddedExternalSurface
)
none
türü yoktur. Bu tür, PlayerSurface
öğesinin Compose kullanıcı arayüzü ağınıza dahil edilmemesine karşılık gelir.