AVPlayerViewController: Was ist das, Integrationsmöglichkeiten in iOS

Autor: IT Sectr Veröffentlicht: 2026-05-23 Lesezeit: 8 Min.

AVPlayerViewController ist ein integrierter Videoplayer-Controller im Apple-Ökosystem, der für die Wiedergabe von Medieninhalten auf iOS und tvOS entwickelt wurde. Er bietet eine Vollbild-Oberfläche mit Bedienelementen, Untertitelunterstützung und AirPlay, ohne dass eine benutzerdefinierte Benutzeroberfläche geschrieben werden muss. Laut der Apple Developer Dokumentation, 2026, lässt sich AVPlayerViewController mit nur wenigen Codezeilen integrieren und unterstützt HLS, MP4 und die meisten Medienformate.

Die wichtigsten Punkte

  • AVPlayerViewController ist der Standard-Controller für die Videowiedergabe aus dem AVKit-Framework für iOS und tvOS.
  • Er bietet eine fertige Benutzeroberfläche mit einer Steuerleiste, Wiedergabetasten und einem Fortschrittsbalken.
  • Der Controller unterstützt automatisch Untertitel, Audiospuren, AirPlay und Picture in Picture.
  • Die Integration erfolgt über AVPlayer — das grundlegende Objekt zur Verwaltung der Wiedergabe.
  • Entwickler können die Anzeige der Steuerelemente anpassen, Overlay-Ansichten hinzufügen und Ereignisse über den Delegaten behandeln.

Was ist AVPlayerViewController?

AVPlayerViewController ist eine Komponente des AVKit-Frameworks, die eine fertige Oberfläche zum Abspielen von Videos in Apple-Anwendungen bereitstellt. Er erspart dem Entwickler die Notwendigkeit, einen eigenen Player von Grund auf neu zu erstellen, und bietet Standardsteuerelemente: Play/Pause, Scrubbing, Lautstärkeregelung und Vollbildmodus.

Im Gegensatz zu AVPlayerLayer auf niedriger Ebene, das eine manuelle UI-Erstellung erfordert, verwaltet AVPlayerViewController den gesamten Player-Lebenszyklus. Der Controller verarbeitet automatisch die Bildschirmdrehung, passt sich an den Safe Area auf iPhones mit Notch an und unterstützt Multitasking auf dem iPad.

Laut Apple Dokumentation (2026) ist AVPlayerViewController mit AVPlayer und AVQueuePlayer kompatibel und ermöglicht die Wiedergabe von Einzeldateien und Playlists. URLs aus dem lokalen Speicher, HLS-Netzwerkstreams und verschlüsselte FairPlay-Inhalte werden unterstützt.

Geschichte und Versionen von AVPlayerViewController

Die Komponente erschien in iOS 8 zusammen mit AVKit als Ersatz für den veralteten MPMoviePlayerController. In iOS 11 wurde die Unterstützung für Picture in Picture und die Anzeige von Untertiteln hinzugefügt. In iOS 14 erhielt der Controller eine anpassbare Transportleiste über AVPlayerViewControllerDelegate. Ab iOS 16 wurde die Unterstützung für den dynamischen Austausch von Mediendateien ohne Neuerstellung des Players eingeführt.

Der moderne AVPlayerViewController ist für ProMotion-Displays optimiert — die Videobildrate wird automatisch mit der Bildwiederholfrequenz des Bildschirms synchronisiert. Auf tvOS passt sich die Komponente an die Fokus-Schnittstelle der Siri Remote an, auf macOS an den Fenstermodus des QuickTime Players.

Wie funktioniert AVPlayerViewController?

Im Kern des Controllers liegt die Verbindung von AVPlayer und AVPlayerItem. AVPlayer ist das Wiedergabeobjekt, das die Zeitachse, Geschwindigkeit und den Zustand verwaltet. AVPlayerItem ist ein Wrapper um eine bestimmte Mediendatei, der Metadaten, Spuren und Ladeinformationen enthält.

Bei der Initialisierung erhält AVPlayerViewController eine Referenz auf AVPlayer und erstellt automatisch eine AVPlayerLayer zur Anzeige des Videos. Der Controller abonniert KVO-Benachrichtigungen von AVPlayer über Statusänderungen wie readyToPlay, Ladefehler und Wiedergabeende.

