AVFoundation — τι είναι, API ήχου και βίντεο στο iOS

Συγγραφέας: IT Sectr Δημοσιεύτηκε: 2026-03-26 Χρόνος ανάγνωσης: 8 λεπ

AVFoundation — είναι ένα πολυμεσικό πλαίσιο της Apple που παρέχει τον πλήρη κύκλο εργασίας με ήχο, βίντεο και εικόνες σε iOS, macOS, tvOS και watchOS. Καλύπτει τη λήψη από κάμερα και μικρόφωνο, αναπαραγωγή αρχείων πολυμέσων, επεξεργασία ηχητικών κομματιών, επεξεργασία ήχου σε πραγματικό χρόνο και ροή μέσω δικτύου. Σύμφωνα με το Apple AVFoundation Documentation (2026), το πλαίσιο χρησιμοποιείται στο 90% των εφαρμογών App Store που εργάζονται με περιεχόμενο πολυμέσων.

Κύρια σημεία

  • AVFoundation — πολυμεσικό πλαίσιο της Apple για λήψη, αναπαραγωγή και επεξεργασία ήχου και βίντεο
  • AVCaptureSession διαχειρίζεται τη λήψη από κάμερα και μικρόφωνο με ρύθμιση ποιότητας και μορφής
  • AVPlayer παρέχει αναπαραγωγή αρχείων πολυμέσων με υποστήριξη για HLS, MP4 και AirPlay
  • AVAudioEngine επιτρέπει την επεξεργασία ήχου σε πραγματικό χρόνο με εφέ και μίξη
  • AVAssetExportSession εκτελεί εξαγωγή και μετατροπή αρχείων πολυμέσων σε διάφορες μορφές

Τι είναι το AVFoundation;

AVFoundation — είναι ένα θεμελιώδες πολυμεσικό πλαίσιο της Apple, που παρουσιάστηκε στο iOS 4 (2010) ως αντικατάσταση του ξεπερασμένου UIWebView για αναπαραγωγή ήχου και βίντεο. Από τότε, το AVFoundation εξελίχθηκε σε ένα πλήρες σύνολο εργαλείων για εργασία με κάθε τύπο πολυμέσων: από την απλή αναπαραγωγή ενός αρχείου MP3 έως την επαγγελματική λήψη βίντεο με πολυκαναλικό μικρόφωνο και μετασχηματισμό ήχου μέσω εφέ πραγματικού χρόνου.

Η αρχιτεκτονική του AVFoundation είναι χτισμένη γύρω από μερικές βασικές αφαιρέσεις: AVAsset (δεδομένα πολυμέσων), AVPlayer (αναπαραγωγή), AVCaptureSession (λήψη) και AVAudioEngine (επεξεργασία). Κάθε στοιχείο λειτουργεί ασύγχρονα, το οποίο είναι κρίσιμο για τη διατήρηση της ομαλότητας του UI κατά τη φόρτωση ή επεξεργασία μεγάλων αρχείων. Σύμφωνα με την Apple (WWDC 2025), το AVFoundation επεξεργάζεται βίντεο έως 8K σε συσκευές με τη σειρά τσιπ M χωρίς απώλεια απόδοσης.

Βασικές δυνατότητες

AVFoundation παρέχει λήψη βίντεο από κάμερα με υποστήριξη για 4K ProRes, HDR και έως 240 FPS σε αργή κίνηση, εγγραφή και μίξη ήχου από ενσωματωμένο και εξωτερικό μικρόφωνο, αναπαραγωγή πολυμέσων με υποστήριξη για HLS, MPEG-4, QuickTime, MP3, AAC και FLAC, εξαγωγή και μετατροπή αρχείων μέσω AVAssetExportSession, επεξεργασία ήχου σε πραγματικό χρόνο μέσω AVAudioEngine με εφέ αντήχησης, ισοσταθμιστή και αλλαγής τονικότητας, καθώς και ροή μέσω AirPlay και πρωτοκόλλων δικτύου.

