AVFoundation — wat is het, API voor audio en video in iOS

Auteur: IT Sectr Gepubliceerd: 2026-03-26 Leestijd: 8 min

AVFoundation — is een multimediaframework van Apple dat de volledige cyclus van werken met audio, video en afbeeldingen op iOS, macOS, tvOS en watchOS verzorgt. Het omvat vastleggen van camera en microfoon, afspelen van mediabestanden, bewerken van audiotracks, real-time audioverwerking en streamen via het netwerk. Volgens Apple AVFoundation Documentation (2026) wordt het framework gebruikt in 90% van de App Store-applicaties die met mediacontent werken.

Belangrijkste punten

  • AVFoundation — multimediaframework van Apple voor vastleggen, afspelen en verwerken van audio en video
  • AVCaptureSession beheert vastleggen van camera en microfoon met kwaliteits- en formaatinstellingen
  • AVPlayer verzorgt het afspelen van mediabestanden met ondersteuning voor HLS, MP4 en AirPlay
  • AVAudioEngine maakt real-time audioverwerking met effecten en mixen mogelijk
  • AVAssetExportSession voert export en conversie van mediabestanden naar verschillende formaten uit

Wat is AVFoundation?

AVFoundation — is een fundamenteel multimediaframework van Apple, geïntroduceerd in iOS 4 (2010) als vervanging van de verouderde UIWebView voor het afspelen van audio en video. Sindsdien is AVFoundation geëvolueerd tot een complete set tools voor het werken met alle soorten media: van het eenvoudig afspelen van een MP3-bestand tot professionele videocapture met een meerkanaals microfoon en geluidstransformatie via real-time effecten.

De architectuur van AVFoundation is gebouwd rond een aantal basisabstracties: AVAsset (mediagegevens), AVPlayer (afspelen), AVCaptureSession (vastleggen) en AVAudioEngine (verwerking). Elke component werkt asynchroon, wat cruciaal is voor het behoud van de vloeiendheid van de UI tijdens het laden of verwerken van grote bestanden. Volgens Apple (WWDC 2025) verwerkt AVFoundation video tot 8K op apparaten met de M-serie chips zonder prestatieverlies.

Belangrijkste mogelijkheden

AVFoundation biedt videocapture van de camera met ondersteuning voor 4K ProRes, HDR en tot 240 FPS in slow motion, opnemen en mixen van audio van ingebouwde en externe microfoons, media afspelen met ondersteuning voor HLS, MPEG-4, QuickTime, MP3, AAC en FLAC, exporteren en converteren van bestanden via AVAssetExportSession, real-time audioverwerking via AVAudioEngine met effecten zoals reverberatie, equalizer en pitch-shifting, en streamen via AirPlay en netwerkprotocollen.

Belangrijkste componenten van AVFoundation

AVFoundation bestaat uit verschillende modules, die elk verantwoordelijk zijn voor een specifiek gebied van mediawerk. De keuze van component hangt af van de taak: vastleggen, afspelen, exporteren of real-time verwerking.

ComponentDoelKernklasse
VastleggenWerken met camera en microfoonAVCaptureSession
AfspelenAudio- en videospelerAVPlayer / AVAudioPlayer
BewerkenCompositie en montageAVMutableComposition
ExporterenConverteren naar andere formatenAVAssetExportSession
AudiomotorReal-time geluidsverwerkingAVAudioEngine
MetadataLezen van ID3, EXIF en XMPAVMetadataItem

AVCaptureSession — vastleggen van camera

AVCaptureSession — het centrale object voor het vastleggen van video en audio. Het beheert binnenkomende gegevensstromen van fysieke apparaten (camera, microfoon), configureert hun instellingen (resolutie, FPS, formaat) en stuurt ze naar uitvoer: voorbeeld (AVCaptureVideoPreviewLayer), opname in bestand (AVCaptureMovieFileOutput) of frame-voor-frame verwerking (AVCaptureVideoDataOutput).

AVPlayer — media afspelen

AVPlayer — een universele AVFoundation-speler die mediacontent zowel lokaal als via het netwerk kan afspelen. AVPlayer ondersteunt HLS-streaming, MPEG-4, QuickTime Movie en de meeste audioformaten. De afspeelbediening gebeurt asynchroon via AVPlayerItem. AVPlayerViewController biedt een kant-en-klare UI met bedieningselementen: play/pause, scrubbing, AirPlay en PiP.

Media vastleggen met AVFoundation

Video en audio vastleggen — een van de meest gevraagde mogelijkheden van AVFoundation. Het configureren van een capturesessie omvat verschillende stappen: het maken van AVCaptureSession, het toevoegen van invoer (camera, microfoon), het instellen van uitvoer en het starten van de sessie.