Die Steuerelemente (Transportleiste) werden durch Antippen angezeigt. Ab iOS 15+ unterstützen sie die Anpassung über AVPlayerViewControllerCustomizationDelegate, wodurch Standardschaltflächen ausgeblendet oder ersetzt werden können.

Lebenszyklus des Controllers

Nach dem Erstellen des Controllers und Zuweisen von AVPlayer wird die Methode viewDidLoad aufgerufen, die die Vorbereitung des Videostreams startet. Wenn AVPlayerItem in den Status AVPlayerItemStatusReadyToPlay übergeht, ist der Player bereit, Bilder anzuzeigen. Wenn die Methode play() aufgerufen wird, beginnt die Dekodierung des Videostreams über Video Toolbox.

Beim Verlassen des Bildschirms pausiert der Controller automatisch die Wiedergabe und gibt die Dekoder-Ressourcen frei. Unter iOS 13+ müssen Hintergrundmodi und die Audiosession konfiguriert werden, um die Wiedergabe beim Minimieren der App aufrechtzuerhalten. Laut WWDC 2024 wird die Verwendung von AVPlayerPlaybackCoordinator zur Synchronisierung mit dem iOS-Mediencenter empfohlen.

Hauptfunktionen von AVPlayerViewController

Die Komponente bietet eine umfangreiche Reihe von Funktionen aus dem Stand, was sie für die meisten Projekte attraktiv macht. Nachfolgend sind die wichtigsten Fähigkeiten aufgeführt, die keinen zusätzlichen Code erfordern.

  • Transportleiste mit Play/Pause, 15-Sekunden-Überspringen, Lautstärkeregler und Fortschrittsbalken.
  • Untertitelunterstützung — automatische Anzeige von eingebetteten und externen Untertiteln in den Formaten VTT, SRT und iTunes Timed Text.
  • AirPlay — Möglichkeit, Videos an Apple TV und andere AirPlay-kompatible Geräte zu streamen.
  • Picture in Picture — Wiedergabe in einem schwebenden Fenster durch Antippen einer speziellen Schaltfläche (auf iPad und iPhone mit iOS 14+).
  • Vollbildmodus — automatische Umschaltung beim Drehen des Geräts und beim Antippen der Vergrößerungsschaltfläche.
  • Geschwindigkeitssteuerung — integrierte Steuerung zur Auswahl der Wiedergabegeschwindigkeit (0,5x, 1,0x, 1,5x, 2,0x).
  • Geschützte Inhalte — native Unterstützung für FairPlay Streaming für HLS-Inhalte mit DRM.

Transportleiste von AVPlayerViewController

Die Transportleiste ist der untere Teil der Benutzeroberfläche, der die Hauptsteuertasten enthält. Standardmäßig wird die Leiste nach 3 Sekunden Inaktivität des Benutzers ausgeblendet und durch Antippen wieder angezeigt. Ab iOS 16+ kann der Delegat verwendet werden, um die Sichtbarkeit einzelner Elemente zu steuern.

Im Debug-Modus kann die Transportleiste mit der Eigenschaft AVPlayerViewController.requiresLinearPlayback erzwungen werden, was auch verhindert, dass das Video pausiert wird. Dies ist nützlich für Werbeunterbrechungen und Bildungsinhalte.

Integration von AVPlayerViewController in Ihr Projekt

Die grundlegende Integration des Controllers erfordert nicht mehr als 10 Codezeilen. Erstellen Sie zunächst eine AVPlayer-Instanz mit der URL der Mediendatei, übergeben Sie sie an AVPlayerViewController und zeigen Sie den Controller auf dem Bildschirm an.

Erstellen eines einfachen Players in Swift

swift
import AVKit

let player = AVPlayer(url: URL(string: "https://example.com/video.mp4")!)
let playerVC = AVPlayerViewController()
playerVC.player = player

present(playerVC, animated: true) {
    player.play()
}

Nach dem Aufruf von present wird der Controller im Vollbild angezeigt. Das Video beginnt mit dem Laden aus dem Netzwerk, und sobald der Puffer den readyToPlay-Schwellenwert erreicht, beginnt die Wiedergabe automatisch nach dem Aufruf von play().

Konfigurieren von AVPlayerItem für erweiterte Steuerung