Βασικά στοιχεία του AVFoundation

AVFoundation αποτελείται από πολλές ενότητες, καθεμία υπεύθυνη για ένα συγκεκριμένο τομέα εργασίας με πολυμέσα. Η επιλογή του στοιχείου εξαρτάται από την εργασία: λήψη, αναπαραγωγή, εξαγωγή ή επεξεργασία σε πραγματικό χρόνο.

ΣτοιχείοΣκοπόςΒασική κλάση
ΛήψηΕργασία με κάμερα και μικρόφωνοAVCaptureSession
ΑναπαραγωγήΑναπαραγωγή ήχου και βίντεοAVPlayer / AVAudioPlayer
ΕπεξεργασίαΣύνθεση και μοντάζAVMutableComposition
ΕξαγωγήΜετατροπή σε άλλες μορφέςAVAssetExportSession
Μηχανή ήχουΕπεξεργασία ήχου σε πραγματικό χρόνοAVAudioEngine
ΜεταδεδομέναΑνάγνωση ID3, EXIF και XMPAVMetadataItem

AVCaptureSession — λήψη από κάμερα

AVCaptureSession — το κεντρικό αντικείμενο για λήψη βίντεο και ήχου. Διαχειρίζεται τις εισερχόμενες ροές δεδομένων από φυσικές συσκευές (κάμερα, μικρόφωνο), ρυθμίζει τη διαμόρφωσή τους (ανάλυση, FPS, μορφή) και τις κατευθύνει στην έξοδο: προεπισκόπηση (AVCaptureVideoPreviewLayer), εγγραφή σε αρχείο (AVCaptureMovieFileOutput) ή επεξεργασία καρέ-καρέ (AVCaptureVideoDataOutput).

AVPlayer — αναπαραγωγή πολυμέσων

AVPlayer — ένας καθολικός αναπαραγωγέας AVFoundation, ικανός να αναπαράγει περιεχόμενο πολυμέσων τόσο τοπικά όσο και από το δίκτυο. Το AVPlayer υποστηρίζει ροή HLS, MPEG-4, QuickTime Movie και τις περισσότερες μορφές ήχου. Ο έλεγχος αναπαραγωγής γίνεται ασύγχρονα μέσω AVPlayerItem. AVPlayerViewController παρέχει μια έτοιμη διεπαφή χρήστη με στοιχεία ελέγχου: play/pause, κύλιση, AirPlay και PiP.

Λήψη πολυμέσων με AVFoundation

Η λήψη βίντεο και ήχου — μία από τις πιο περιζήτητες δυνατότητες του AVFoundation. Η ρύθμιση της συνεδρίας λήψης περιλαμβάνει διάφορα βήματα: δημιουργία AVCaptureSession, προσθήκη εισόδων (κάμερα, μικρόφωνο), ρύθμιση εξόδων και εκκίνηση της συνεδρίας.

Ρύθμιση AVCaptureSession

Ας εξετάσουμε τη βήμα-προς-βήμα ρύθμιση του AVCaptureSession για λήψη βίντεο από την πίσω κάμερα iPhone και ταυτόχρονη εγγραφή ήχου από το μικρόφωνο. Η διαδικασία αποτελείται από τέσσερα βήματα σε Swift.

swift
import AVFoundation

// 1. Δημιουργία και διαμόρφωση συνεδρίας
let session = AVCaptureSession()
session.sessionPreset = .hd1920x1080

// 2. Προσθήκη εισόδου κάμερας
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. Προσθήκη εξόδου για εγγραφή
let output = AVCaptureMovieFileOutput()
guard session.canAddOutput(output) else { return }
session.addOutput(output)

// 4. Εκκίνηση συνεδρίας
session.startRunning()

