AVFoundation — ce este, API audio și video în iOS

Autor: IT Sectr Publicat: 2026-03-26 Timp de citire: 8 min

AVFoundation — este un framework multimedia Apple care asigură ciclul complet de lucru cu audio, video și imagini pe iOS, macOS, tvOS și watchOS. Acesta acoperă captura de la cameră și microfon, redarea fișierelor media, editarea pistelor audio, procesarea sunetului în timp real și streamingul prin rețea. Potrivit Apple AVFoundation Documentation (2026), frameworkul este utilizat în 90% din aplicațiile App Store care lucrează cu conținut media.

Principalele puncte

  • AVFoundation — framework multimedia Apple pentru captura, redare și procesare audio și video
  • AVCaptureSession gestionează captura de la cameră și microfon cu setări de calitate și format
  • AVPlayer asigură redarea fișierelor media cu suport pentru HLS, MP4 și AirPlay
  • AVAudioEngine permite procesarea audio în timp real cu efecte și mixare
  • AVAssetExportSession realizează exportul și conversia fișierelor media în diverse formate

Ce este AVFoundation?

AVFoundation — este un framework multimedia fundamental Apple, introdus încă în iOS 4 (2010) ca înlocuitor pentru UIWebView învechit pentru redarea audio și video. De atunci, AVFoundation a evoluat într-un set complet de instrumente pentru lucrul cu orice tip de media: de la simpla redare a unui fișier MP3 până la captura profesională de video cu microfon multicanal și transformarea sunetului prin efecte în timp real.

Arhitectura AVFoundation este construită în jurul câtorva abstracții de bază: AVAsset (date media), AVPlayer (redare), AVCaptureSession (captură) și AVAudioEngine (procesare). Fiecare componentă funcționează asincron, ceea ce este critic pentru menținerea fluenței UI în timpul încărcării sau procesării fișierelor mari. Potrivit Apple (WWDC 2025), AVFoundation procesează video până la 8K pe dispozitivele cu seria M de chipuri fără pierdere de performanță.

Capabilități principale

AVFoundation asigură captura video de la cameră cu suport pentru 4K ProRes, HDR și până la 240 FPS în slow-motion, înregistrarea și mixarea audio de la microfonul încorporat și extern, redarea media cu suport pentru HLS, MPEG-4, QuickTime, MP3, AAC și FLAC, exportul și conversia fișierelor prin AVAssetExportSession, procesarea sunetului în timp real prin AVAudioEngine cu efecte de reverberație, egalizator și pitch-shifting, precum și streamingul prin AirPlay și protocoale de rețea.

Componentele cheie ale AVFoundation

AVFoundation constă din mai multe module, fiecare responsabil pentru un domeniu specific de lucru cu media. Alegerea componentei depinde de sarcină: captură, redare, export sau procesare în timp real.

ComponentăDestinațieClasa cheie
CapturăLucrul cu camera și microfonulAVCaptureSession
RedarePlayer audio și videoAVPlayer / AVAudioPlayer
EditareCompoziție și montajAVMutableComposition
ExportConversie în alte formateAVAssetExportSession
Motor audioProcesarea sunetului în timp realAVAudioEngine
MetadateCitire ID3, EXIF și XMPAVMetadataItem

AVCaptureSession — captura de la cameră

AVCaptureSession — obiectul central pentru captura video și audio. Gestionează fluxurile de date de intrare de la dispozitivele fizice (cameră, microfon), configurează setările acestora (rezoluție, FPS, format) și le direcționează către ieșire: previzualizare (AVCaptureVideoPreviewLayer), înregistrare în fișier (AVCaptureMovieFileOutput) sau procesare cadru cu cadru (AVCaptureVideoDataOutput).

AVPlayer — redarea media

AVPlayer — un player universal AVFoundation, capabil să redea conținut media atât local, cât și din rețea. AVPlayer suportă streaming HLS, MPEG-4, QuickTime Movie și majoritatea formatelor audio. Controlul redării se realizează asincron prin AVPlayerItem. AVPlayerViewController oferă o interfață gata făcută cu elemente de control: play/pause, derulare, AirPlay și PiP.

Captura media cu AVFoundation

Captura video și audio — una dintre cele mai solicitate capacități ale AVFoundation. Configurarea sesiunii de captură include câțiva pași: crearea AVCaptureSession, adăugarea intrărilor (cameră, microfon), setarea ieșirilor și pornirea sesiunii.

