AVFoundation — co to je, API audia a videa v iOS

Autor: IT Sectr Publikováno: 2026-03-26 Doba čtení: 8 min

AVFoundation — je multimediální framework Apple, který zajišťuje celý cyklus práce s audiem, videem a obrázky na iOS, macOS, tvOS a watchOS. Zahrnuje snímání z kamery a mikrofonu, přehrávání mediálních souborů, úpravu zvukových stop, zpracování zvuku v reálném čase a streamování po síti. Podle Apple AVFoundation Documentation (2026) se framework používá v 90% aplikací App Store, které pracují s mediálním obsahem.

Hlavní body

  • AVFoundation — multimediální framework Apple pro snímání, přehrávání a zpracování audia a videa
  • AVCaptureSession spravuje snímání z kamery a mikrofonu s nastavením kvality a formátu
  • AVPlayer zajišťuje přehrávání mediálních souborů s podporou HLS, MP4 a AirPlay
  • AVAudioEngine umožňuje zpracování audia v reálném čase s efekty a mixováním
  • AVAssetExportSession provádí export a konverzi mediálních souborů do různých formátů

Co je AVFoundation?

AVFoundation — je základní multimediální framework Apple, představený již v iOS 4 (2010) jako náhrada za zastaralý UIWebView pro přehrávání audia a videa. Od té doby se AVFoundation vyvinul v plnohodnotnou sadu nástrojů pro práci s jakýmikoli typy médií: od jednoduchého přehrávání MP3 souboru po profesionální snímání videa s vícekanálovým mikrofonem a transformaci zvuku pomocí efektů v reálném čase.

Architektura AVFoundation je postavena na několika základních abstrakcích: AVAsset (mediální data), AVPlayer (přehrávání), AVCaptureSession (snímání) a AVAudioEngine (zpracování). Každá komponenta pracuje asynchronně, což je kritické pro zachování plynulosti UI během načítání nebo zpracování velkých souborů. Podle Apple (WWDC 2025) zpracovává AVFoundation video až do 8K na zařízeních s čipy řady M bez ztráty výkonu.

Hlavní možnosti

AVFoundation poskytuje snímání videa z kamery s podporou 4K ProRes, HDR a až 240 FPS ve zpomaleném záběru, nahrávání a mixování zvuku z vestavěného a externího mikrofonu, přehrávání médií s podporou HLS, MPEG-4, QuickTime, MP3, AAC a FLAC, export a konverzi souborů prostřednictvím AVAssetExportSession, zpracování zvuku v reálném čase přes AVAudioEngine s efekty dozvuku, ekvalizéru a pitch-shiftingu, stejně jako streamování přes AirPlay a síťové protokoly.

Klíčové komponenty AVFoundation

AVFoundation se skládá z několika modulů, z nichž každý je zodpovědný za konkrétní oblast práce s médii. Výběr komponenty závisí na úkolu: snímání, přehrávání, export nebo zpracování v reálném čase.

KomponentaÚčelKlíčová třída
SnímáníPráce s kamerou a mikrofonemAVCaptureSession
PřehráváníAudio a video přehrávačAVPlayer / AVAudioPlayer
ÚpravyKompozice a střihAVMutableComposition
ExportKonverze do jiných formátůAVAssetExportSession
Zvukový engineZpracování zvuku v reálném časeAVAudioEngine
MetadataČtení ID3, EXIF a XMPAVMetadataItem

AVCaptureSession — snímání z kamery

AVCaptureSession — centrální objekt pro snímání videa a audia. Spravuje příchozí datové toky z fyzických zařízení (kamera, mikrofon), konfiguruje jejich nastavení (rozlišení, FPS, formát) a směruje je na výstup: náhled (AVCaptureVideoPreviewLayer), nahrávání do souboru (AVCaptureMovieFileOutput) nebo zpracování snímek po snímku (AVCaptureVideoDataOutput).

AVPlayer — přehrávání médií

AVPlayer — univerzální přehrávač AVFoundation, schopný přehrávat mediální obsah jak lokálně, tak ze sítě. AVPlayer podporuje HLS streamování, MPEG-4, QuickTime Movie a většinu audio formátů. Ovládání přehrávání probíhá asynchronně prostřednictvím AVPlayerItem. AVPlayerViewController poskytuje hotové uživatelské rozhraní s ovládacími prvky: play/pause, přetáčení, AirPlay a PiP.

Snímání médií pomocí AVFoundation

Snímání videa a audia — jedna z nejžádanějších možností AVFoundation. Konfigurace snímací relace zahrnuje několik kroků: vytvoření AVCaptureSession, přidání vstupů (kamera, mikrofon), nastavení výstupů a spuštění relace.