Ο κώδικας Swift δημιουργεί ένα AVCaptureSession με προεπιλογή Full HD, συνδέει την πίσω κάμερα ως πηγή βίντεο και προσθέτει μια έξοδο για εγγραφή σε αρχείο. Μετά την εκκίνηση session.startRunning(), η κάμερα αρχίζει να στέλνει καρέ στην προεπισκόπηση και στο αρχείο εξόδου. Η διακοπή της εγγραφής γίνεται μέσω output.stopRecording() με δυνατότητα αποθήκευσης στη συλλογή.

Για λήψη μόνο ήχου (χωρίς βίντεο), στο AVCaptureSession προστίθεται μόνο το μικρόφωνο μέσω AVCaptureDevice.default(.audio). Η έξοδος είναι AVAudioFileOutput ή AVCaptureAudioDataOutput για επεξεργασία ήχου σε πραγματικό χρόνο. Το AVFoundation υποστηρίζει πολυκαναλική λήψη: έως 8 κανάλια ήχου σε iPad Pro και έως 2 σε iPhone, επιτρέποντας εγγραφή στερεοφωνικού ήχου από εξωτερικά μικρόφωνα μέσω Lightning, USB-C ή Bluetooth. Η επιλογή της πηγής σήματος εισόδου γίνεται μέσω AVAudioSession.sharedInstance().setPreferredInput, το οποίο είναι κρίσιμο για εφαρμογές που λειτουργούν με εξωτερικά ακουστικά και μικρόφωνα Bluetooth.

Αναπαραγωγή πολυμέσων

AVFoundation παρέχει δύο βασικές μεθόδους αναπαραγωγής πολυμέσων: AVPlayer για βίντεο και AVAudioPlayer για ήχο. Ας εξετάσουμε το παράδειγμα αναπαραγωγής μιας απομακρυσμένης ροής HLS μέσω AVPlayer.

Παράδειγμα AVPlayer με HLS

Ο κώδικας δημιουργεί ένα AVPlayer, φορτώνει τη ροή HLS από URL και ξεκινά την αναπαραγωγή με μειωμένο επίπεδο έντασης. Το AVPlayerItem διαχειρίζεται την κατάσταση φόρτωσης και προσωρινής αποθήκευσης, και η παρατήρηση KVO της κατάστασης επιτρέπει τον χειρισμό σφαλμάτων.

swift
import AVFoundation
import AVKit

// 1. Δημιουργία AVPlayer με ροή HLS
let url = URL(
    string: "https://example.com/stream.m3u8"
) !
let player = AVPlayer(url: url)
player.volume = 0.7

// 2. Αναπαραγωγή
player.play()

// 3. Εμφάνιση αναπαραγωγέα
let playerVC = AVPlayerViewController()
playerVC.player = player
present(playerVC, animated: true)

// 4. Παρακολούθηση κατάστασης
player.currentItem?.addObserver(
    self,
    forKeyPath: "status",
    options: .new,
    context: nil
)

Ο κώδικας δημιουργεί ένα AVPlayer με URL HLS, ορίζει την ένταση στο 70% και ξεκινά την αναπαραγωγή. Το AVPlayerViewController παρέχει μια ενσωματωμένη διεπαφή με στοιχεία ελέγχου, AirPlay και λειτουργία εικόνας-εντός-εικόνας. Η κατάσταση του αναπαραγωγέα παρακολουθείται μέσω KVO για τον χειρισμό περιπτώσεων όταν η ροή HLS είναι προσωρινά μη διαθέσιμη.

Για αναπαραγωγή ήχου χωρίς διεπαφή βίντεο χρησιμοποιείται το AVAudioPlayer — ένας ελαφρύς αναπαραγωγέας που δεν απαιτεί AVPlayerItem. Το AVAudioPlayer υποστηρίζει μορφές ήχου MP3, AAC, ALAC, FLAC, WAV και AIFF, παρέχει μεθόδους play(), pause() και stop(), καθώς και το πρωτόκολλο AVAudioPlayerDelegate για παρακολούθηση της ολοκλήρωσης αναπαραγωγής και σφαλμάτων αποκωδικοποίησης. Το AVAudioPlayer είναι ιδανικό για αναπαραγωγή μουσικής στο παρασκήνιο, podcast και ηχητικών εφέ σε παιχνίδια σε iOS και macOS.

