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 Videosvideo_decoder_gl_surface_view
(VideoDecoderGLSurfaceView
): Videorendering mit Erweiterungsrenderernnone
– 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:
SURFACE_TYPE_SURFACE_VIEW
(entsprichtAndroidExternalSurface
)SURFACE_TYPE_TEXTURE_VIEW
(effektivAndroidEmbeddedExternalSurface
)
Es gibt keinen Typ none
, da dies dem Nicht-Einbinden von PlayerSurface
in Ihren Compose-UI-Baum entsprechen würde.