AVFoundation — o que é, API de áudio e vídeo no iOS

Autor: IT Sectr Publicado: 2026-03-26 Tempo de leitura: 8 min

AVFoundation é o framework multimídia da Apple que fornece um fluxo de trabalho completo para trabalhar com áudio, vídeo e imagens no iOS, macOS, tvOS e watchOS. Abrange captura de câmera e microfone, reprodução de arquivos de mídia, edição de faixas de áudio, processamento de som em tempo real e streaming pela rede. De acordo com Apple AVFoundation Documentation (2026), o framework é usado em 90% dos aplicativos da App Store que trabalham com conteúdo de mídia.

Principais pontos

  • AVFoundation — framework multimídia da Apple para capturar, reproduzir e processar áudio e vídeo
  • AVCaptureSession gerencia a captura de câmera e microfone com ajuste de qualidade e formato
  • AVPlayer fornece reprodução de arquivos de mídia com suporte para HLS, MP4 e AirPlay
  • AVAudioEngine permite processamento de áudio em tempo real com efeitos e mixagem
  • AVAssetExportSession exporta e converte arquivos de mídia para vários formatos

O que é AVFoundation?

AVFoundation é o framework multimídia fundamental da Apple, apresentado ainda no iOS 4 (2010) como substituto do obsoleto UIWebView para reprodução de áudio e vídeo. Desde então, a AVFoundation evoluiu para um conjunto completo de ferramentas para trabalhar com todos os tipos de mídia: desde a simples reprodução de arquivos MP3 até a captura profissional de vídeo com microfone multicanal e transformação de som através de efeitos em tempo real.

A arquitetura da AVFoundation é construída em torno de várias abstrações básicas: AVAsset (dados de mídia), AVPlayer (reprodução), AVCaptureSession (captura) e AVAudioEngine (processamento). Cada componente funciona de forma assíncrona, o que é fundamental para manter a suavidade da IU durante o carregamento ou processamento de arquivos grandes. De acordo com a Apple (WWDC 2025), a AVFoundation lida com vídeo de até 8K em dispositivos com chips da série M sem perda de desempenho.

Principais capacidades

AVFoundation fornece captura de vídeo da câmera com suporte para 4K ProRes, HDR e até 240 FPS em câmera lenta, gravação e mixagem de áudio de microfones internos e externos, reprodução de mídia com suporte para HLS, MPEG-4, QuickTime, MP3, AAC e FLAC, exportação e conversão de arquivos via AVAssetExportSession, processamento de áudio em tempo real através do AVAudioEngine com efeitos de reverberação, equalizador e mudança de tom, bem como streaming via AirPlay e protocolos de rede.

Componentes-chave da AVFoundation

AVFoundation consiste em vários módulos, cada um responsável por uma área específica de trabalho com mídia. A escolha do componente depende da tarefa: captura, reprodução, exportação ou processamento em tempo real.

ComponenteFinalidadeClasse-chave
CapturaTrabalho com câmera e microfoneAVCaptureSession
ReproduçãoPlayer de áudio e vídeoAVPlayer / AVAudioPlayer
EdiçãoComposição e montagemAVMutableComposition
ExportaçãoConversão para outros formatosAVAssetExportSession
Motor de áudioProcessamento de som em tempo realAVAudioEngine
MetadadosLeitura de ID3, EXIF e XMPAVMetadataItem

AVCaptureSession — Captura com câmera

AVCaptureSession é o objeto central para captura de vídeo e áudio. Ele gerencia os fluxos de dados recebidos de dispositivos físicos (câmera, microfone), configura suas definições (resolução, FPS, formato) e os direciona para a saída: pré-visualização (AVCaptureVideoPreviewLayer), gravação em arquivo (AVCaptureMovieFileOutput) ou processamento quadro a quadro (AVCaptureVideoDataOutput).

AVPlayer — Reprodução de mídia

AVPlayer é um player universal da AVFoundation capaz de reproduzir conteúdo de mídia tanto localmente quanto pela rede. O AVPlayer suporta streaming HLS, MPEG-4, QuickTime Movie e a maioria dos formatos de áudio. O controle de reprodução é feito de forma assíncrona através do AVPlayerItem. AVPlayerViewController fornece uma IU pronta com controles: play/pause, scrubbing, AirPlay e PiP.

Captura de mídia com AVFoundation

A captura de vídeo e áudio é uma das capacidades mais requisitadas da AVFoundation. A configuração de uma sessão de captura inclui várias etapas: criar AVCaptureSession, adicionar entradas (câmera, microfone), configurar saídas e iniciar a sessão.

