Media3 / ExoPlayer für Kotlin: Komplettes Tutorial mit Beispielen

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Media3 / ExoPlayer für Kotlin: Komplettes Tutorial mit Beispielen

1. Was ist Media3 und warum wird es benötigt?

Media3 (ehemals bekannt als ExoPlayer) ist eine moderne, leistungsstarke und flexible Bibliothek zur Audio- und Videowiedergabe auf der Android-Plattform, entwickelt von Google. Sie ist der Nachfolger des veralteten MediaPlayer aus dem Android SDK und bietet deutlich mehr Funktionen, bessere Leistung und mehr Kontrolle über den Wiedergabeprozess.

Warum wird Media3 / ExoPlayer benötigt? Im Gegensatz zum standardmäßigen MediaPlayer, der nur für einfache Aufgaben geeignet ist, gibt ExoPlayer dem Entwickler die volle Kontrolle über die Medien-Pipeline. Es unterstützt zahlreiche Formate (DASH, HLS, SmoothStreaming, MP4, MP3, WebM u.a.), adaptives Bitraten-Switching (ABR), anpassbares Rendering, Untertitel (einschließlich WebVTT, TTML), DRM-Schutz (Widevine, PlayReady) und vieles mehr. Die Bibliothek wird aktiv weiterentwickelt, optimiert und in Apps wie YouTube, Google Fotos und vielen anderen beliebten Diensten eingesetzt.

Für Kotlin-Entwickler ist Media3 der De-facto-Standard für die Erstellung von Medien-Apps – vom einfachen Musikplayer bis hin zu komplexen Videoplayern mit adaptivem Streaming und DRM-Unterstützung. Sie ermöglicht sauberen, modularen und testbaren Code mit vollständiger Kontrolle über den Wiedergabe-Lebenszyklus.

2. Installation

Media3 ist eine Android-Bibliothek und wird über das Gradle-Build-System installiert. Fügen Sie die folgenden Abhängigkeiten in Ihre build.gradle.kts (oder build.gradle) Datei Ihres app-Moduls ein:

// build.gradle.kts (Module :app)
dependencies {
    // Basis-Bibliothek Media3 (erforderlich)
    implementation("androidx.media3:media3-exoplayer:1.4.1")
    // UI-Komponenten (PlayerView, PlayerControlView usw.)
    implementation("androidx.media3:media3-ui:1.4.1")
    // Für HLS (HTTP Live Streaming)
    implementation("androidx.media3:media3-exoplayer-hls:1.4.1")
    // Für DASH (Dynamic Adaptive Streaming over HTTP)
    implementation("androidx.media3:media3-exoplayer-dash:1.4.1")
    // Für SmoothStreaming
    implementation("androidx.media3:media3-exoplayer-rtsp:1.4.1")
    // Für Untertitel
    implementation("androidx.media3:media3-exoplayer-ima:1.4.1")
    // Für DRM (Widevine)
    implementation("androidx.media3:media3-exoplayer-drm:1.4.1")
    // Für Sitzungen (MediaSession) – erforderlich für Integration mit Systemsteuerungen
    implementation("androidx.media3:media3-session:1.4.1")
    // Für benutzerdefinierte Datenquellen (z.B. Caching)
    implementation("androidx.media3:media3-datasource:1.4.1")
    // Für benutzerdefinierte Codecs (z.B. FFmpeg)
    implementation("androidx.media3:media3-decoder:1.4.1")
    // Für benutzerdefinierte Effekte (z.B. Geschwindigkeitsänderung)
    implementation("androidx.media3:media3-effect:1.4.1")
    // Für benutzerdefinierte Transformationen (z.B. Videozuschnitt)
    implementation("androidx.media3:media3-transformer:1.4.1")
}

Wichtig: Versionen können sich ändern. Die aktuelle Version finden Sie immer auf der offiziellen Release-Seite.

Nach dem Hinzufügen der Abhängigkeiten führen Sie die Gradle-Synchronisation (Sync Now) in Android Studio durch.

3. Schnellstart – Minimales funktionierendes Beispiel

Wir erstellen einen einfachen Videoplayer, der ein Video aus dem Internet abspielt. Dazu benötigen wir eine PlayerView im XML-Layout und Code in der Activity/Fragment.

Schritt 1: Layout (activity_main.xml)

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
    xmlns:android="htt                    

Empfehlungen