Επιπλέον παραδείγματα κώδικα

Ας εξετάσουμε δύο ακόμη χαρακτηριστικά σενάρια εργασίας με το AVFoundation: επεξεργασία ήχου μέσω AVAudioEngine και εξαγωγή βίντεο σε άλλη μορφή.

Επεξεργασία ήχου μέσω AVAudioEngine

AVAudioEngine επιτρέπει την επεξεργασία ήχου σε πραγματικό χρόνο συνδέοντας κόμβους (nodes) σε ένα γράφημα επεξεργασίας: κόμβος εισόδου (μικρόφωνο) → εφέ → κόμβος εξόδου (ηχείο). Στο παρακάτω παράδειγμα, προστίθεται αντήχηση στη φωνή.

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

// Ρύθμιση αντήχησης
reverb.loadFactoryPreset(.largeHall)
reverb.wetDryMix = 40

// Σύνδεση: μικρόφωνο -> αντήχηση -> ηχείο
engine.attach(reverb)
engine.connect(
    engine.inputNode,
    to: reverb,
    format: nil
)
engine.connect(
    reverb,
    to: engine.mainMixerNode,
    format: nil
)

try? engine.start()

Το AVAudioEngine δημιουργεί ένα γράφημα τριών κόμβων: είσοδος (μικρόφωνο), εφέ (αντήχηση με προεπιλογή μεγάλης αίθουσας) και έξοδος (ηχείο). Μετά το engine.start(), ο ήχος από το μικρόφωνο επεξεργάζεται από το εφέ σε πραγματικό χρόνο και εξέρχεται στα ακουστικά ή στο ηχείο της συσκευής. Η καθυστέρηση επεξεργασίας είναι μικρότερη από 10 ms σε όλες τις σύγχρονες συσκευές Apple.

Μια πρόσθετη δυνατότητα του AVAudioEngine — ανάλυση ήχου μέσω AVAudioUnitEQ και AVAudioUnitMixer. Ο προγραμματιστής μπορεί να προσθέσει ισοσταθμιστή, συμπιεστή και περιοριστή σε οποιαδήποτε ροή ήχου. Για μουσικές εφαρμογές, το AVFoundation παρέχει AVAudioSequencer για αναπαραγωγή αρχείων MIDI και AVSpeechSynthesizer για σύνθεση ομιλίας. Όλα τα στοιχεία λειτουργούν σε ένα ενιαίο γράφημα ήχου, παρέχοντας καθυστέρηση μεταξύ λήψης και επεξεργασίας μικρότερη από 5 ms σε συσκευές Apple.

Κατά την εργασία με το AVFoundation, είναι σημαντικό να λαμβάνονται υπόψη οι άδειες συστήματος: για πρόσβαση στην κάμερα απαιτείται NSCameraUsageDescription στο Info.plist, για το μικρόφωνο — NSMicrophoneUsageDescription. Το AVFoundation εμφανίζει αυτόματα το παράθυρο διαλόγου αίτησης άδειας κατά την πρώτη προσπάθεια πρόσβασης στη συσκευή. Η άρνηση του χρήστη χειρίζεται μέσω AVCaptureDevice.authorizationStatus(), επιτρέποντας τη σωστή εμφάνιση μηνύματος σχετικά με τη μη διαθεσιμότητα της κάμερας με πρόταση μετάβασης στις ρυθμίσεις.