swift
let asset = AVAsset(url: videoURL)
let item = AVPlayerItem(asset: asset)

let metadata = AVMutableMetadataItem()
metadata.key = AVMetadataKey.commonKeyTitle
metadata.value = "Mein Video"
item.addMetadata(metadata)

let player = AVPlayer(playerItem: item)
let playerVC = AVPlayerViewController()
playerVC.player = player

Die Verwendung von AVPlayerItem gibt Ihnen die Kontrolle über Metadaten, Zeitcodes, die Auswahl von Audiospuren und Untertiteln. Über AVPlayerItem können Sie auch den Ladefortschritt, das Puffern und Netzwerkfehler über KVO auf der Status-Eigenschaft überwachen.

Anpassung der Steuerelemente

Ab iOS 11 können Entwickler die Transportleiste über das Protokoll AVPlayerViewControllerDelegate anpassen. Die Methode playerViewController(_:willBeginFullScreenPresentationWithAnimationCoordinator:) wird vor dem Eintritt in den Vollbildmodus aufgerufen und ermöglicht die Vorbereitung der Benutzeroberfläche.

Zum Ausblenden einzelner Schaltflächen verwenden Sie die Eigenschaft AVPlayerViewController.showsPlaybackControls. Wenn sie auf false gesetzt wird, verschwindet die Transportleiste vollständig und nur der Videostream bleibt übrig. Nützlich für benutzerdefinierte Overlay-Elemente.

Anpassung mit dem Delegaten

swift
class CustomPlayerViewController: UIViewController {
    private let playerVC = AVPlayerViewController()

    override func viewDidLoad() {
        super.viewDidLoad()
        playerVC.delegate = self
        playerVC.showsPlaybackControls = true
        playerVC.entersFullScreenWhenPlaybackBegins = true
    }
}

extension CustomPlayerViewController: AVPlayerViewControllerDelegate {
    func playerViewController(
        _ playerViewController: AVPlayerViewController,
        willBeginFullScreenPresentationWithAnimationCoordinator coordinator: UIViewControllerTransitionCoordinator
    ) {
        // Overlay-Schaltfläche hinzufügen
    }

    func playerViewController(
        _ playerViewController: AVPlayerViewController,
        didUpdate legibleMediaSelection: AVMediaSelectionGroup
    ) {
        print("Neue Untertitelsprache ausgewählt")
    }
}

Der Delegat ermöglicht das Abfangen von Untertiteländerungsereignissen, dem Ein- und Austritt aus dem Vollbildmodus sowie dem Starten und Beenden von Picture in Picture. Auf der WWDC 2024 empfahl Apple, den Delegaten für Analysen zu verwenden — protokollieren Sie jeden Übergang innerhalb von 100 ms.

Arbeiten mit Untertiteln und Audiospuren

AVPlayerViewController zeigt automatisch alle verfügbaren Untertitel und Audiospuren an, wenn sie in die Mediendatei eingebettet oder im HLS-Manifest angegeben sind. Benutzer können über das Menü wechseln, das durch Antippen des Untertitelsymbols in der Transportleiste angezeigt wird.

Für HLS-Streams enthält das M3U8-Manifest eine Liste verfügbarer Sprachvarianten. AVPlayer lädt die entsprechenden WebVTT-Untertitelsegmente und übergibt sie zur Darstellung an AVPlayerLayer. Ab iOS 16+ wird die Untertitelgestaltung über AVTextStyleRule unterstützt.

Programmgesteuerte Auswahl von Audiospuren

swift
func selectAudioTrack(languageCode: String) {
    guard let group = player.currentItem?
        .asset.mediaSelectionGroup(forMediaCharacteristic: AVMediaCharacteristic.audible)
    else { return }

    for option in group.options {
        if option.extendedLanguageTag?.hasPrefix(languageCode) == true {
            player.currentItem?.select(option, in: group)
        }
    }
}

Die Methode selectAudioTrack sucht unter den Audioptionen der audible-Gruppe nach der Variante, deren extendedLanguageTag mit dem gewünschten Sprachcode übereinstimmt. Dies ermöglicht die Implementierung der Funktion „Originalton“ in Apps mit mehrsprachigen Inhalten.

Picture in Picture auf dem iPad

