0Pricing
Swift Academy · Lección

AVAsset y composición

Inspeccione y combine pistas multimedia.

AVAsset y composición es una lección gratuita de Swift Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Swift Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Swift Academy incluye 4 lecciones en total.

AVAsset representa medios

AVAsset modela un medio basado en el tiempo —sus pistas, duración y metadatos— sin comprometerse con la reproducción. Es la base de la edición.

import AVFoundation
let asset = AVURLAsset(url: fileURL)

Carga asíncrona de propiedades

Las propiedades de los recursos se cargan de forma diferida. Use la API asíncrona load(_:) para obtener la duración o las pistas sin bloquear la ejecución.

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

Pistas

Un recurso contiene AVAssetTracks, cada una de las cuales incluye un tipo de medio: vídeo, audio o subtítulos. Estas pistas se inspeccionan y reutilizan durante la edición.

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

AVMutableComposition

AVMutableComposition es un recurso editable que se construye insertando rangos de tiempo de otros recursos; constituye la base del recorte y la unión de clips.

let composition = AVMutableComposition()

Adición de pistas a la composición

Cree una pista mutable para cada tipo de medio, especificando su tipo y un identificador de pista.

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

Inserción de rangos de tiempo

Copie un segmento de una pista de origen a la pista de composición con insertTimeRange, eligiendo dónde se ubicará en la línea de tiempo.

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

Recorte de un clip

Inserte solo una parte del origen especificando un subrango —el inicio y una duración más corta— para recortarlo.

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

Unión de varios clips

Añada los clips uno después de otro insertando cada uno en la duración actual de la composición para construir una única línea de tiempo continua.

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
}

Composición de vídeo para efectos

Para aplicar transformaciones, capas o transiciones, combine la composición con una AVMutableVideoComposition que defina instrucciones para cada rango de tiempo.

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

Exportación del resultado

Renderice la composición en un archivo con AVAssetExportSession, eligiendo un ajuste preestablecido y una URL de salida.

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

Vista previa antes de exportar

Como una composición es también un AVAsset, puede envolverla en un AVPlayerItem y previsualizar la edición antes de iniciar la exportación.

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

Comprobación rápida: composición

Compruebe su comprensión de AVAsset y las composiciones.

Resumen: AVAsset y composición

AVAsset modela medios (pistas, duración y metadatos) con carga asíncrona de propiedades. AVMutableComposition construye líneas de tiempo editables insertando rangos de tiempo de pistas de origen, lo que permite recortar y unir clips.

Añada una AVMutableVideoComposition para aplicar efectos, previsualice envolviendo la composición en un AVPlayerItem y renderice con AVAssetExportSession.

Preguntas frecuentes

¿La lección «AVAsset y composición» es gratis?

Sí — el texto completo de «AVAsset y composición» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Swift Academy, actualiza a CoddyKit PRO. El curso de Swift Academy incluye 4 lecciones en total.

¿Qué aprenderé en «AVAsset y composición»?

Inspeccione y combine pistas multimedia. Practicas Swift Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Swift Academy?

No se requiere experiencia previa. Swift Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.

¿Cuánto tiempo toma la lección «AVAsset y composición»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Swift Academy?

Sí. Cada lección de Swift Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Reproducir contenido multimedia con AVPlayer
  2. Grabar audio
  3. AVAsset y composición
  4. Integrar reproductores en SwiftUI
← Volver a Swift Academy