AVFoundation — cos'è, API audio e video in iOS

Autore: IT Sectr Pubblicato: 2026-03-26 Tempo di lettura: 8 min

AVFoundation è il framework multimediale di Apple che fornisce un flusso di lavoro completo per lavorare con audio, video e immagini su iOS, macOS, tvOS e watchOS. Copre l'acquisizione da fotocamera e microfono, la riproduzione di file multimediali, l'editing di tracce audio, l'elaborazione del suono in tempo reale e lo streaming in rete. Secondo Apple AVFoundation Documentation (2026), il framework è utilizzato nel 90% delle applicazioni App Store che lavorano con contenuti multimediali.

Punti chiave

  • AVFoundation — il framework multimediale di Apple per acquisire, riprodurre ed elaborare audio e video
  • AVCaptureSession gestisce l'acquisizione da fotocamera e microfono con impostazioni di qualità e formato
  • AVPlayer fornisce la riproduzione di file multimediali con supporto per HLS, MP4 e AirPlay
  • AVAudioEngine consente l'elaborazione audio in tempo reale con effetti e missaggio
  • AVAssetExportSession esporta e converte file multimediali in vari formati

Cos'è AVFoundation?

AVFoundation è il framework multimediale fondamentale di Apple, introdotto già in iOS 4 (2010) come sostituto del deprecato UIWebView per la riproduzione audio e video. Da allora, AVFoundation si è evoluto in un set completo di strumenti per lavorare con tutti i tipi di media: dalla semplice riproduzione di file MP3 all'acquisizione video professionale con microfono multicanale e alla trasformazione del suono tramite effetti in tempo reale.

L'architettura di AVFoundation è costruita attorno a diverse astrazioni di base: AVAsset (dati multimediali), AVPlayer (riproduzione), AVCaptureSession (acquisizione) e AVAudioEngine (elaborazione). Ogni componente opera in modo asincrono, il che è fondamentale per mantenere la fluidità dell'interfaccia utente durante il caricamento o l'elaborazione di file di grandi dimensioni. Secondo Apple (WWDC 2025), AVFoundation gestisce video fino a 8K su dispositivi con chip della serie M senza perdita di prestazioni.

Capacità principali

AVFoundation fornisce acquisizione video dalla fotocamera con supporto per 4K ProRes, HDR e fino a 240 FPS in slow-motion, registrazione e missaggio audio da microfoni integrati ed esterni, riproduzione multimediale con supporto per HLS, MPEG-4, QuickTime, MP3, AAC e FLAC, esportazione e conversione di file tramite AVAssetExportSession, elaborazione audio in tempo reale attraverso AVAudioEngine con effetti di riverbero, equalizzatore e pitch-shifting, nonché streaming tramite AirPlay e protocolli di rete.

Componenti chiave di AVFoundation

AVFoundation è costituito da diversi moduli, ciascuno responsabile di un'area specifica del lavoro multimediale. La scelta del componente dipende dall'attività: acquisizione, riproduzione, esportazione o elaborazione in tempo reale.

ComponenteScopoClasse chiave
AcquisizioneLavoro con fotocamera e microfonoAVCaptureSession
RiproduzioneLettore audio e videoAVPlayer / AVAudioPlayer
EditingComposizione e montaggioAVMutableComposition
EsportazioneConversione in altri formatiAVAssetExportSession
Motore audioElaborazione del suono in tempo realeAVAudioEngine
MetadatiLettura di ID3, EXIF e XMPAVMetadataItem

AVCaptureSession — Acquisizione con fotocamera

AVCaptureSession è l'oggetto centrale per l'acquisizione video e audio. Gestisce i flussi di dati in arrivo dai dispositivi fisici (fotocamera, microfono), configura le loro impostazioni (risoluzione, FPS, formato) e li indirizza all'uscita: anteprima (AVCaptureVideoPreviewLayer), registrazione su file (AVCaptureMovieFileOutput) o elaborazione fotogramma per fotogramma (AVCaptureVideoDataOutput).

AVPlayer — Riproduzione multimediale

AVPlayer è un lettore universale di AVFoundation in grado di riprodurre contenuti multimediali sia localmente che in rete. AVPlayer supporta lo streaming HLS, MPEG-4, QuickTime Movie e la maggior parte dei formati audio. Il controllo della riproduzione avviene in modo asincrono tramite AVPlayerItem. AVPlayerViewController fornisce un'interfaccia utente pronta all'uso con controlli: play/pausa, scorrimento, AirPlay e PiP.

Acquisizione multimediale con AVFoundation

