Swift Academy · Pelajaran

AVAsset dan Gubahan

Periksa dan gabungkan trek media.

Pelajaran 3 daripada 413 langkah

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.

Percuma untuk bermula

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

  1. Memainkan Media dengan AVPlayer
  2. Merakam Audio
  3. AVAsset dan Gubahan
  4. Benamkan Pemain dalam SwiftUI
← Kembali ke Swift Academy