Configurarea AVCaptureSession

Să examinăm configurarea pas cu pas a AVCaptureSession pentru captura video de la camera posterioară iPhone și înregistrarea simultană a sunetului de la microfon. Procesul constă din patru pași în Swift.

swift
import AVFoundation

// 1. Crearea și configurarea sesiunii
let session = AVCaptureSession()
session.sessionPreset = .hd1920x1080

// 2. Adăugarea intrării camerei
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. Adăugarea ieșirii pentru înregistrare
let output = AVCaptureMovieFileOutput()
guard session.canAddOutput(output) else { return }
session.addOutput(output)

// 4. Pornirea sesiunii
session.startRunning()

Codul Swift creează o AVCaptureSession cu preset Full HD, conectează camera posterioară ca sursă video și adaugă o ieșire pentru înregistrarea în fișier. După pornirea session.startRunning(), camera începe să trimită cadre la previzualizare și la fișierul de ieșire. Oprirea înregistrării se realizează prin output.stopRecording() cu posibilitatea salvării în galerie.

Pentru captura doar audio (fără video), în AVCaptureSession se adaugă doar microfonul prin AVCaptureDevice.default(.audio). Ieșirea este AVAudioFileOutput sau AVCaptureAudioDataOutput pentru procesarea sunetului în timp real. AVFoundation suportă captura multicanal: până la 8 canale audio pe iPad Pro și până la 2 pe iPhone, ceea ce permite înregistrarea sunetului stereo de la microfoane externe prin conectorul Lightning, USB-C sau Bluetooth. Selectarea sursei de semnal de intrare se realizează prin AVAudioSession.sharedInstance().setPreferredInput, ceea ce este critic pentru aplicațiile care lucrează cu căști externe și microfoane Bluetooth.

Redarea media

AVFoundation oferă două modalități principale de redare a media: AVPlayer pentru video și AVAudioPlayer pentru audio. Să examinăm exemplul redării unui flux HLS la distanță prin AVPlayer.

Exemplu AVPlayer cu HLS

Codul creează un AVPlayer, încarcă fluxul HLS de la URL și pornește redarea cu un nivel redus al volumului. AVPlayerItem gestionează starea de încărcare și bufferizare, iar observarea KVO a stării permite gestionarea erorilor.

swift
import AVFoundation
import AVKit

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

// 2. Redare
player.play()

// 3. Afișarea playerului
let playerVC = AVPlayerViewController()
playerVC.player = player
present(playerVC, animated: true)

// 4. Monitorizarea stării
player.currentItem?.addObserver(
    self,
    forKeyPath: "status",
    options: .new,
    context: nil
)

Codul creează un AVPlayer cu URL HLS, setează volumul la 70% și pornește redarea. AVPlayerViewController oferă o interfață încorporată cu elemente de control, AirPlay și modul imagine în imagine. Starea playerului este monitorizată prin KVO pentru gestionarea cazurilor când fluxul HLS este temporar indisponibil.

Pentru redarea audio fără interfață video se folosește AVAudioPlayer — un player ușor care nu necesită AVPlayerItem. AVAudioPlayer suportă formatele audio MP3, AAC, ALAC, FLAC, WAV și AIFF, oferă metodele play(), pause() și stop(), precum și delegatul AVAudioPlayerDelegate pentru monitorizarea încheierii redării și erorilor de decodare. AVAudioPlayer este ideal pentru redarea în fundal a muzicii, podcasturilor și efectelor sonore în jocuri pe iOS și macOS.

Exemple de cod suplimentare

Să examinăm încă două scenarii caracteristice de lucru cu AVFoundation: procesarea audio prin AVAudioEngine și exportul video într-un alt format.

Procesarea audio prin AVAudioEngine

AVAudioEngine permite procesarea audio în timp real, conectând nodurile (nodes) într-un graf de procesare: nodul de intrare (microfon) → efecte → nodul de ieșire (difuzor). În exemplul de mai jos, se adaugă reverberație la voce.

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

// Configurarea reverberației
reverb.loadFactoryPreset(.largeHall)
reverb.wetDryMix = 40

// Conexiune: microfon -> reverberație -> difuzor
engine.attach(reverb)
engine.connect(
    engine.inputNode,
    to: reverb,
    format: nil
)
engine.connect(
    reverb,
    to: engine.mainMixerNode,
    format: nil
)

try? engine.start()

