Swift Academy · Ders

AVAsset ve Composition

Medya parçalarını inceleyin ve birleştirin.

3. ders / 413 adım

AVAsset ve Composition, CoddyKit'te ücretsiz bir Swift Academy dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Swift Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Swift Academy kursu toplamda 4 dersten oluşur.

AVAsset Medyayı Temsil Eder

AVAsset, oynatmaya bağlı kalmadan zamana bağlı bir medya parçasını (parçalarını, süresini ve üst verilerini) modeller. Düzenlemenin temelini oluşturur.

import AVFoundation
let asset = AVURLAsset(url: fileURL)

Özellikleri Eşzamansız Yükleme

Varlık özellikleri gerektiğinde yüklenir. Süreyi veya parçaları engelleme olmadan almak için eşzamansız load(_:) API'sini kullanınız.

let duration = try await asset.load(.duration)
let tracks = try await asset.load(.tracks)

Parçalar

Bir varlıkta AVAssetTrack nesneleri bulunur; her biri tek bir medya türü (video, ses veya altyazı) taşır. Düzenleme yaparken bu parçaları inceler ve yeniden kullanırsınız.

let videoTracks = try await asset.loadTracks(withMediaType: .video)
let audioTracks = try await asset.loadTracks(withMediaType: .audio)

AVMutableComposition

AVMutableComposition, diğer varlıklardan zaman aralıkları ekleyerek oluşturduğunuz düzenlenebilir bir varlıktır; klipleri kırpmanın ve birleştirmenin temelini oluşturur.

let composition = AVMutableComposition()

Composition Parçaları Ekleme

Her medya türü için, türünü ve bir parça kimliğini belirterek değiştirilebilir bir parça oluşturunuz.

let videoTrack = composition.addMutableTrack(
    withMediaType: .video,
    preferredTrackID: kCMPersistentTrackID_Invalid)

Zaman Aralıkları Ekleme

Bir kaynak parçadaki bölümü insertTimeRange ile composition parçanıza kopyalayınız ve zaman çizelgesinde yerleşeceği konumu seçiniz.

let range = CMTimeRange(start: .zero, duration: try await asset.load(.duration))
try videoTrack?.insertTimeRange(range, of: sourceTrack, at: .zero)

Klip Kırpma

Kırpmak için başlangıcı ve daha kısa süreyi belirterek bir kaynağın yalnızca bir alt aralığını ekleyiniz.

let clip = CMTimeRange(
    start: CMTime(seconds: 5, preferredTimescale: 600),
    duration: CMTime(seconds: 10, preferredTimescale: 600))
try videoTrack?.insertTimeRange(clip, of: sourceTrack, at: .zero)

Birden Çok Klibi Birleştirme

Her bir klibi geçerli composition süresine ekleyerek klipleri uç uca ekleyiniz ve tek, kesintisiz bir zaman çizelgesi oluşturunuz.

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
}

Efektler için Video Composition

Dönüşümler, katmanlama veya geçişler için composition öğesini, her zaman aralığına ilişkin talimatları tanımlayan bir AVMutableVideoComposition ile birleştiriniz.

let videoComposition = AVMutableVideoComposition()
videoComposition.frameDuration = CMTime(value: 1, timescale: 30)

Sonucu Dışa Aktarma

Bir ön ayar ve çıktı URL'si seçerek composition öğesini AVAssetExportSession ile bir dosyaya oluşturunuz.

let export = AVAssetExportSession(
    asset: composition, presetName: AVAssetExportPresetHighestQuality)
export?.outputURL = outputURL
export?.outputFileType = .mp4
await export?.export()

Dışa Aktarmadan Önce Önizleme

Composition öğesi zaten bir AVAsset olduğundan, düzenlemeyi dışa aktarmayı kesinleştirmeden önce bir AVPlayerItem içine sarıp önizleyebilirsiniz.

let previewItem = AVPlayerItem(asset: composition)
let player = AVPlayer(playerItem: previewItem)

Hızlı Kontrol: Composition

AVAsset ve composition ile ilgili anlayışınızı sınayınız.

Özet: AVAsset ve Composition

AVAsset, eşzamansız özellik yüklemeyle medyayı (parçalar, süre ve üst veriler) modeller. AVMutableComposition, kaynak parçalardan zaman aralıkları ekleyerek düzenlenebilir zaman çizelgeleri oluşturur; böylece kırpma ve birleştirme mümkün olur.

Efektler için bir AVMutableVideoComposition ekleyiniz, composition öğesini bir AVPlayerItem içine sararak önizleyiniz ve AVAssetExportSession ile oluşturunuz.

Başlamak ücretsiz

Yapay zeka eğitmeniyle Swift öğren — ücretsiz

Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.

Kurslar
122
Dersler
409

Sıkça Sorulan Sorular

“AVAsset ve Composition” dersi ücretsiz mi?

Evet — “AVAsset ve Composition” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Swift Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Swift Academy kursu toplamda 4 dersten oluşur.

“AVAsset ve Composition” dersinde ne öğreneceğim?

Medya parçalarını inceleyin ve birleştirin. Swift Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Swift Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Swift Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.

“AVAsset ve Composition” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Swift Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Swift Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. AVPlayer ile Medya Oynatma
  2. Ses Kaydetme
  3. AVAsset ve Composition
  4. Oynatıcıları SwiftUI'ye Yerleştirme
← Swift Academy Sayfasına Dön