L'acquisizione video e audio è una delle funzionalità più richieste di AVFoundation. La configurazione di una sessione di acquisizione comprende diversi passaggi: creazione di AVCaptureSession, aggiunta di ingressi (fotocamera, microfono), configurazione delle uscite e avvio della sessione.

Configurazione di AVCaptureSession

Esaminiamo la configurazione passo passo di AVCaptureSession per acquisire video dalla fotocamera posteriore dell'iPhone registrando contemporaneamente l'audio dal microfono. Il processo si compone di quattro passaggi in Swift.

swift
import AVFoundation

// 1. Creare e configurare la sessione
let session = AVCaptureSession()
session.sessionPreset = .hd1920x1080

// 2. Aggiungere ingresso fotocamera
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. Aggiungere uscita per registrazione
let output = AVCaptureMovieFileOutput()
guard session.canAddOutput(output) else { return }
session.addOutput(output)

// 4. Avviare la sessione
session.startRunning()

Il codice Swift crea una AVCaptureSession con un preset Full HD, collega la fotocamera posteriore come sorgente video e aggiunge un'uscita per la registrazione su file. Dopo session.startRunning(), la fotocamera inizia a trasmettere fotogrammi all'anteprima e al file di uscita. La registrazione viene interrotta tramite output.stopRecording() con l'opzione di salvare nella galleria.

Per l'acquisizione solo audio (senza video), solo il microfono viene aggiunto a AVCaptureSession tramite AVCaptureDevice.default(.audio). L'uscita è AVAudioFileOutput o AVCaptureAudioDataOutput per l'elaborazione del suono in tempo reale. AVFoundation supporta l'acquisizione multicanale: fino a 8 canali audio su iPad Pro e fino a 2 su iPhone, consentendo la registrazione stereo da microfoni esterni tramite Lightning, USB-C o Bluetooth. La selezione della sorgente di ingresso avviene tramite AVAudioSession.sharedInstance().setPreferredInput, fondamentale per le applicazioni che lavorano con cuffie esterne e microfoni Bluetooth.

Riproduzione multimediale

AVFoundation offre due modi principali per riprodurre media: AVPlayer per video e AVAudioPlayer per audio. Vediamo un esempio di riproduzione di un flusso HLS remoto utilizzando AVPlayer.

Esempio di AVPlayer con HLS

Il codice crea un AVPlayer, carica un flusso HLS da un URL e avvia la riproduzione a un volume ridotto. AVPlayerItem gestisce lo stato di caricamento e buffering, e l'osservazione KVO dello stato consente di gestire gli errori.

swift
import AVFoundation
import AVKit

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

// 2. Riproduzione
player.play()

// 3. Mostrare il lettore
let playerVC = AVPlayerViewController()
playerVC.player = player
present(playerVC, animated: true)

// 4. Monitorare lo stato
player.currentItem?.addObserver(
    self,
    forKeyPath: "status",
    options: .new,
    context: nil
)

Il codice crea un AVPlayer con un URL HLS, imposta il volume al 70% e avvia la riproduzione. AVPlayerViewController fornisce un'interfaccia integrata con controlli, AirPlay e modalità picture-in-picture. Lo stato del lettore viene monitorato tramite KVO per gestire i casi in cui il flusso HLS è temporaneamente non disponibile.

Per la riproduzione audio senza interfaccia video si utilizza AVAudioPlayer — un lettore leggero che non richiede AVPlayerItem. AVAudioPlayer supporta i formati audio MP3, AAC, ALAC, FLAC, WAV e AIFF, fornisce i metodi play(), pause() e stop(), oltre al delegato AVAudioPlayerDelegate per monitorare il completamento della riproduzione e gli errori di decodifica. AVAudioPlayer è ideale per la riproduzione musicale in background, podcast ed effetti sonori nei giochi su iOS e macOS.

Esempi di codice aggiuntivi

Vediamo altri due scenari tipici di lavoro con AVFoundation: elaborazione audio tramite AVAudioEngine ed esportazione video in un altro formato.

Elaborazione audio tramite AVAudioEngine

AVAudioEngine consente di elaborare l'audio in tempo reale collegando nodi in un grafo di elaborazione: nodo di ingresso (microfono) → effetti → nodo di uscita (altoparlante). Nell'esempio seguente viene aggiunto riverbero alla voce.

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

// Configurare riverbero
reverb.loadFactoryPreset(.largeHall)
reverb.wetDryMix = 40

// Connessione: microfono -> riverbero -> altoparlante
engine.attach(reverb)
engine.connect(
    engine.inputNode,
    to: reverb,
    format: nil
)
engine.connect(
    reverb,
    to: engine.mainMixerNode,
    format: nil
)

