AVAsset und Komposition
Untersuchen und kombinieren Sie Medienspuren.
AVAsset und Komposition ist eine kostenlose Swift Academy-Lektion auf CoddyKit. Dies ist Lektion 3 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.
AVAsset repräsentiert Medien
AVAsset bildet ein Stück zeitbasierter Medien ab – einschließlich Spuren, Dauer und Metadaten –, ohne es an eine Wiedergabe zu binden. Es bildet die Grundlage für die Bearbeitung.
import AVFoundation
let asset = AVURLAsset(url: fileURL)Eigenschaften asynchron laden
Eigenschaften eines Assets werden verzögert geladen. Verwenden Sie die asynchrone API load(_:), um Dauer oder Spuren abzurufen, ohne den Ablauf zu blockieren.
let duration = try await asset.load(.duration)
let tracks = try await asset.load(.tracks)Spuren
Ein Asset enthält AVAssetTrack-Objekte, von denen jedes einen Medientyp enthält – Video, Audio oder Untertitel. Beim Bearbeiten untersuchen und verwenden Sie diese Spuren weiter.
let videoTracks = try await asset.loadTracks(withMediaType: .video)
let audioTracks = try await asset.loadTracks(withMediaType: .audio)AVMutableComposition
AVMutableComposition ist ein bearbeitbares Asset, das Sie erstellen, indem Sie Zeitbereiche aus anderen Assets einfügen – die Grundlage für das Zuschneiden und Zusammenfügen von Clips.
let composition = AVMutableComposition()Kompositionsspuren hinzufügen
Erstellen Sie für jeden Medientyp eine veränderbare Spur und geben Sie deren Typ und eine Spuren-ID an.
let videoTrack = composition.addMutableTrack(
withMediaType: .video,
preferredTrackID: kCMPersistentTrackID_Invalid)Zeitbereiche einfügen
Kopieren Sie mit insertTimeRange einen Abschnitt aus einer Quellspur in Ihre Kompositionsspur und legen Sie fest, an welcher Stelle der Zeitleiste er eingefügt wird.
let range = CMTimeRange(start: .zero, duration: try await asset.load(.duration))
try videoTrack?.insertTimeRange(range, of: sourceTrack, at: .zero)Einen Clip zuschneiden
Fügen Sie nur einen Teil der Quelle ein, indem Sie einen Teilbereich – den Anfang und eine kürzere Dauer – angeben.
let clip = CMTimeRange(
start: CMTime(seconds: 5, preferredTimescale: 600),
duration: CMTime(seconds: 10, preferredTimescale: 600))
try videoTrack?.insertTimeRange(clip, of: sourceTrack, at: .zero)Mehrere Clips zusammenfügen
Fügen Sie Clips direkt hintereinander ein, indem Sie jeden Clip an der aktuellen Dauer der Komposition einfügen und so eine durchgehende Zeitleiste erstellen.
var cursor = CMTime.zero
for src in sourceTracks {
let r = CMTimeRange(start: .zero, duration: src.timeRange.duration)
try videoTrack?.insertTimeRange(r, of: src, at: cursor)
cursor = cursor + r.duration
}Videokomposition für Effekte
Für Transformationen, Ebenen oder Übergänge kombinieren Sie die Komposition mit einer AVMutableVideoComposition, die Anweisungen für einzelne Zeitbereiche definiert.
let videoComposition = AVMutableVideoComposition()
videoComposition.frameDuration = CMTime(value: 1, timescale: 30)Das Ergebnis exportieren
Rendern Sie die Komposition mit AVAssetExportSession in eine Datei und wählen Sie dabei eine Voreinstellung und eine Ausgabe-URL aus.
let export = AVAssetExportSession(
asset: composition, presetName: AVAssetExportPresetHighestQuality)
export?.outputURL = outputURL
export?.outputFileType = .mp4
await export?.export()Vor dem Export eine Vorschau anzeigen
Da eine Komposition selbst ein AVAsset ist, können Sie sie in ein AVPlayerItem einbinden und die Bearbeitung vor dem endgültigen Export in einer Vorschau ansehen.
let previewItem = AVPlayerItem(asset: composition)
let player = AVPlayer(playerItem: previewItem)Schnelltest: Komposition
Testen Sie Ihr Verständnis von AVAsset und Komposition.
Zusammenfassung: AVAsset und Komposition
AVAsset bildet Medien (Spuren, Dauer, Metadaten) ab und lädt Eigenschaften asynchron. AVMutableComposition erstellt bearbeitbare Zeitleisten, indem Zeitbereiche aus Quellspuren eingefügt werden – so lassen sich Clips zuschneiden und zusammenfügen.
Fügen Sie für Effekte eine AVMutableVideoComposition hinzu, zeigen Sie eine Vorschau an, indem Sie die Komposition in ein AVPlayerItem einbinden, und rendern Sie sie mit AVAssetExportSession.
Häufig gestellte Fragen
Ist die Lektion „AVAsset und Komposition“ kostenlos?
Ja — der vollständige Text von „AVAsset und Komposition“ 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 „AVAsset und Komposition“?
Untersuchen und kombinieren Sie Medienspuren. 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 3 von 4.
Wie lange dauert die Lektion „AVAsset und Komposition“?
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