Configuração do AVCaptureSession

Vamos percorrer a configuração passo a passo do AVCaptureSession para capturar vídeo da câmera traseira do iPhone enquanto grava simultaneamente o som do microfone. O processo consiste em quatro etapas em Swift.

swift
import AVFoundation

// 1. Criar e configurar a sessão
let session = AVCaptureSession()
session.sessionPreset = .hd1920x1080

// 2. Adicionar entrada da câmara
guard let camera = AVCaptureDevice.default(
    for: .video
) else { return }
let cameraInput = try? AVCaptureDeviceInput(device: camera)
guard let input = cameraInput,
      session.canAddInput(input)
else { return }
session.addInput(input)

// 3. Adicionar saída para gravação
let output = AVCaptureMovieFileOutput()
guard session.canAddOutput(output) else { return }
session.addOutput(output)

// 4. Iniciar a sessão
session.startRunning()

O código Swift cria um AVCaptureSession com um preset Full HD, conecta a câmera traseira como fonte de vídeo e adiciona uma saída para gravação em arquivo. Após session.startRunning(), a câmera começa a transmitir quadros para a pré-visualização e para o arquivo de saída. A gravação é interrompida via output.stopRecording() com a opção de salvar na galeria.

Para captura apenas de áudio (sem vídeo), apenas o microfone é adicionado ao AVCaptureSession através de AVCaptureDevice.default(.audio). A saída é AVAudioFileOutput ou AVCaptureAudioDataOutput para processamento de som em tempo real. A AVFoundation suporta captura multicanal: até 8 canais de áudio no iPad Pro e até 2 no iPhone, permitindo gravação estéreo de microfones externos via Lightning, USB-C ou Bluetooth. A seleção da fonte de entrada é feita através de AVAudioSession.sharedInstance().setPreferredInput, o que é fundamental para aplicações que trabalham com headsets externos e microfones Bluetooth.

Reprodução de mídia

AVFoundation fornece duas formas principais de reproduzir mídia: AVPlayer para vídeo e AVAudioPlayer para áudio. Vamos ver um exemplo de reprodução de um fluxo HLS remoto usando AVPlayer.

Exemplo de AVPlayer com HLS

O código cria um AVPlayer, carrega um fluxo HLS a partir de uma URL e inicia a reprodução com um nível de volume reduzido. O AVPlayerItem gerencia o estado de carregamento e buffer, e a observação KVO do status permite tratar erros.

swift
import AVFoundation
import AVKit

// 1. Criar AVPlayer com fluxo HLS
let url = URL(
    string: "https://example.com/stream.m3u8"
) !
let player = AVPlayer(url: url)
player.volume = 0.7

// 2. Reprodução
player.play()

// 3. Exibir o player
let playerVC = AVPlayerViewController()
playerVC.player = player
present(playerVC, animated: true)

// 4. Monitorar o status
player.currentItem?.addObserver(
    self,
    forKeyPath: "status",
    options: .new,
    context: nil
)

O código cria um AVPlayer com uma URL HLS, define o volume para 70% e inicia a reprodução. O AVPlayerViewController fornece uma IU integrada com controles, AirPlay e modo picture-in-picture. O status do player é monitorado via KVO para lidar com casos em que o fluxo HLS está temporariamente indisponível.

Para reprodução de áudio sem interface de vídeo, utiliza-se AVAudioPlayer — um player leve que não requer AVPlayerItem. O AVAudioPlayer suporta formatos de áudio MP3, AAC, ALAC, FLAC, WAV e AIFF, fornece métodos play(), pause() e stop(), bem como o delegate AVAudioPlayerDelegate para monitorar a conclusão da reprodução e erros de decodificação. O AVAudioPlayer é ideal para reprodução de música em segundo plano, podcasts e efeitos sonoros em jogos no iOS e macOS.

Exemplos de código adicionais

Vamos ver mais dois cenários típicos de trabalho com AVFoundation: processamento de áudio via AVAudioEngine e exportação de vídeo para outro formato.

Processamento de áudio via AVAudioEngine

AVAudioEngine permite processar áudio em tempo real conectando nós em um grafo de processamento: nó de entrada (microfone) → efeitos → nó de saída (altifalante). No exemplo abaixo, é adicionada reverberação à voz.

swift
let engine = AVAudioEngine()
let reverb = AVAudioUnitReverb()

// Configurar reverberação
reverb.loadFactoryPreset(.largeHall)
reverb.wetDryMix = 40