Der Picture in Picture (PiP)-Modus ermöglicht die Anzeige von Videos in einem schwebenden Fenster über anderen Apps. Auf dem iPad ist diese Funktion seit iOS 9 verfügbar, auf dem iPhone seit iOS 14. AVPlayerViewController fügt automatisch eine PiP-Schaltfläche zur Transportleiste hinzu, wenn UIBackgroundModes abonniert sind.

Um PiP zu aktivieren, fügen Sie den Schlüssel UIBackgroundModes mit den Werten audio und airplay zur Info.plist hinzu. Daraufhin erscheint eine PiP-Schaltfläche im Controller, die das Video bei Antippen in ein schwebendes Fenster von 192x108 Punkten einklappt.

PiP-Ereignisse werden über den Delegaten behandelt: playerViewController(_:willStartPictureInPictureFromFullScreen:) und playerViewController(_:didStopPictureInPicture:). Laut Apple HIG sollte die Mindestgröße des PiP-Fensters mindestens 120x68 Punkte betragen, um die Lesbarkeit des Inhalts zu gewährleisten.

Häufig gestellte Fragen

Unterstützt AVPlayerViewController die Wiedergabe von YouTube-Videos?

Nein, für YouTube-Videos ist die Verwendung einer Web-View WKWebView oder der YouTube iOS Helper-Bibliothek erforderlich, da YouTube ein eigenes DRM-System verwendet. AVPlayerViewController ist für direkte Medienstreams über URL ausgelegt.

Wie deaktiviere ich die Transportleiste von AVPlayerViewController?

Setzen Sie die Eigenschaft showsPlaybackControls auf false. Danach bleibt der Bildschirm leer — nur der Videostream. Um benutzerdefinierte Schaltflächen zurückzubringen, fügen Sie ein Overlay über addSubview auf dem Controller hinzu.

Funktioniert AVPlayerViewController mit HLS-Live-Übertragungen?

Ja, der Controller unterstützt HLS Live vollständig. Die Transportleiste zeigt einen Live-Indikator anstelle eines Fortschrittsbalkens. Die Latenz hängt von der HLS-Konfiguration ab — mindestens 6 Sekunden bei Low-Latency-Einstellungen.

Wie behandle ich Videoladefehler in AVPlayerViewController?

Abonnieren Sie KVO auf der Eigenschaft AVPlayerItem.status. Bei einem Fehler ändert sich der Status auf .failed. Holen Sie Details über die error-Eigenschaft von AVPlayerItem ein und zeigen Sie dem Benutzer einen Alarm mit einer Erklärung — häufig handelt es sich um ein Netzwerkproblem oder eine ungültige URL.

Kann ich in AVPlayerViewController Video aus dem Speicher laden?

Ja, verwenden Sie AVAsset mit einem benutzerdefinierten AVAssetResourceLoader, um Daten aus dem RAM zu speisen. Implementieren Sie AVAssetResourceLoaderDelegate und geben Sie Bytes aus einem Puffer zurück, anstatt von der Festplatte zu lesen.

Zusammenfassung

  • AVPlayerViewController ist eine fertige AVKit-Komponente für die Videowiedergabe auf iOS, iPadOS und tvOS mit minimalem Integrationscode.
  • Der Controller unterstützt HLS, MP4, geschützte FairPlay-Inhalte, Untertitel und Audiospuren aus dem Stand.
  • Für die grundlegende Verwendung erstellen Sie einfach einen AVPlayer und übergeben ihn an den Controller — die Benutzeroberfläche wird automatisch gerendert.
  • Der Delegat AVPlayerViewControllerDelegate ermöglicht die Anpassung der Transportleiste, die Behandlung von PiP und Untertiteländerungen.
  • Die Transportleiste wird nach 3 Sekunden Inaktivität ausgeblendet, aber showsPlaybackControls gibt die volle Kontrolle über ihre Sichtbarkeit.
  • Für Picture in Picture müssen UIBackgroundModes audio und airplay in der Info.plist aktiviert werden.
  • Verwenden Sie bei Fehlern KVO auf AVPlayerItem.status, um Details zu erhalten und dem Benutzer anzuzeigen.

Wir entwickeln eine mobile Applikation schlüsselfertig

IT Sectr entwickelt seit 2017 iOS- und Android-Apps für Startups und Unternehmen. Wir beraten Sie und schlagen die beste Lösung vor.

Projekt besprechen

Lesen Sie auch