0Pricing
Swift Academy · Leçon

AVAsset et composition

Inspectez et combinez des pistes multimédias.

AVAsset et composition est une leçon Swift Academy gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Swift Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Swift Academy comprend 4 leçons au total.

AVAsset représente un média

AVAsset modélise un média temporel — ses pistes, sa durée et ses métadonnées — sans imposer sa lecture. Il constitue la base du montage.

import AVFoundation
let asset = AVURLAsset(url: fileURL)

Charger des propriétés de manière asynchrone

Les propriétés d’un élément sont chargées à la demande. Utilisez l’API asynchrone load(_:) pour récupérer la durée ou les pistes sans bloquer l’exécution.

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

Pistes

Un élément possède des AVAssetTracks, chacune contenant un seul type de média : vidéo, audio ou sous-titres. Vous examinez et réutilisez ces pistes lors du montage.

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

AVMutableComposition

AVMutableComposition est un élément modifiable que vous construisez en insérant des plages temporelles provenant d’autres éléments — c’est le cœur du découpage et de l’assemblage des clips.

let composition = AVMutableComposition()

Ajouter des pistes à la composition

Créez une piste modifiable pour chaque type de média, en indiquant son type et un identifiant de piste.

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

Insérer des plages temporelles

Copiez un segment d’une piste source dans votre piste de composition avec insertTimeRange, en choisissant l’endroit où il doit apparaître sur la ligne temporelle.

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

Découper un clip

Insérez seulement une partie de la source en indiquant une sous-plage — le début et une durée plus courte — afin de la découper.

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

Assembler plusieurs clips

Ajoutez les clips bout à bout en insérant chacun à la durée actuelle de la composition, afin de construire une seule ligne temporelle continue.

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
}

Composition vidéo pour les effets

Pour les transformations, les superpositions ou les transitions, associez la composition à une AVMutableVideoComposition qui définit des instructions pour chaque plage temporelle.

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

Exporter le résultat

Effectuez le rendu de la composition dans un fichier avec AVAssetExportSession, en choisissant un préréglage et une URL de sortie.

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

Prévisualiser avant l’exportation

Comme une composition est elle-même un AVAsset, vous pouvez l’encapsuler dans un AVPlayerItem et prévisualiser le montage avant de lancer l’exportation.

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

Vérification rapide : composition

Vérifiez votre compréhension de AVAsset et de la composition.

Récapitulatif : AVAsset et composition

AVAsset modélise les médias (pistes, durée, métadonnées) et charge ses propriétés de manière asynchrone. AVMutableComposition construit des lignes temporelles modifiables en insérant des plages temporelles provenant des pistes sources, ce qui permet le découpage et l’assemblage.

Ajoutez une AVMutableVideoComposition pour les effets, prévisualisez en encapsulant la composition dans un AVPlayerItem et effectuez le rendu avec AVAssetExportSession.

Questions Fréquemment Posées

La leçon « AVAsset et composition » est-elle gratuite ?

Oui — le texte complet de « AVAsset et composition » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Swift Academy, passe à CoddyKit PRO. Le cours Swift Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « AVAsset et composition » ?

Inspectez et combinez des pistes multimédias. Tu pratiques Swift Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Swift Academy ?

Aucune expérience préalable n'est requise. Swift Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.

Combien de temps prend la leçon « AVAsset et composition » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Swift Academy ?

Oui. Chaque leçon Swift Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Lire des contenus multimédias avec AVPlayer
  2. Enregistrer de l’audio
  3. AVAsset et composition
  4. Intégrer des lecteurs dans SwiftUI
← Retour à Swift Academy