Konfigurace AVCaptureSession

Podívejme se na konfiguraci krok za krokem AVCaptureSession pro snímání videa ze zadní kamery iPhone a současné nahrávání zvuku z mikrofonu. Proces se skládá ze čtyř kroků ve Swiftu.

swift
import AVFoundation

// 1. Vytvoření a konfigurace relace
let session = AVCaptureSession()
session.sessionPreset = .hd1920x1080

// 2. Přidání vstupu kamery
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. Přidání výstupu pro nahrávání
let output = AVCaptureMovieFileOutput()
guard session.canAddOutput(output) else { return }
session.addOutput(output)

// 4. Spuštění relace
session.startRunning()

Swift kód vytváří AVCaptureSession s presetem Full HD, připojuje zadní kameru jako zdroj videa a přidává výstup pro nahrávání do souboru. Po spuštění session.startRunning() začne kamera odesílat snímky do náhledu a výstupního souboru. Zastavení nahrávání se provádí pomocí output.stopRecording() s možností uložení do galerie.

Pro snímání pouze audia (bez videa) se do AVCaptureSession přidá pouze mikrofon přes AVCaptureDevice.default(.audio). Výstupem je AVAudioFileOutput nebo AVCaptureAudioDataOutput pro zpracování zvuku v reálném čase. AVFoundation podporuje vícekanálové snímání: až 8 audio kanálů na iPad Pro a až 2 na iPhone, což umožňuje nahrávat stereo zvuk z externích mikrofonů přes konektor Lightning, USB-C nebo Bluetooth. Výběr zdroje vstupního signálu se provádí přes AVAudioSession.sharedInstance().setPreferredInput, což je kritické pro aplikace pracující s externími sluchátky a Bluetooth mikrofony.

Přehrávání médií

AVFoundation poskytuje dva hlavní způsoby přehrávání médií: AVPlayer pro video a AVAudioPlayer pro audio. Podívejme se na příklad přehrávání vzdáleného HLS streamu pomocí AVPlayer.

Příklad AVPlayer s HLS

Kód vytváří AVPlayer, načítá HLS stream z URL a spouští přehrávání se sníženou úrovní hlasitosti. AVPlayerItem spravuje stav načítání a bufferování a KVO pozorování stavu umožňuje zpracování chyb.

swift
import AVFoundation
import AVKit

// 1. Vytvoření AVPlayer s HLS streamem
let url = URL(
    string: "https://example.com/stream.m3u8"
) !
let player = AVPlayer(url: url)
player.volume = 0.7

// 2. Přehrávání
player.play()

// 3. Zobrazení přehrávače
let playerVC = AVPlayerViewController()
playerVC.player = player
present(playerVC, animated: true)

// 4. Sledování stavu
player.currentItem?.addObserver(
    self,
    forKeyPath: "status",
    options: .new,
    context: nil
)

Kód vytváří AVPlayer s HLS URL, nastavuje hlasitost na 70% a spouští přehrávání. AVPlayerViewController poskytuje vestavěné uživatelské rozhraní s ovládacími prvky, AirPlay a režimem obraz v obraze. Stav přehrávače je sledován přes KVO pro zpracování případů, kdy je HLS stream dočasně nedostupný.

Pro přehrávání audia bez video rozhraní se používá AVAudioPlayer — lehký přehrávač, který nevyžaduje AVPlayerItem. AVAudioPlayer podporuje audio formáty MP3, AAC, ALAC, FLAC, WAV a AIFF, poskytuje metody play(), pause() a stop(), stejně jako delegáta AVAudioPlayerDelegate pro sledování dokončení přehrávání a chyb dekódování. AVAudioPlayer je ideální pro přehrávání hudby na pozadí, podcastů a zvukových efektů ve hrách na iOS a macOS.

Další příklady kódu

Podívejme se ještě na dva charakteristické scénáře práce s AVFoundation: zpracování audia přes AVAudioEngine a export videa do jiného formátu.

Zpracování audia přes AVAudioEngine

AVAudioEngine umožňuje zpracování audia v reálném čase spojováním uzlů (nodes) do grafu zpracování: vstupní uzel (mikrofon) → efekty → výstupní uzel (reproduktor). V následujícím příkladu se přidává dozvuk k hlasu.

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

// Nastavení dozvuku
reverb.loadFactoryPreset(.largeHall)
reverb.wetDryMix = 40

// Připojení: mikrofon -> dozvuk -> reproduktor
engine.attach(reverb)
engine.connect(
    engine.inputNode,
    to: reverb,
    format: nil
)
engine.connect(
    reverb,
    to: engine.mainMixerNode,
    format: nil
)

