Oberflächentypen

Auf dieser Seite werden die verschiedenen Arten von Oberflächen beschrieben, die für die Videowiedergabe mit Media3 verwendet werden können, und es wird erläutert, wie Sie den richtigen Typ für Ihren Anwendungsfall auswählen. Weitere Informationen zu Surface-Objekten in Android

Oberflächentyp für PlayerView auswählen

Mit dem Attribut surface_type von PlayerView können Sie den Typ der Oberfläche für die Videowiedergabe festlegen. Zulässige Werte:

  • surface_view (SurfaceView)
  • texture_view (TextureView)
  • spherical_gl_surface_view (SphericalGLSurfaceView) – für die Wiedergabe von sphärischen Videos
  • video_decoder_gl_surface_view (VideoDecoderGLSurfaceView): Videorendering mit Erweiterungsrenderern
  • none – diese Option ist nur für die Audiowiedergabe vorgesehen und sollte verwendet werden, um die Erstellung einer Oberfläche zu vermeiden, da dies kostspielig sein kann.

Wenn die Ansicht für die normale Videowiedergabe vorgesehen ist, sollte surface_view oder texture_view verwendet werden. SurfaceView bietet bei der Videowiedergabe eine Reihe von Vorteilen gegenüber TextureView:

  • Deutlich geringerer Stromverbrauch auf vielen Geräten.
  • Das Frame-Timing ist genauer, was zu einer flüssigeren Videowiedergabe führt.
  • Unterstützung für die HDR-Videoausgabe in höherer Qualität auf kompatiblen Geräten.
  • Unterstützung für sichere Ausgaben bei der Wiedergabe von DRM-geschützten Inhalten.
  • Die Möglichkeit, Videoinhalte in der vollen Auflösung des Displays auf Android TV-Geräten wiederzugeben, die die UI-Ebene hochskalieren.

SurfaceView sollte daher nach Möglichkeit gegenüber TextureView bevorzugt werden. TextureView sollte nur verwendet werden, wenn SurfaceView nicht Ihren Anforderungen entspricht. Ein Beispiel ist, wenn vor Android 7.0 (API-Level 24) flüssige Animationen oder das Scrollen der Videooberfläche erforderlich sind, wie in den folgenden Hinweisen beschrieben. In diesem Fall ist es besser, TextureView nur zu verwenden, wenn SDK_INT kleiner als 24 (Android 7.0) ist, und ansonsten SurfaceView.

Oberflächentyp in Compose auswählen

In Compose wird das AndroidView-Composable verwendet, um SurfaceView und TextureView zu umschließen. Die beiden Composables, die dem entsprechen, sind AndroidExternalSurface und AndroidEmbeddedExternalSurface.

Das Media3-Modul ui-compose bietet ein PlayerSurface-Composable, das die Player auf lebenszyklusbewusste Weise mit einem Surface verknüpft. Die Oberflächen sind in diesem Fall:

Es gibt keinen Typ none, da dies dem Nicht-Einbinden von PlayerSurface in Ihren Compose-UI-Baum entsprechen würde.