AVCaptureSession configureren

Laten we stap voor stap de configuratie van AVCaptureSession bekijken voor het vastleggen van video met de achtercamera van de iPhone en het gelijktijdig opnemen van geluid van de microfoon. Het proces bestaat uit vier stappen in Swift.

swift
import AVFoundation

// 1. Aanmaken en configureren van sessie
let session = AVCaptureSession()
session.sessionPreset = .hd1920x1080

// 2. Toevoegen van camera-ingang
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. Toevoegen van uitgang voor opname
let output = AVCaptureMovieFileOutput()
guard session.canAddOutput(output) else { return }
session.addOutput(output)

// 4. Starten van sessie
session.startRunning()

Swift-code maakt een AVCaptureSession met Full HD-preset, sluit de achtercamera aan als videobron en voegt een uitvoer toe voor opname in een bestand. Na het starten van session.startRunning() begint de camera frames naar het voorbeeld en het uitvoerbestand te sturen. Het stoppen van de opname gebeurt via output.stopRecording() met de mogelijkheid om op te slaan in de galerij.

Voor het vastleggen van alleen audio (zonder video) wordt in AVCaptureSession alleen de microfoon toegevoegd via AVCaptureDevice.default(.audio). De uitvoer is AVAudioFileOutput of AVCaptureAudioDataOutput voor real-time geluidsverwerking. AVFoundation ondersteunt meerkanaals vastleggen: tot 8 audiokanalen op iPad Pro en tot 2 op iPhone, wat stereogeluid opname van externe microfoons via Lightning, USB-C of Bluetooth mogelijk maakt. De selectie van de ingangsbron gebeurt via AVAudioSession.sharedInstance().setPreferredInput, wat cruciaal is voor applicaties die met externe headsets en Bluetooth-microfoons werken.

Media afspelen

AVFoundation biedt twee manieren om media af te spelen: AVPlayer voor video en AVAudioPlayer voor audio. Laten we een voorbeeld bekijken van het afspelen van een externe HLS-stream via AVPlayer.

Voorbeeld AVPlayer met HLS

De code maakt een AVPlayer, laadt de HLS-stream van een URL en start het afspelen met een verlaagd volumeniveau. AVPlayerItem beheert de laad- en bufferstatus, en KVO-waarneming van de status maakt foutafhandeling mogelijk.

swift
import AVFoundation
import AVKit

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

// 2. Afspelen
player.play()

// 3. Speler weergeven
let playerVC = AVPlayerViewController()
playerVC.player = player
present(playerVC, animated: true)

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

De code maakt een AVPlayer met HLS-URL, stelt het volume in op 70% en start het afspelen. AVPlayerViewController biedt een ingebouwde UI met bedieningselementen, AirPlay en beeld-in-beeld modus. De status van de speler wordt gevolgd via KVO voor het afhandelen van gevallen waarin de HLS-stream tijdelijk niet beschikbaar is.

Voor het afspelen van audio zonder video-interface wordt AVAudioPlayer gebruikt — een lichte speler die geen AVPlayerItem nodig heeft. AVAudioPlayer ondersteunt audioformaten MP3, AAC, ALAC, FLAC, WAV en AIFF, biedt methoden play(), pause() en stop(), en de AVAudioPlayerDelegate voor het volgen van het einde van het afspelen en decoderingsfouten. AVAudioPlayer is ideaal voor achtergrondmuziek, podcasts en geluidseffecten in games op iOS en macOS.

Aanvullende codevoorbeelden

Laten we nog twee kenmerkende scenario's van werken met AVFoundation bekijken: audioverwerking via AVAudioEngine en video-export naar een ander formaat.

Audioverwerking via AVAudioEngine

AVAudioEngine maakt real-time audioverwerking mogelijk door knooppunten (nodes) te verbinden in een verwerkingsgraaf: invoerknooppunt (microfoon) → effecten → uitvoerknooppunt (luidspreker). In het onderstaande voorbeeld wordt reverberatie aan de stem toegevoegd.

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

// Reverberatie instellen
reverb.loadFactoryPreset(.largeHall)
reverb.wetDryMix = 40

// Aansluiting: microfoon -> reverberatie -> luidspreker
engine.attach(reverb)
engine.connect(
    engine.inputNode,
    to: reverb,
    format: nil
)
engine.connect(
    reverb,
    to: engine.mainMixerNode,
    format: nil
)

try? engine.start()

