Reprodução de Mídia com AVPlayer
Transmita e reproduza recursos de áudio e vídeo.
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 AVFoundationAVPlayer 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.
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
- Reprodução de Mídia com AVPlayer
- Gravação de Áudio
- AVAsset e Composição
- Incorporação de Reprodutores no SwiftUI