Medien mit AVPlayer abspielen
Streamen und spielen Sie Audio- und Videodateien ab.
Medien mit AVPlayer abspielen ist eine kostenlose Swift Academy-Lektion auf CoddyKit. Dies ist Lektion 1 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Swift Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Swift Academy-Kurs umfasst insgesamt 4 Lektionen.
AVFoundation für Medien
AVFoundation ist Apples Framework für die Arbeit mit zeitbasierten audiovisuellen Medien – Wiedergabe, Aufnahme, Bearbeitung und Export.
Die zentrale Klasse für die Wiedergabe ist AVPlayer.
import AVFoundationAVPlayer und AVPlayerItem
AVPlayer steuert die Wiedergabe, während AVPlayerItem die abgespielten Medien repräsentiert und deren Zustand verfolgt. Dem Item liegt ein AVAsset zugrunde.
let url = URL(string: "https://example.com/video.mp4")!
let item = AVPlayerItem(url: url)
let player = AVPlayer(playerItem: item)Wiedergabe starten und pausieren
Steuern Sie die Wiedergabe mit play(), pause() und seek(to:). Die Wiedergabe beginnt ab der aktuellen Zeit.
player.play()
// later
player.pause()Video anzeigen
Um ein Video in UIKit anzuzeigen, binden Sie einen AVPlayerLayer in eine View ein. Der Layer rendert die visuelle Ausgabe des Players.
let playerLayer = AVPlayerLayer(player: player)
playerLayer.frame = view.bounds
playerLayer.videoGravity = .resizeAspect
view.layer.addSublayer(playerLayer)Status beobachten
Ein AVPlayerItem meldet einen status. Beobachten Sie ihn, um zu erkennen, wann die Medien readyToPlay sind oder failed ist.
let observation = item.observe(\.status) { item, _ in
if item.status == .readyToPlay {
player.play()
}
}Zeit verfolgen
Verwenden Sie addPeriodicTimeObserver, um eine Fortschrittsanzeige während des Abspielens zu aktualisieren. Zeiten werden als CMTime-Werte dargestellt.
let interval = CMTime(seconds: 0.5, preferredTimescale: 600)
player.addPeriodicTimeObserver(forInterval: interval, queue: .main) { time in
let seconds = time.seconds
print("at \(seconds)s")
}Grundlagen von CMTime
CMTime speichert Zeit als rationale Zahl (Wert geteilt durch Zeitskala) und ermöglicht dadurch eine samplegenaue Präzision. Eine Zeitskala von 600 lässt sich ohne Rest durch gängige Bildraten teilen.
let t = CMTime(seconds: 5, preferredTimescale: 600)
let half = CMTimeMultiplyByFloat64(t, multiplier: 0.5)Präzise suchen
seek(to:toleranceBefore:toleranceAfter:) mit einer Toleranz von null ermöglicht eine bildgenaue Suche, erfordert jedoch mehr Decodierungsarbeit.
let target = CMTime(seconds: 30, preferredTimescale: 600)
player.seek(to: target, toleranceBefore: .zero, toleranceAfter: .zero)Das Ende erreichen
Beobachten Sie AVPlayerItem.didPlayToEndTimeNotification, um den Abschluss zu erkennen – anschließend können Sie die Wiedergabe wiederholen, das Element schließen oder das nächste Element anzeigen.
NotificationCenter.default.addObserver(
forName: .AVPlayerItemDidPlayToEndTime,
object: item, queue: .main) { _ in
player.seek(to: .zero)
player.play() // loop
}Audio-Session für die Wiedergabe
Damit Audio korrekt wiedergegeben und bei entsprechender Konfiguration im Hintergrund fortgesetzt wird, richten Sie eine AVAudioSession mit der passenden Kategorie ein.
let session = AVAudioSession.sharedInstance()
try? session.setCategory(.playback)
try? session.setActive(true)AVQueuePlayer für Wiedergabelisten
AVQueuePlayer leitet sich von AVPlayer ab und spielt eine Warteschlange von Elementen nacheinander ab – ideal für Wiedergabelisten und kontinuierliche Video-Feeds.
let queue = AVQueuePlayer(items: [item1, item2, item3])
queue.play()Schnelltest: AVPlayer
Testen Sie Ihr Verständnis der Wiedergabe mit AVPlayer.
Zusammenfassung: Medien mit AVPlayer abspielen
AVPlayer steuert die Wiedergabe eines AVPlayerItem, dem ein AVAsset zugrunde liegt; ein AVPlayerLayer rendert das Video. Beobachten Sie den status des Items, verfolgen Sie den Fortschritt mit periodischen CMTime-Beobachtern, suchen Sie mit einer Toleranz von null präzise und behandeln Sie Benachrichtigungen über das Ende der Wiedergabe.
Konfigurieren Sie eine AVAudioSession für die korrekte Audiowiedergabe und verwenden Sie AVQueuePlayer für Wiedergabelisten.
Lerne Swift mit einem KI-Tutor — kostenlos
Schreibe und führe echten Code in deinem Browser aus, bekomme sofortige Hilfe von einem 24/7 KI-Tutor und setze dein Lernen im Web oder in der App fort.
- Kurse
- 122
- Lektionen
- 409
Häufig gestellte Fragen
Ist die Lektion „Medien mit AVPlayer abspielen“ kostenlos?
Ja — der vollständige Text von „Medien mit AVPlayer abspielen“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Swift Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Swift Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Medien mit AVPlayer abspielen“?
Streamen und spielen Sie Audio- und Videodateien ab. Du übst Swift Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Swift Academy zu starten?
Keine Vorkenntnisse erforderlich. Swift Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 4.
Wie lange dauert die Lektion „Medien mit AVPlayer abspielen“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Swift Academy-Lektion Code schreiben und ausführen?
Ja. Jede Swift Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Medien mit AVPlayer abspielen
- Audio aufnehmen
- AVAsset und Komposition
- Player in SwiftUI einbetten