AVAudioEngine maakt een graaf van drie knooppunten: invoer (microfoon), effect (reverberatie met grote zaal preset) en uitvoer (luidspreker). Na engine.start() wordt het geluid van de microfoon in real-time door het effect verwerkt en naar de hoofdtelefoon of luidspreker van het apparaat gestuurd. De verwerkingsvertraging is minder dan 10 ms op alle moderne Apple-apparaten.

Een extra mogelijkheid van AVAudioEngine — geluidsanalyse via AVAudioUnitEQ en AVAudioUnitMixer. De ontwikkelaar kan een equalizer, compressor en limiter toevoegen aan elke audiostream. Voor muziektoepassingen biedt AVFoundation AVAudioSequencer voor het afspelen van MIDI-bestanden en AVSpeechSynthesizer voor spraaksynthese. Alle componenten werken in één audiograaf, wat een vertraging tussen vastleggen en verwerking van minder dan 5 ms oplevert op Apple-apparaten.

Bij het werken met AVFoundation is het belangrijk rekening te houden met systeemrechten: voor toegang tot de camera is NSCameraUsageDescription vereist in Info.plist, voor de microfoon — NSMicrophoneUsageDescription. AVFoundation toont automatisch de systeemdialoog voor toestemmingsaanvraag bij de eerste poging tot toegang tot het apparaat. Weigering door de gebruiker wordt afgehandeld via AVCaptureDevice.authorizationStatus(), wat het mogelijk maakt een correct bericht over de niet-beschikbaarheid van de camera weer te geven met een voorstel om naar instellingen te gaan.

AVFoundation ondersteunt achtergrondaudio afspelen via Audio Background Mode in de Capabilities van het project. Voor activering volstaat het om een audio-record toe te voegen in UIBackgroundModes Info.plist en AVAudioSession te configureren met de categorie .playback. Video wordt standaard niet op de achtergrond afgespeeld, maar u kunt AVPlayer gebruiken met de pictureInPicture-modus om video te blijven tonen in de geminimaliseerde app op iPad. Het pictogram van de PiP-modus wordt geconfigureerd via AVPictureInPictureController samen met de protocoldelegate.

Veelgestelde vragen

Vanaf welke iOS-versies wordt AVFoundation ondersteund?

iOS 4+ voor basis afspelen en vastleggen. iOS 8+ voor AVAudioEngine. iOS 17+ voor AVAssetWriter in HDR-modus. De huidige versie van het framework wordt ondersteund op alle iPhone-, iPad- en Mac-apparaten.

Kan AVFoundation worden gebruikt voor streaming?

Ja, AVPlayer ondersteunt HLS (HTTP Live Streaming) — het belangrijkste Apple-protocol voor streaming. Voor het verzenden van media naar de server gebruikt u AVAssetWriter met een aangepast protocol bovenop URLSession.

Wat is het verschil tussen AVFoundation en AVKit?

AVFoundation — is een low-level framework voor het werken met media. AVKit — een laag bovenop AVFoundation die kant-en-klare UI-componenten biedt: AVPlayerViewController, AVPictureInPictureController en AVPipView.

Ondersteunt AVFoundation de audioformaten FLAC en ALAC?

Ja, vanaf iOS 11 ondersteunt AVFoundation FLAC (Free Lossless Audio Codec) voor afspelen. ALAC (Apple Lossless) wordt ondersteund vanaf iOS 4. Beide codecs werken via AVAudioPlayer en AVPlayer.

Hoe neem ik schermvideo op via AVFoundation?

Via RPScreenRecorder van ReplayKit, dat intern AVFoundation gebruikt. Vanaf iOS 9 is schermopname beschikbaar via RPScreenRecorder.shared().startRecording() met optionele microfoon.

Samenvatting

  • AVFoundation — fundamenteel multimediaframework van Apple voor vastleggen, afspelen en verwerken van audio/video
  • AVCaptureSession beheert camera en microfoon met resolutie-instellingen tot 8K en 240 FPS
  • AVPlayer verzorgt afspelen van lokale en HLS-streams met AirPlay en PiP
  • AVAudioEngine verwerkt audio in real-time via een knooppuntengraaf met effecten
  • AVAssetExportSession converteert mediabestanden tussen formaten met HDR-ondersteuning
  • AVKit biedt een kant-en-klare UI voor de speler en beheer van de beeld-in-beeld modus
  • Framework wordt gebruikt in 90% van iOS-applicaties die met mediacontent werken

We ontwikkelen een mobiele applicatie turnkey

IT Sectr creëert sinds 2017 iOS- en Android-applicaties voor startups en bedrijven. We adviseren u en stellen de beste oplossing voor.

Bespreek het project

Lees ook