Bu sayfada, Media3 ile video oynatma için kullanılabilecek farklı yüzey türleri ve kullanım alanınız için doğru 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üzeyin 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şturmak zorunda kalmamak 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 çeşitli avantajlar sunar:
- Birçok cihazda güç tüketimi önemli ölçüde düşer.
- Daha doğru kare zamanlaması sayesinde videolar daha akıcı oynatılır.
- 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. Örneğin, aşağıdaki notlarda açıklandığı gibi Android 7.0'dan (API düzeyi 24) önceki sürümlerde video yüzeyinin sorunsuz animasyonları veya kaydırılması gerekir. Bu durumda, TextureView yalnızca SDK_INT değeri 24'ten küçük olduğunda (Android 7.0) ve diğer durumlarda SurfaceView kullanılması tercih edilir.
Oluşturma bölümünde bir yüzey türü seçin
Compose'da birlikte çalışabilirlik çözümü, SurfaceView ve TextureView sarmalamak için AndroidView Composable'ı kullanır. Buna karşılık gelen iki Composables 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.