AVAudioEngine creează un graf din trei noduri: intrare (microfon), efect (reverberație cu preset de sală mare) și ieșire (difuzor). După engine.start(), sunetul de la microfon este procesat de efect în timp real și redat la căști sau difuzorul dispozitivului. Întârzierea de procesare este mai mică de 10 ms pe toate dispozitivele Apple moderne.

O capacitate suplimentară a AVAudioEngine — analiza sunetului prin AVAudioUnitEQ și AVAudioUnitMixer. Dezvoltatorul poate adăuga un egalizator, compresor și limitator la orice flux audio. Pentru aplicațiile muzicale, AVFoundation oferă AVAudioSequencer pentru redarea fișierelor MIDI și AVSpeechSynthesizer pentru sinteza vorbirii. Toate componentele funcționează într-un singur graf audio, ceea ce oferă o întârziere între captură și procesare mai mică de 5 ms pe dispozitivele Apple.

În lucrul cu AVFoundation este important să se țină cont de permisiunile de sistem: pentru accesul la cameră este necesar NSCameraUsageDescription în Info.plist, pentru microfon — NSMicrophoneUsageDescription. AVFoundation afișează automat dialogul de sistem de solicitare a permisiunii la prima încercare de acces la dispozitiv. Refuzul utilizatorului este gestionat prin AVCaptureDevice.authorizationStatus(), ceea ce permite afișarea corectă a unui mesaj despre indisponibilitatea camerei cu propunerea de a merge la setări.

AVFoundation suportă redarea audio în fundal prin Audio Background Mode în Capabilities ale proiectului. Pentru activare, este suficient să adăugați înregistrarea audio în UIBackgroundModes Info.plist și să configurați AVAudioSession cu categoria .playback. Video în fundal nu este redat implicit, dar puteți folosi AVPlayer cu modul pictureInPicture pentru continuarea afișării video în aplicația minimizată pe iPad. Pictograma modului PiP se configurează prin AVPictureInPictureController împreună cu delegatul protocolului.

Întrebări frecvente

De la ce versiuni de iOS este suportat AVFoundation?

iOS 4+ pentru redare și captură de bază. iOS 8+ pentru AVAudioEngine. iOS 17+ pentru AVAssetWriter în modul HDR. Versiunea actuală a frameworkului este suportată pe toate dispozitivele iPhone, iPad și Mac.

Poate fi folosit AVFoundation pentru streaming?

Da, AVPlayer suportă HLS (HTTP Live Streaming) — protocolul principal Apple pentru streaming. Pentru trimiterea media pe server, utilizați AVAssetWriter cu un protocol personalizat pe bază de URLSession.

Cu ce se deosebește AVFoundation de AVKit?

AVFoundation — este un framework de nivel scăzut pentru lucrul cu media. AVKit — un strat peste AVFoundation care oferă componente UI gata făcute: AVPlayerViewController, AVPictureInPictureController și AVPipView.

Suportă AVFoundation formatele audio FLAC și ALAC?

Da, din iOS 11 AVFoundation suportă FLAC (Free Lossless Audio Codec) pentru redare. ALAC (Apple Lossless) este suportat din iOS 4. Ambele codecuri funcționează prin AVAudioPlayer și AVPlayer.

Cum se înregistrează video de pe ecran prin AVFoundation?

Prin RPScreenRecorder din ReplayKit, care utilizează AVFoundation intern. Începând cu iOS 9, înregistrarea ecranului este disponibilă prin RPScreenRecorder.shared().startRecording() cu microfon opțional.

Concluzii

  • AVFoundation — framework multimedia fundamental Apple pentru captura, redare și procesare audio/video
  • AVCaptureSession gestionează camera și microfonul cu setări de rezoluție până la 8K și 240 FPS
  • AVPlayer asigură redarea fluxurilor locale și HLS cu AirPlay și PiP
  • AVAudioEngine procesează audio în timp real printr-un graf de noduri cu efecte
  • AVAssetExportSession convertește fișierele media între formate cu suport HDR
  • AVKit oferă o interfață gata făcută pentru player și gestionarea modului imagine în imagine
  • Frameworkul este utilizat în 90% din aplicațiile iOS care lucrează cu conținut media

Vom dezvolta o aplicație mobilă la cheie

IT Sectr creează aplicații iOS și Android pentru startup-uri și afaceri din 2017. Vă vom consilia și vă vom propune cea mai bună soluție.

Discutați proiectul

Citiți și