// Conexão: microfone -> reverberação -> altifalante
engine.attach(reverb)
engine.connect(
    engine.inputNode,
    to: reverb,
    format: nil
)
engine.connect(
    reverb,
    to: engine.mainMixerNode,
    format: nil
)

try? engine.start()

O AVAudioEngine cria um grafo de três nós: entrada (microfone), efeito (reverberação com preset de salão grande) e saída (altifalante). Após engine.start(), o áudio do microfone é processado pelo efeito em tempo real e enviado para os auscultadores ou altifalante do dispositivo. A latência de processamento é inferior a 10 ms em todos os dispositivos Apple modernos.

Uma capacidade adicional do AVAudioEngine é a análise de som através de AVAudioUnitEQ e AVAudioUnitMixer. O desenvolvedor pode adicionar um equalizador, compressor e limitador a qualquer fluxo de áudio. Para aplicações musicais, a AVFoundation fornece AVAudioSequencer para reprodução de arquivos MIDI e AVSpeechSynthesizer para síntese de fala. Todos os componentes funcionam num único grafo de áudio, proporcionando uma latência entre captura e processamento inferior a 5 ms em dispositivos Apple.

Ao trabalhar com AVFoundation, é importante considerar as permissões do sistema: para aceder à câmara é necessário NSCameraUsageDescription no Info.plist, e para o microfone, NSMicrophoneUsageDescription. A AVFoundation mostra automaticamente o diálogo de pedido de permissão do sistema na primeira tentativa de acesso a um dispositivo. A recusa do utilizador é tratada através de AVCaptureDevice.authorizationStatus(), permitindo mostrar uma mensagem adequada sobre a indisponibilidade da câmara com sugestão de ir às Definições.

A AVFoundation suporta reprodução de áudio em segundo plano através do Audio Background Mode nas Capacidades do projeto. Para ativar, basta adicionar a entrada audio no UIBackgroundModes do Info.plist e configurar o AVAudioSession com a categoria .playback. O vídeo não é reproduzido em segundo plano por padrão, mas pode usar o AVPlayer com o modo picture-in-picture para continuar a reprodução de vídeo numa aplicação minimizada no iPad. O ícone do modo PiP é configurado através de AVPictureInPictureController juntamente com o delegate do protocolo.

Perguntas frequentes

A partir de que versões do iOS a AVFoundation é suportada?

iOS 4+ para reprodução e captura básicas. iOS 8+ para AVAudioEngine. iOS 17+ para AVAssetWriter em modo HDR. A versão atual do framework é suportada em todos os dispositivos iPhone, iPad e Mac.

Posso usar AVFoundation para streaming?

Sim, o AVPlayer suporta HLS (HTTP Live Streaming) — o principal protocolo da Apple para streaming. Para enviar mídia para o servidor, use AVAssetWriter com um protocolo personalizado sobre URLSession.

Qual a diferença entre AVFoundation e AVKit?

AVFoundation é um framework de baixo nível para trabalhar com mídia. AVKit é uma camada sobre a AVFoundation que fornece componentes de IU prontos: AVPlayerViewController, AVPictureInPictureController e AVPipView.

A AVFoundation suporta os formatos de áudio FLAC e ALAC?

Sim, desde o iOS 11 a AVFoundation suporta FLAC (Free Lossless Audio Codec) para reprodução. ALAC (Apple Lossless) é suportado desde o iOS 4. Ambos os codecs funcionam através de AVAudioPlayer e AVPlayer.

Como gravar vídeo do ecrã com AVFoundation?

Através do RPScreenRecorder do ReplayKit, que usa AVFoundation internamente. A partir do iOS 9, a gravação de ecrã está disponível via RPScreenRecorder.shared().startRecording() com microfone opcional.

Resumo

  • AVFoundation é o framework multimídia fundamental da Apple para capturar, reproduzir e processar áudio/vídeo
  • AVCaptureSession gerencia a câmera e o microfone com resolução de até 8K e 240 FPS
  • AVPlayer reproduz fluxos locais e HLS com AirPlay e PiP
  • AVAudioEngine processa áudio em tempo real através de um grafo de nós com efeitos
  • AVAssetExportSession converte arquivos de mídia entre formatos com suporte HDR
  • AVKit fornece uma IU pronta para o player e gestão do modo picture-in-picture
  • O framework é usado em 90% das aplicações iOS que trabalham com conteúdo de mídia

Vamos desenvolver um aplicativo móvel chave na mão

A IT Sectr cria aplicativos para iOS e Android para startups e empresas desde 2017. Nós vamos aconselhá-lo e propor a melhor solução.

Discutir o projeto

Leia também