try? engine.start()

AVAudioEngine crea un grafo di tre nodi: ingresso (microfono), effetto (riverbero con preset di grande sala) e uscita (altoparlante). Dopo engine.start(), l'audio dal microfono viene elaborato dall'effetto in tempo reale e inviato alle cuffie o all'altoparlante del dispositivo. La latenza di elaborazione è inferiore a 10 ms su tutti i dispositivi Apple moderni.

Una capacità aggiuntiva di AVAudioEngine è l'analisi del suono tramite AVAudioUnitEQ e AVAudioUnitMixer. Lo sviluppatore può aggiungere un equalizzatore, compressore e limitatore a qualsiasi flusso audio. Per applicazioni musicali, AVFoundation fornisce AVAudioSequencer per la riproduzione di file MIDI e AVSpeechSynthesizer per la sintesi vocale. Tutti i componenti lavorano in un unico grafo audio, fornendo una latenza tra acquisizione ed elaborazione inferiore a 5 ms sui dispositivi Apple.

Quando si lavora con AVFoundation, è importante considerare le autorizzazioni di sistema: per accedere alla fotocamera è necessario NSCameraUsageDescription in Info.plist, e per il microfono NSMicrophoneUsageDescription. AVFoundation mostra automaticamente la finestra di richiesta autorizzazione al primo tentativo di accesso a un dispositivo. Il rifiuto dell'utente viene gestito tramite AVCaptureDevice.authorizationStatus(), consentendo di mostrare un messaggio appropriato sull'indisponibilità della fotocamera con suggerimento di andare nelle Impostazioni.

AVFoundation supporta la riproduzione audio in background tramite la modalità Audio Background Mode nelle Capabilities del progetto. Per attivarla, basta aggiungere la voce audio in UIBackgroundModes Info.plist e configurare AVAudioSession con la categoria .playback. Il video non viene riprodotto in background per impostazione predefinita, ma è possibile utilizzare AVPlayer con la modalità picture-in-picture per continuare la riproduzione video in un'app minimizzata su iPad. L'icona della modalità PiP viene configurata tramite AVPictureInPictureController insieme al delegato del protocollo.

Domande frequenti

Da quali versioni di iOS AVFoundation è supportato?

iOS 4+ per riproduzione e acquisizione di base. iOS 8+ per AVAudioEngine. iOS 17+ per AVAssetWriter in modalità HDR. La versione corrente del framework è supportata su tutti i dispositivi iPhone, iPad e Mac.

Si può usare AVFoundation per lo streaming?

, AVPlayer supporta HLS (HTTP Live Streaming) — il protocollo di streaming principale di Apple. Per inviare media al server, utilizzare AVAssetWriter con un protocollo personalizzato su URLSession.

Qual è la differenza tra AVFoundation e AVKit?

AVFoundation è un framework di basso livello per lavorare con i media. AVKit è un livello sopra AVFoundation che fornisce componenti dell'interfaccia utente pronti all'uso: AVPlayerViewController, AVPictureInPictureController e AVPipView.

AVFoundation supporta i formati audio FLAC e ALAC?

, da iOS 11 AVFoundation supporta FLAC (Free Lossless Audio Codec) per la riproduzione. ALAC (Apple Lossless) è supportato da iOS 4. Entrambi i codec funzionano tramite AVAudioPlayer e AVPlayer.

Come registrare video dello schermo con AVFoundation?

Tramite RPScreenRecorder di ReplayKit, che utilizza AVFoundation internamente. Da iOS 9, la registrazione dello schermo è disponibile tramite RPScreenRecorder.shared().startRecording() con microfono opzionale.

Riepilogo

  • AVFoundation — il framework multimediale fondamentale di Apple per acquisire, riprodurre ed elaborare audio/video
  • AVCaptureSession gestisce fotocamera e microfono con risoluzione fino a 8K e 240 FPS
  • AVPlayer riproduce flussi locali e HLS con AirPlay e PiP
  • AVAudioEngine elabora l'audio in tempo reale tramite un grafo di nodi con effetti
  • AVAssetExportSession converte file multimediali tra formati con supporto HDR
  • AVKit fornisce un'interfaccia pronta per il lettore e la gestione della modalità picture-in-picture
  • Il framework è utilizzato nel 90% delle applicazioni iOS che lavorano con contenuti multimediali

Svilupperemo un'applicazione mobile chiavi in mano

IT Sectr crea applicazioni iOS e Android per startup e aziende dal 2017. Ti consulteremo e ti proporremo la soluzione migliore.

Discuti il progetto

Leggi anche