try? engine.start()

AVAudioEngine vytváří graf ze tří uzlů: vstup (mikrofon), efekt (dozvuk s presetem velkého sálu) a výstup (reproduktor). Po engine.start() je zvuk z mikrofonu zpracováván efektem v reálném čase a vyveden do sluchátek nebo reproduktoru zařízení. Zpoždění zpracování je méně než 10 ms na všech moderních zařízeních Apple.

Další možnost AVAudioEngine — analýza zvuku přes AVAudioUnitEQ a AVAudioUnitMixer. Vývojář může přidat ekvalizér, kompresor a limiter k libovolnému audio streamu. Pro hudební aplikace poskytuje AVFoundation AVAudioSequencer pro přehrávání MIDI souborů a AVSpeechSynthesizer pro syntézu řeči. Všechny komponenty pracují v jediném audio grafu, což poskytuje zpoždění mezi snímáním a zpracováním méně než 5 ms na zařízeních Apple.

Při práci s AVFoundation je důležité zohlednit systémová oprávnění: pro přístup ke kameře je vyžadován NSCameraUsageDescription v Info.plist, pro mikrofon — NSMicrophoneUsageDescription. AVFoundation automaticky zobrazí systémový dialog žádosti o oprávnění při prvním pokusu o přístup k zařízení. Odmítnutí uživatelem je zpracováno přes AVCaptureDevice.authorizationStatus(), což umožňuje správně zobrazit zprávu o nedostupnosti kamery s návrhem přejít do nastavení.

AVFoundation podporuje přehrávání audia na pozadí přes Audio Background Mode v Capabilities projektu. Pro aktivaci stačí přidat záznam audio do UIBackgroundModes Info.plist a nakonfigurovat AVAudioSession s kategorií .playback. Video na pozadí se standardně nepřehrává, ale lze použít AVPlayer s režimem pictureInPicture pro pokračování zobrazení videa v minimalizované aplikaci na iPadu. Ikona režimu PiP se konfiguruje přes AVPictureInPictureController spolu s delegátem protokolu.

Často kladené otázky

Od jakých verzí iOS je AVFoundation podporován?

iOS 4+ pro základní přehrávání a snímání. iOS 8+ pro AVAudioEngine. iOS 17+ pro AVAssetWriter v HDR režimu. Aktuální verze frameworku je podporována na všech zařízeních iPhone, iPad a Mac.

Lze AVFoundation použít pro streamování?

Ano, AVPlayer podporuje HLS (HTTP Live Streaming) — hlavní Apple protokol pro streamování. Pro odesílání médií na server použijte AVAssetWriter s vlastním protokolem nad URLSession.

Čím se AVFoundation liší od AVKitu?

AVFoundation — je nízkoúrovňový framework pro práci s médii. AVKit — vrstva nad AVFoundation poskytující hotové UI komponenty: AVPlayerViewController, AVPictureInPictureController a AVPipView.

Podporuje AVFoundation audio formáty FLAC a ALAC?

Ano, od iOS 11 AVFoundation podporuje FLAC (Free Lossless Audio Codec) pro přehrávání. ALAC (Apple Lossless) je podporován od iOS 4. Oba kodeky fungují přes AVAudioPlayer a AVPlayer.

Jak nahrát video z obrazovky přes AVFoundation?

Přes RPScreenRecorder z ReplayKitu, který interně používá AVFoundation. Od iOS 9 je nahrávání obrazovky k dispozici přes RPScreenRecorder.shared().startRecording() s volitelným mikrofonem.

Shrnutí

  • AVFoundation — základní multimediální framework Apple pro snímání, přehrávání a zpracování audia/videa
  • AVCaptureSession spravuje kameru a mikrofon s nastavením rozlišení až 8K a 240 FPS
  • AVPlayer zajišťuje přehrávání lokálních a HLS streamů s AirPlay a PiP
  • AVAudioEngine zpracovává audio v reálném čase přes graf uzlů s efekty
  • AVAssetExportSession konvertuje mediální soubory mezi formáty s podporou HDR
  • AVKit poskytuje hotové uživatelské rozhraní pro přehrávač a správu režimu obraz v obraze
  • Framework se používá v 90% iOS aplikací pracujících s mediálním obsahem

Vyvineme mobilní aplikaci na klíč

IT Sectr vytváří aplikace pro iOS a Android pro startupy a podniky od roku 2017. Poradíme vám a navrhneme nejlepší řešení.

Prodiskutovat projekt

Přečtěte si také