Swift Academy · Aula

Reprodução de Mídia com AVPlayer

Transmita e reproduza recursos de áudio e vídeo.

Aula 1 de 413 etapas

Reprodução de Mídia com AVPlayer é uma aula grátis de Swift Academy no CoddyKit. Esta é a aula 1 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.

AVFoundation para mídia

AVFoundation é o framework da Apple para trabalhar com mídia audiovisual baseada em tempo — reprodução, captura, edição e exportação.

A classe central para reprodução é AVPlayer.

import AVFoundation

AVPlayer e AVPlayerItem

AVPlayer controla a reprodução, enquanto AVPlayerItem representa a mídia que está sendo reproduzida e acompanha seu estado. Um AVAsset fornece o conteúdo do item.

let url = URL(string: "https://example.com/video.mp4")!
let item = AVPlayerItem(url: url)
let player = AVPlayer(playerItem: item)

Iniciando e pausando

Controle a reprodução com play(), pause() e seek(to:). A reprodução começa no tempo atual.

player.play()
// later
player.pause()

Exibindo vídeo

Para mostrar um vídeo no UIKit, hospede um AVPlayerLayer em uma visualização. A camada renderiza a saída visual do reprodutor.

let playerLayer = AVPlayerLayer(player: player)
playerLayer.frame = view.bounds
playerLayer.videoGravity = .resizeAspect
view.layer.addSublayer(playerLayer)

Observando o estado

Um AVPlayerItem informa um status. Observe-o para saber quando a mídia está readyToPlay ou quando ocorreu uma falha.

let observation = item.observe(\.status) { item, _ in
    if item.status == .readyToPlay {
        player.play()
    }
}

Acompanhando o tempo

Use addPeriodicTimeObserver para atualizar uma interface de progresso conforme a reprodução avança. Os tempos são valores de CMTime.

let interval = CMTime(seconds: 0.5, preferredTimescale: 600)
player.addPeriodicTimeObserver(forInterval: interval, queue: .main) { time in
    let seconds = time.seconds
    print("at \(seconds)s")
}

Noções básicas de CMTime

CMTime armazena o tempo como um número racional (valor dividido pela escala de tempo) para oferecer precisão por amostra. Uma escala de tempo de 600 divide exatamente as taxas de quadros comuns.

let t = CMTime(seconds: 5, preferredTimescale: 600)
let half = CMTimeMultiplyByFloat64(t, multiplier: 0.5)

Buscando com precisão

seek(to:toleranceBefore:toleranceAfter:) com tolerância zero permite buscar com precisão de quadro, ao custo de um trabalho maior de decodificação.

let target = CMTime(seconds: 30, preferredTimescale: 600)
player.seek(to: target, toleranceBefore: .zero, toleranceAfter: .zero)

Chegando ao fim

Observe AVPlayerItem.didPlayToEndTimeNotification para detectar a conclusão; depois, repita, feche ou mostre o próximo item.

NotificationCenter.default.addObserver(
    forName: .AVPlayerItemDidPlayToEndTime,
    object: item, queue: .main) { _ in
    player.seek(to: .zero)
    player.play() // loop
}

Sessão de áudio para reprodução

Para que o áudio seja reproduzido corretamente (e continue em segundo plano quando configurado), configure uma AVAudioSession com a categoria adequada.

let session = AVAudioSession.sharedInstance()
try? session.setCategory(.playback)
try? session.setActive(true)

AVQueuePlayer para listas de reprodução

AVQueuePlayer é uma subclasse de AVPlayer que reproduz uma fila de itens em sequência — ideal para listas de reprodução e feeds de vídeo contínuos.

let queue = AVQueuePlayer(items: [item1, item2, item3])
queue.play()

Verificação rápida: AVPlayer

Teste sua compreensão sobre a reprodução com AVPlayer.

Recapitulação: reproduzindo mídia com AVPlayer

AVPlayer conduz a reprodução de um AVPlayerItem baseado em um AVAsset; um AVPlayerLayer renderiza o vídeo. Observe o status do item, acompanhe o progresso com observadores periódicos de CMTime, faça buscas precisas com tolerância zero e trate as notificações de fim da reprodução.

Configure uma AVAudioSession para obter o áudio correto e use AVQueuePlayer para listas de reprodução.

Grátis para começar

Aprenda Swift com um tutor de IA — grátis

Escreva e execute código real no seu navegador, obtenha ajuda instantânea de um tutor de IA 24/7 e continue de onde parou na web ou no app.

Cursos
122
Aulas
409

Perguntas Frequentes

A aula “Reprodução de Mídia com AVPlayer” é grátis?

Sim — o texto completo de “Reprodução de Mídia com AVPlayer” é 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 “Reprodução de Mídia com AVPlayer”?

Transmita e reproduza recursos de áudio e vídeo. 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 1 de 4.

Quanto tempo leva a aula “Reprodução de Mídia com AVPlayer”?

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