AVAsset i kompozycja
Sprawdzanie i łączenie ścieżek multimedialnych.
AVAsset i kompozycja to bezpłatna lekcja Swift Academy na CoddyKit. To lekcja 3 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Swift Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Swift Academy zawiera 4 lekcji w sumie.
AVAsset reprezentuje multimedia
AVAsset opisuje fragment multimediów opartych na czasie — jego ścieżki, czas trwania i metadane — bez konieczności definiowania sposobu odtwarzania. Stanowi podstawę edycji.
import AVFoundation
let asset = AVURLAsset(url: fileURL)Asynchroniczne ładowanie właściwości
Właściwości zasobu są ładowane leniwie. Użyj asynchronicznego API load(_:), aby pobrać czas trwania lub ścieżki bez blokowania.
let duration = try await asset.load(.duration)
let tracks = try await asset.load(.tracks)Ścieżki
Zasób zawiera ścieżki AVAssetTrack, z których każda przechowuje jeden typ multimediów — wideo, dźwięk lub napisy. Podczas edycji analizujesz te ścieżki i używasz ich ponownie.
let videoTracks = try await asset.loadTracks(withMediaType: .video)
let audioTracks = try await asset.loadTracks(withMediaType: .audio)AVMutableComposition
AVMutableComposition to edytowalny zasób tworzony przez wstawianie zakresów czasu z innych zasobów — stanowi podstawę przycinania i łączenia klipów.
let composition = AVMutableComposition()Dodawanie ścieżek kompozycji
Utwórz zmienną ścieżkę dla każdego typu multimediów, określając jej typ i identyfikator ścieżki.
let videoTrack = composition.addMutableTrack(
withMediaType: .video,
preferredTrackID: kCMPersistentTrackID_Invalid)Wstawianie zakresów czasu
Skopiuj fragment ze ścieżki źródłowej do ścieżki kompozycji za pomocą insertTimeRange, wybierając jego położenie na osi czasu.
let range = CMTimeRange(start: .zero, duration: try await asset.load(.duration))
try videoTrack?.insertTimeRange(range, of: sourceTrack, at: .zero)Przycinanie klipu
Aby przyciąć klip, wstaw tylko część źródła, określając podzakres — punkt początkowy i krótszy czas trwania.
let clip = CMTimeRange(
start: CMTime(seconds: 5, preferredTimescale: 600),
duration: CMTime(seconds: 10, preferredTimescale: 600))
try videoTrack?.insertTimeRange(clip, of: sourceTrack, at: .zero)Łączenie wielu klipów
Dodawaj klipy jeden za drugim, wstawiając każdy w miejscu bieżącego czasu trwania kompozycji i tworząc jedną ciągłą oś czasu.
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
}Kompozycja wideo do tworzenia efektów
W przypadku transformacji, nakładania warstw lub przejść połącz kompozycję z obiektem AVMutableVideoComposition, który definiuje instrukcje dla poszczególnych zakresów czasu.
let videoComposition = AVMutableVideoComposition()
videoComposition.frameDuration = CMTime(value: 1, timescale: 30)Eksportowanie wyniku
Wyrenderuj kompozycję do pliku za pomocą AVAssetExportSession, wybierając ustawienie wstępne i adres URL pliku wyjściowego.
let export = AVAssetExportSession(
asset: composition, presetName: AVAssetExportPresetHighestQuality)
export?.outputURL = outputURL
export?.outputFileType = .mp4
await export?.export()Podgląd przed eksportem
Ponieważ kompozycja sama jest obiektem AVAsset, możesz opakować ją w AVPlayerItem i wyświetlić podgląd edycji przed rozpoczęciem eksportu.
let previewItem = AVPlayerItem(asset: composition)
let player = AVPlayer(playerItem: previewItem)Szybkie sprawdzenie: kompozycja
Sprawdź swoją wiedzę na temat AVAsset i kompozycji.
Podsumowanie: AVAsset i kompozycja
AVAsset opisuje multimedia (ścieżki, czas trwania i metadane), a jego właściwości można ładować asynchronicznie. AVMutableComposition tworzy edytowalne osie czasu przez wstawianie zakresów czasu ze ścieżek źródłowych, umożliwiając przycinanie i łączenie klipów.
Dodaj AVMutableVideoComposition, aby uzyskać efekty, wyświetl podgląd, opakowując kompozycję w AVPlayerItem, i renderuj wynik za pomocą AVAssetExportSession.
Ucz się Swift dzięki korepetycjom AI — za darmo
Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.
- Kursy
- 122
- Lekcje
- 409
Często zadawane pytania
Czy lekcja „AVAsset i kompozycja” jest bezpłatna?
Tak — pełny tekst „AVAsset i kompozycja” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Swift Academy, przejdź na CoddyKit PRO. Kurs Swift Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „AVAsset i kompozycja”?
Sprawdzanie i łączenie ścieżek multimedialnych. Ćwiczysz Swift Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Swift Academy?
Nie wymagamy żadnego doświadczenia. Swift Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 3 z 4.
Ile czasu zajmuje lekcja „AVAsset i kompozycja”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Swift Academy?
Tak. Każda lekcja Swift Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Odtwarzanie multimediów za pomocą AVPlayer
- Nagrywanie dźwięku
- AVAsset i kompozycja
- Osadzanie odtwarzaczy w SwiftUI