0Pricing
Swift Academy · Aula

AVAsset e Composição

Inspecione e combine faixas de mídia.

AVAsset e Composição é uma aula grátis de Swift Academy no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Swift Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Swift Academy inclui 4 aulas no total.

AVAsset representa mídia

AVAsset modela uma parte de mídia temporizada — suas faixas, duração e metadados — sem se comprometer com a reprodução. Ele é a base da edição.

import AVFoundation
let asset = AVURLAsset(url: fileURL)

Carregando propriedades de forma assíncrona

As propriedades do ativo são carregadas sob demanda. Use a API assíncrona load(_:) para obter a duração ou as faixas sem bloquear a execução.

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

Faixas

Um ativo possui objetos AVAssetTrack, cada um contendo um tipo de mídia — vídeo, áudio ou legendas. Você inspeciona e reutiliza essas faixas durante a edição.

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

AVMutableComposition

AVMutableComposition é um ativo editável que você constrói inserindo intervalos de tempo de outros ativos — a base para cortar e unir clipes.

let composition = AVMutableComposition()

Adicionando faixas à composição

Crie uma faixa mutável para cada tipo de mídia, especificando seu tipo e um ID de faixa.

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

Inserindo intervalos de tempo

Copie um segmento de uma faixa de origem para a faixa da composição com insertTimeRange, escolhendo onde ele ficará na linha do tempo.

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

Cortando um clipe

Insira somente parte da origem especificando um subintervalo — o início e uma duração menor — para fazer o corte.

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

Unindo vários clipes

Acrescente os clipes um após o outro inserindo cada um na duração atual da composição e construindo uma única linha do tempo contínua.

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
}

Composição de vídeo para efeitos

Para transformações, camadas ou transições, combine a composição com uma AVMutableVideoComposition que define instruções para cada intervalo de tempo.

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

Exportando o resultado

Renderize a composição em um arquivo com AVAssetExportSession, escolhendo uma predefinição e uma URL de saída.

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

Visualizando antes da exportação

Como uma composição também é um AVAsset, você pode envolvê-la em um AVPlayerItem e visualizar a edição antes de iniciar a exportação.

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

Verificação rápida: composição

Teste sua compreensão sobre AVAsset e composição.

Recapitulação: AVAsset e composição

AVAsset modela a mídia (faixas, duração e metadados) com carregamento assíncrono de propriedades. AVMutableComposition constrói linhas do tempo editáveis inserindo intervalos de tempo das faixas de origem, permitindo cortar e unir clipes.

Adicione uma AVMutableVideoComposition para obter efeitos, visualize o resultado envolvendo a composição em um AVPlayerItem e renderize com AVAssetExportSession.

Perguntas Frequentes

A aula “AVAsset e Composição” é grátis?

Sim — o texto completo de “AVAsset e Composição” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Swift Academy, atualize para CoddyKit PRO. O curso de Swift Academy inclui 4 aulas no total.

O que vou aprender em “AVAsset e Composição”?

Inspecione e combine faixas de mídia. Você pratica Swift Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Swift Academy?

Nenhuma experiência prévia é necessária. Swift Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.

Quanto tempo leva a aula “AVAsset e Composição”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Swift Academy?

Sim. Cada aula de Swift Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Reprodução de Mídia com AVPlayer
  2. Gravação de Áudio
  3. AVAsset e Composição
  4. Incorporação de Reprodutores no SwiftUI
← Voltar para Swift Academy