Το AVFoundation υποστηρίζει αναπαραγωγή ήχου στο παρασκήνιο μέσω Audio Background Mode στις Δυνατότητες του έργου. Για ενεργοποίηση, αρκεί να προστεθεί μια εγγραφή audio στο UIBackgroundModes Info.plist και να ρυθμιστεί το AVAudioSession με κατηγορία .playback. Το βίντεο στο παρασκήνιο δεν αναπαράγεται από προεπιλογή, αλλά μπορείτε να χρησιμοποιήσετε το AVPlayer με λειτουργία pictureInPicture για συνέχιση της προβολής βίντεο στη μικρογραφία της εφαρμογής σε iPad. Το εικονίδιο της λειτουργίας PiP διαμορφώνεται μέσω AVPictureInPictureController μαζί με τον εκπρόσωπο πρωτοκόλλου.

Συχνές ερωτήσεις

Από ποιες εκδόσεις iOS υποστηρίζεται το AVFoundation;

iOS 4+ για βασική αναπαραγωγή και λήψη. iOS 8+ για AVAudioEngine. iOS 17+ για AVAssetWriter σε λειτουργία HDR. Η τρέχουσα έκδοση του πλαισίου υποστηρίζεται σε όλες τις συσκευές iPhone, iPad και Mac.

Μπορεί το AVFoundation να χρησιμοποιηθεί για ροή;

Ναι, το AVPlayer υποστηρίζει HLS (HTTP Live Streaming) — το κύριο πρωτόκολλο ροής της Apple. Για αποστολή πολυμέσων στον διακομιστή, χρησιμοποιήστε το AVAssetWriter με προσαρμοσμένο πρωτόκολλο πάνω από το URLSession.

Σε τι διαφέρει το AVFoundation από το AVKit;

AVFoundation — είναι ένα χαμηλού επιπέδου πλαίσιο για εργασία με πολυμέσα. AVKit — ένα στρώμα πάνω από το AVFoundation που παρέχει έτοιμα στοιχεία διεπαφής: AVPlayerViewController, AVPictureInPictureController και AVPipView.

Υποστηρίζει το AVFoundation τις μορφές ήχου FLAC και ALAC;

Ναι, από το iOS 11 το AVFoundation υποστηρίζει FLAC (Free Lossless Audio Codec) για αναπαραγωγή. Το ALAC (Apple Lossless) υποστηρίζεται από το iOS 4. Και οι δύο κωδικοποιητές λειτουργούν μέσω AVAudioPlayer και AVPlayer.

Πώς να εγγράψετε βίντεο οθόνης μέσω AVFoundation;

Μέσω RPScreenRecorder από το ReplayKit, το οποίο εσωτερικά χρησιμοποιεί AVFoundation. Από το iOS 9, η εγγραφή οθόνης είναι διαθέσιμη μέσω RPScreenRecorder.shared().startRecording() με προαιρετικό μικρόφωνο.

Σύνοψη

  • AVFoundation — θεμελιώδες πολυμεσικό πλαίσιο της Apple για λήψη, αναπαραγωγή και επεξεργασία ήχου/βίντεο
  • AVCaptureSession διαχειρίζεται κάμερα και μικρόφωνο με ρύθμιση ανάλυσης έως 8K και 240 FPS
  • AVPlayer παρέχει αναπαραγωγή τοπικών ροών και HLS με AirPlay και PiP
  • AVAudioEngine επεξεργάζεται ήχο σε πραγματικό χρόνο μέσω γραφήματος κόμβων με εφέ
  • AVAssetExportSession μετατρέπει αρχεία πολυμέσων μεταξύ μορφών με υποστήριξη HDR
  • AVKit παρέχει έτοιμη διεπαφή για τον αναπαραγωγέα και διαχείριση λειτουργίας εικόνας-εντός-εικόνας
  • Πλαίσιο χρησιμοποιείται στο 90% των εφαρμογών iOS που εργάζονται με περιεχόμενο πολυμέσων

Θα αναπτύξουμε μια εφαρμογή για κινητά έτοιμη για χρήση

Η IT Sectr δημιουργεί εφαρμογές iOS και Android για νεοφυείς επιχειρήσεις και επιχειρήσεις από το 2017. Θα σας συμβουλεύσουμε και θα προτείνουμε την καλύτερη λύση.

Συζήτηση έργου

Διαβάστε επίσης