AVAsset dan Gubahan
Periksa dan gabungkan trek media.
AVAsset dan Gubahan ialah pelajaran Swift Academy percuma di CoddyKit. Ini ialah pelajaran 3 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Swift Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Swift Academy merangkumi sejumlah 4 pelajaran.
AVAsset Mewakili Media
AVAsset memodelkan sebahagian media berjangka—trek, tempoh dan metadatanya—tanpa menetapkan cara main balik. Ia menjadi asas untuk penyuntingan.
import AVFoundation
let asset = AVURLAsset(url: fileURL)Memuatkan Sifat Secara Tak Segerak
Sifat aset dimuatkan secara malas. Gunakan API tak segerak load(_:) untuk mendapatkan tempoh atau trek tanpa menyekat pelaksanaan.
let duration = try await asset.load(.duration)
let tracks = try await asset.load(.tracks)Trek
Sesuatu aset mempunyai trek AVAssetTrack, setiap satunya membawa satu jenis media—video, audio atau sari kata. Anda memeriksa dan menggunakan semula trek ini semasa menyunting.
let videoTracks = try await asset.loadTracks(withMediaType: .video)
let audioTracks = try await asset.loadTracks(withMediaType: .audio)AVMutableComposition
AVMutableComposition ialah aset boleh sunting yang Anda bina dengan memasukkan julat masa daripada aset lain—teras untuk memangkas dan mencantumkan klip.
let composition = AVMutableComposition()Menambahkan Trek composition
Cipta trek boleh ubah bagi setiap jenis media, sambil menentukan jenisnya dan ID trek.
let videoTrack = composition.addMutableTrack(
withMediaType: .video,
preferredTrackID: kCMPersistentTrackID_Invalid)Memasukkan Julat Masa
Salin segmen daripada trek sumber ke dalam trek composition Anda dengan insertTimeRange, sambil memilih kedudukannya pada garis masa.
let range = CMTimeRange(start: .zero, duration: try await asset.load(.duration))
try videoTrack?.insertTimeRange(range, of: sourceTrack, at: .zero)Memangkas Klip
Masukkan hanya sebahagian daripada sumber dengan menentukan sub-julat—permulaan dan tempoh yang lebih pendek—untuk memangkasnya.
let clip = CMTimeRange(
start: CMTime(seconds: 5, preferredTimescale: 600),
duration: CMTime(seconds: 10, preferredTimescale: 600))
try videoTrack?.insertTimeRange(clip, of: sourceTrack, at: .zero)Mencantumkan Berbilang Klip
Tambahkan klip satu demi satu dengan memasukkan setiap klip pada tempoh composition semasa, lalu membina satu garis masa berterusan.
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
}Video composition untuk Kesan
Untuk transformasi, pelapisan atau peralihan, gabungkan composition dengan AVMutableVideoComposition yang menentukan arahan bagi setiap julat masa.
let videoComposition = AVMutableVideoComposition()
videoComposition.frameDuration = CMTime(value: 1, timescale: 30)Mengeksport Hasil
Paparkan composition ke dalam fail dengan AVAssetExportSession, sambil memilih pratetap dan URL output.
let export = AVAssetExportSession(
asset: composition, presetName: AVAssetExportPresetHighestQuality)
export?.outputURL = outputURL
export?.outputFileType = .mp4
await export?.export()Mempratonton Sebelum Mengeksport
Oleh sebab composition itu sendiri ialah AVAsset, Anda boleh membungkusnya dalam AVPlayerItem dan mempratonton suntingan sebelum meneruskan pengeksportan.
let previewItem = AVPlayerItem(asset: composition)
let player = AVPlayer(playerItem: previewItem)Semakan Pantas: composition
Uji pemahaman Anda tentang AVAsset dan composition.
Imbas Kembali: AVAsset dan composition
AVAsset memodelkan media (trek, tempoh, metadata) dengan pemuatan sifat secara tak segerak. AVMutableComposition membina garis masa boleh sunting dengan memasukkan julat masa daripada trek sumber—membolehkan pemangkasan dan pencantuman.
Tambahkan AVMutableVideoComposition untuk kesan, prapapar dengan membungkus composition dalam AVPlayerItem, dan paparkan hasil dengan AVAssetExportSession.
Pelajari Swift dengan tutor kecerdasan buatan — percuma
Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.
- Kursus
- 122
- Pelajaran
- 409
Soalan Lazim
Adakah pelajaran “AVAsset dan Gubahan” percuma?
Ya — sebanyak 3 pelajaran dalam laluan pembelajaran Swift Academy, termasuk “AVAsset dan Gubahan”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus Swift Academy merangkumi sejumlah 4 pelajaran.
Apakah yang akan saya pelajari dalam “AVAsset dan Gubahan”?
Periksa dan gabungkan trek media. Anda berlatih Swift Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.
Adakah saya memerlukan pengalaman untuk memulakan Swift Academy?
Tiada pengalaman terdahulu diperlukan. Pembelajaran Swift Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 3 daripada 4.
Berapa lamakah pelajaran “AVAsset dan Gubahan” diambil?
Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.
Bolehkah saya menulis dan menjalankan kod dalam pelajaran Swift Academy ini?
Ya. Setiap pelajaran Swift Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.
Semua pelajaran dalam kursus ini
- Memainkan Media dengan AVPlayer
- Merakam Audio
- AVAsset dan Gubahan
- Benamkan Pemain dalam SwiftUI