Press "Enter" to skip to content

Videos in iOS- und tvOS-Apps wiedergeben mit AVKit und AVFoundation

Eigentlich sind wir als Apple Developer ziemlich verwöhnt, was die Darstellung unterschiedlicher Inhalte in der iOS- und tvOS-Entwicklung angeht. Von einfachen Texten über Grafiken bis hin zu Kartenmaterial und Websites steht für viele mediale Inhalte ein passendes View-Objekt in den Bibliotheken von Apple zur Verfügung. Nur eine Sache scheint sich nicht so trivial zu gestalten: die Wiedergabe von Videos.

Erfreulicherweise lässt sich auch die in ihrer einfachsten Form sehr komfortabel unter iOS und tvOS umsetzen. Abgesehen davon, dass sich auch eine Instanz der WKWebView-Klasse aus dem WebKit-Framework zur Videowiedergabe zweckentfremden lässt, ist es mit wenigen Zeilen Code möglich, Videos auf Basis von AVKit und AVFoundation in Apps wiederzugeben.

In diesem Artikel gehe ich auf die einfachste Form ein, um Videos mit den genannten Frameworks in iOS- und tvOS-Apps abzuspielen. Es sind noch weitaus komplexere Konfigurationen möglich, doch die würden den Rahmen dieses Artikels sprengen und von der zu lösenden Aufgabe zu sehr ablenken.

Die Basis: AVPlayer und AVPlayerViewController

Zwei Klassen sind nötig, um eine einfache Videowiedergabe unter iOS und tvOS umzusetzen. Die erste ist AVPlayer aus dem AVFoundation-Framework. Diese Klasse kümmert sich um die Wiedergabe und Steuerung eines Videos. Um eine passende Instanz zu erstellen, reicht es, ein Video auf Basis einer URL mithilfe des init(url:)-Initializers zu übergeben.

Die zweite wichtige Klasse ist AVPlayerViewController aus dem AVKit-Framework. Wie der Name bereits andeutet, ist diese Klasse von UIViewController abgeleitet und für die Darstellung des Videos verantwortlich. Sie kümmert sich auch um die Bereitstellung von Schaltflächen und Funktionen zur Steuerung der Wiedergabe, beispielsweise zum Pausieren oder vor- und zurückspringen. Eine Instanz dieser Klasse erstellt man schlicht mithilfe des Standard-Initializers init().

Beide Instanzen werden letztlich durch die player-Property der AVPlayerViewController-Klasse miteinander verbunden. Dieser Property weist man die AVPlayer-Instanz zu, deren Video wiedergegeben werden soll.

Alles, was dann noch nötig ist, um die Videowiedergabe zu starten, ist das Einblenden des AVPlayerViewController. Das kann man beispielsweise durch Aufruf der Methode present(_:animated:completion:) aus einem anderen View-Controller heraus bewerkstelligen. Um nach dem Anzeigen des AVPlayerViewController gleich noch mit dem Abspielen des Videos zu beginnen (ohne dass der Nutzer selbst noch die Wiedergabe explizit starten muss), kann man noch die play()-Methode auf der zugehörigen AVPlayer-Instanz aufrufen.

Und das war‘s auch schon! Mit diesen wenigen Schritten lässt sich eine iOS- und tvOS-App um die Möglichkeit der Videowiedergabe ergänzen. Im folgenden Listing seht ihr ein Beispiel, wie das ganze in der Praxis aussehen kann. Es zeigt einen View-Controller, der über einen Button verfügt, über den eine Videowiedergabe gestartet werden soll. Nach Betätigen des Buttons werden eine AVPlayerViewController– sowie AVPlayer-Instanz erstellt, wobei die AVPlayer-Instanz dem AVPlayerViewController über dessen player-Property zugewiesen wird. Anschließend folgt die Anzeige des AVPlayerViewController sowie der automatische Start des Videos.

Beispielprojekt TS-VideoPlayback

Auf meinem GitHub-Account findet ihr ein vollständiges Beispielprojekt auf Basis des gezeigten Codes. Es verfügt über ein iOS- und ein tvOS-Target, um das Projekt auf diesen beiden Plattformen ausführen zu können. Die App zeigt nach dem Start einen Button mit dem Titel Video Playback an, über den die Wiedergabe eines Testvideos gestartet wird (dazu ist eine Internetverbindung erforderlich).

Das Projekt findet ihr über den folgenden Link: https://github.com/Sillivan88/TS-VideoPlayback

Fazit

Zwar gibt es nicht ein einfach vorgefertigtes View-Element, das man als iOS- oder tvOS-Entwickler in seine App einbauen kann, um darüber Videos abzuspielen (von dem möglichen Workaround mit einer WKWebView einmal abgesehen). Dafür erhält man mit AVKit und AVFoundation zwei mächtige Frameworks, die über eine Vielzahl von Funktionen zur Videowiedergabe verfügen. Und wie wir gesehen haben, ist das einfache Abspielen eines Videos mit wenigen Befehlen erledigt.

Euer Thomas

Weiterführende Links zum Artikel

TS-VideoPlayback-Projekt auf GitHub: https://github.com/Sillivan88/TS-VideoPlayback

Schreibe den ersten Kommentar

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Kontakt und soziale Netzwerke

Impressum

Thomas Sillmann
Kettererstraße 6
D-63739 Aschaffenburg
E-Mail: contact@thomassillmann.de
Mobil: +49 (0) 151 65125650
Web: https://www.thomassillmann.de/

Inhaltlich Verantwortlicher gemäß §55 Abs. 2 RStV: Thomas Sillmann (Anschrift siehe oben)

Haftungshinweis: Trotz sorgfältiger inhaltlicher Kontrolle übernehme ich keine Haftung für die Inhalte externer Links. Für die Inhalte der verlinkten Seiten sind ausschließlich deren Betreiber verantwortlich.

Copyright © 2019 · Thomas Sillmann