AVFoundation — bu nədir, iOS-da audio və video API

Müəllif: IT Sectr Dərc olunub: 2026-03-26 Oxuma vaxtı: 8 dəq

AVFoundation — iOS, macOS, tvOS və watchOS-da audio, video və şəkillərlə tam iş dövrünü təmin edən Apple multimedia freymvorkudur. O, kamera və mikrofondan tutma, media fayllarını oxutma, audio trekləri redaktə etmə, real vaxtda səs emalı və şəbəkə üzərindən striminqi əhatə edir. Apple AVFoundation Documentation (2026) məlumatına görə, freymvork media məzmunu ilə işləyən App Store tətbiqlərinin 90%-də istifadə olunur.

Əsas məqamlar

  • AVFoundation — audio və video tutma, oxutma və emal üçün Apple multimedia freymvorku
  • AVCaptureSession keyfiyyət və format tənzimləməsi ilə kamera və mikrofondan tutmanı idarə edir
  • AVPlayer HLS, MP4 və AirPlay dəstəyi ilə media fayllarının oxudulmasını təmin edir
  • AVAudioEngine effektlər və miksləmə ilə real vaxtda audio emal etməyə imkan verir
  • AVAssetExportSession media fayllarının müxtəlif formatlara ixrac və konvertasiyasını həyata keçirir

AVFoundation nədir?

AVFoundation — Apple-ın audio və video oxutmaq üçün köhnəlmiş UIWebView-i əvəz etmək məqsədilə hələ iOS 4-də (2010) təqdim edilmiş əsas multimedia freymvorkudur. O vaxtdan bəri AVFoundation sadə MP3 faylını oxutmaqdan tutmuş çoxkanallı mikrofondan peşəkar video tutma və real vaxt effektləri vasitəsilə səs transformasiyasına qədər istənilən media növü ilə iş üçün tam hüquqlu alətlər dəstinə çevrilmişdir.

AVFoundation arxitekturası bir neçə əsas abstraksiya ətrafında qurulmuşdur: AVAsset (media məlumatları), AVPlayer (oxutma), AVCaptureSession (tutma) və AVAudioEngine (emal). Hər bir komponent asinxron işləyir ki, bu da böyük faylların yüklənməsi və ya emalı zamanı UI-nin hamarlığını qorumaq üçün kritik əhəmiyyət daşıyır. Apple (WWDC 2025) məlumatına görə, AVFoundation M seriyalı çipli cihazlarda performans itkisi olmadan 8K videonu emal edir.

Əsas imkanlar

AVFoundation 4K ProRes, HDR və ağır çəkilişdə 240 FPS dəstəyi ilə kameradan video tutma, daxili və xarici mikrofonlardan audio yazma və miksləmə, HLS, MPEG-4, QuickTime, MP3, AAC və FLAC dəstəyi ilə media oxutma, AVAssetExportSession vasitəsilə faylların ixrac və konvertasiyası, AVAudioEngine ilə reverb, ekvalayzer və pitch-shifting effektləri ilə real vaxtda səs emalı, həmçinin AirPlay və şəbəkə protokolları ilə striminqi təmin edir.

AVFoundation-un əsas komponentləri

AVFoundation bir neçə moduldan ibarətdir, hər biri media ilə işin müəyyən sahəsinə cavabdehdir. Komponentin seçimi tapşırıqdan asılıdır: tutma, oxutma, ixrac və ya real vaxt emalı.

KomponentTəyinatƏsas sinif
TutmaKamera və mikrofonla işAVCaptureSession
OxutmaAudio və video pleyerAVPlayer / AVAudioPlayer
RedaktəKompozisiya və montajAVMutableComposition
İxracDigər formatlara konvertasiyaAVAssetExportSession
Audio mühərrikReal vaxtda səs emalıAVAudioEngine
MetaməlumatlarID3, EXIF və XMP oxumaAVMetadataItem

AVCaptureSession — kameradan tutma

AVCaptureSession — video və audio tutmaq üçün mərkəzi obyektdir. Fiziki cihazlardan (kamera, mikrofon) daxil olan məlumat axınlarını idarə edir, onların konfiqurasiyasını (rezolyusiya, FPS, format) tənzimləyir və çıxışa yönləndirir: önizləmə (AVCaptureVideoPreviewLayer), fayla yazma (AVCaptureMovieFileOutput) və ya kadr-kadr emal (AVCaptureVideoDataOutput).

AVPlayer — media oxutma

AVPlayer — həm lokal, həm də şəbəkədən media məzmununu oxutmaq qabiliyyətinə malik universal AVFoundation pleyeridir. AVPlayer HLS striminqi, MPEG-4, QuickTime Movie və əksər audio formatlarını dəstəkləyir. Oxutmaya nəzarət AVPlayerItem vasitəsilə asinxron həyata keçirilir. AVPlayerViewController play/pause, sürüşdürmə, AirPlay və PiP kimi idarəetmə elementləri ilə hazır UI təmin edir.

AVFoundation ilə media tutma

Video və audio tutma AVFoundation-un ən çox tələb olunan imkanlarından biridir. Tutma seansının konfiqurasiyası bir neçə addımı əhatə edir: AVCaptureSession yaratma, girişlər əlavə etmə (kamera, mikrofon), çıxışları tənzimləmə və seansı işə salma.

AVCaptureSession konfiqurasiyası

iPhone-un arxa kamerasından video tutmaq və eyni vaxtda mikrofondan səs yazmaq üçün AVCaptureSession-un addım-addım konfiqurasiyasını nəzərdən keçirək. Proses Swift-də dörd addımdan ibarətdir.

swift
import AVFoundation

// 1. Sessiyanın yaradılması və konfiqurasiyası
let session = AVCaptureSession()
session.sessionPreset = .hd1920x1080

// 2. Kamera girişinin əlavə edilməsi
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. Yazma çıxışının əlavə edilməsi
let output = AVCaptureMovieFileOutput()
guard session.canAddOutput(output) else { return }
session.addOutput(output)

// 4. Sessiyanın işə salınması
session.startRunning()

Swift kodu Full HD preset ilə AVCaptureSession yaradır, arxa kameranı video mənbəyi kimi qoşur və fayla yazmaq üçün çıxış əlavə edir. session.startRunning() işə salındıqdan sonra kamera kadrları önizləmə və çıxış faylına ötürməyə başlayır. Yazmanın dayandırılması output.stopRecording() vasitəsilə həyata keçirilir, qalereyaya yadda saxlama imkanı ilə.

Yalnız audio (video olmadan) tutmaq üçün AVCaptureSession-a yalnız AVCaptureDevice.default(.audio) vasitəsilə mikrofon əlavə edilir. Çıxış kimi AVAudioFileOutput və ya real vaxtda səs emalı üçün AVCaptureAudioDataOutput istifadə olunur. AVFoundation çoxkanallı tutmanı dəstəkləyir: iPad Pro-da 8 audio kanalına qədər və iPhone-da 2 kanal, bu da Lightning, USB-C və ya Bluetooth vasitəsilə xarici mikrofonlardan stereo səs yazmağa imkan verir. Giriş siqnal mənbəyinin seçimi AVAudioSession.sharedInstance().setPreferredInput vasitəsilə həyata keçirilir ki, bu da xarici qulaqlıqlar və Bluetooth mikrofonları ilə işləyən tətbiqlər üçün kritikdir.

Media oxutma

AVFoundation media oxutmağın iki əsas yolunu təmin edir: video üçün AVPlayer və audio üçün AVAudioPlayer. AVPlayer vasitəsilə uzaq HLS axınının oxudulması nümunəsini nəzərdən keçirək.

HLS ilə AVPlayer nümunəsi

Kod AVPlayer yaradır, URL üzərindən HLS axınını yükləyir və aşağı səs səviyyəsində oxutmanı başladır. AVPlayerItem yükləmə və buferləşmə vəziyyətini idarə edir, KVO vasitəsilə statusun müşahidəsi isə səhvləri emal etməyə imkan verir.

swift
import AVFoundation
import AVKit

// 1. HLS axını ilə AVPlayer yaradılması
let url = URL(
    string: "https://example.com/stream.m3u8"
) !
let player = AVPlayer(url: url)
player.volume = 0.7

// 2. Oxutma
player.play()

// 3. Pleyerin göstərilməsi
let playerVC = AVPlayerViewController()
playerVC.player = player
present(playerVC, animated: true)

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

Kod HLS URL ilə AVPlayer yaradır, səsi 70%-ə tənzimləyir və oxutmanı başladır. AVPlayerViewController idarəetmə elementləri, AirPlay və şəkil içərisində şəkil rejimi ilə daxili UI təmin edir. Pleyerin statusu KVO vasitəsilə izlənilir ki, HLS axını müvəqqəti əlçatmaz olduqda müvafiq tədbirlər görülsün.

Video interfeysi olmadan audio oxutmaq üçün AVAudioPlayer istifadə olunur — AVPlayerItem tələb etməyən yüngül pleyer. AVAudioPlayer MP3, AAC, ALAC, FLAC, WAV və AIFF audio formatlarını dəstəkləyir, play(), pause() və stop() metodlarını, həmçinin oxutmanın bitməsini və dekodlaşdırma səhvlərini izləmək üçün AVAudioPlayerDelegate-i təmin edir. AVAudioPlayer iOS və macOS-da fon musiqisi, podkastlar və oyunlarda səs effektləri üçün idealdır.

Əlavə kod nümunələri

AVFoundation ilə işin daha iki xarakterik ssenarisini nəzərdən keçirək: AVAudioEngine vasitəsilə audio emalı və videonun başqa formata ixracı.

AVAudioEngine vasitəsilə audio emalı

AVAudioEngine emal qrafında qovşaqları (nodes) birləşdirərək real vaxtda audio emal etməyə imkan verir: giriş qovşağı (mikrofon) → effektlər → çıxış qovşağı (dinamik). Aşağıdakı nümunədə səsə reverb əlavə olunur.

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

// Reverb konfiqurasiyası
reverb.loadFactoryPreset(.largeHall)
reverb.wetDryMix = 40

// Qoşulma: mikrofon -> reverb -> dinamik
engine.attach(reverb)
engine.connect(
    engine.inputNode,
    to: reverb,
    format: nil
)
engine.connect(
    reverb,
    to: engine.mainMixerNode,
    format: nil
)

try? engine.start()

AVAudioEngine üç qovşaqdan ibarət qraf yaradır: giriş (mikrofon), effekt (böyük zal preseti ilə reverb) və çıxış (dinamik). engine.start() işə salındıqdan sonra mikrofondan gələn səs real vaxtda effektlə emal olunur və cihazın qulaqlıq və ya dinamikinə ötürülür. Emal gecikməsi bütün müasir Apple cihazlarında 10 ms-dən azdır.

AVAudioEngine-in əlavə imkanı — AVAudioUnitEQ və AVAudioUnitMixer vasitəsilə səs analizidir. Tərtibatçı istənilən audio axınına ekvalayzer, kompressor və limiter əlavə edə bilər. Musiqi tətbiqləri üçün AVFoundation MIDI fayllarını oxutmaq üçün AVAudioSequencer və nitq sintezi üçün AVSpeechSynthesizer təmin edir. Bütün komponentlər vahid audio qrafında işləyir, bu da Apple cihazlarında tutma və emal arasında 5 ms-dən az gecikmə verir.

AVFoundation ilə işləyərkən sistem icazələrini nəzərə almaq vacibdir: kameraya giriş üçün Info.plist-də NSCameraUsageDescription, mikrofon üçün NSMicrophoneUsageDescription tələb olunur. AVFoundation cihaza ilk giriş cəhdində avtomatik olaraq sistem icazə dialoqunu göstərir. İstifadəçinin imtinası AVCaptureDevice.authorizationStatus() vasitəsilə emal olunur ki, bu da kameranın əlçatmazlığı barədə düzgün mesaj göstərməyə və parametrlərə keçməyi təklif etməyə imkan verir.

AVFoundation layihənin Capabilities bölməsində Audio Background Mode vasitəsilə fonda audio oxutmanı dəstəkləyir. Aktivasiya üçün UIBackgroundModes Info.plist-də audio qeydini əlavə etmək və AVAudioSession-u .playback kateqoriyası ilə konfiqurasiya etmək kifayətdir. Fonda video standart olaraq oxudulmur, lakin iPad-də kiçildilmiş tətbiqdə videonun davam etdirilməsi üçün AVPlayer-dan pictureInPicture rejimi ilə istifadə etmək olar. PiP rejiminin işarəsi AVPictureInPictureController və protokol deleqatı vasitəsilə konfiqurasiya olunur.

Tez-tez verilən suallar

AVFoundation hansı iOS versiyalarından dəstəklənir?

iOS 4+ əsas oxutma və tutma üçün. iOS 8+ AVAudioEngine üçün. iOS 17+ HDR rejimində AVAssetWriter üçün. Freymvorkun cari versiyası bütün iPhone, iPad və Mac cihazlarında dəstəklənir.

AVFoundation striminq üçün istifadə edilə bilərmi?

Bəli, AVPlayer HLS (HTTP Live Streaming) — Apple-ın əsas striminq protokolunu dəstəkləyir. Media serverə göndərmək üçün URLSession üzərində xüsusi protokolla AVAssetWriter istifadə edin.

AVFoundation AVKit-dən nə ilə fərqlənir?

AVFoundation — media ilə iş üçün aşağı səviyyəli freymvorkdur. AVKit — AVFoundation üzərində hazır UI komponentləri təmin edən əlavədir: AVPlayerViewController, AVPictureInPictureController və AVPipView.

AVFoundation FLAC və ALAC audio formatlarını dəstəkləyirmi?

Bəli, iOS 11-dən etibarən AVFoundation oxutma üçün FLAC (Free Lossless Audio Codec) dəstəkləyir. ALAC (Apple Lossless) iOS 4-dən dəstəklənir. Hər iki kodek AVAudioPlayer və AVPlayer vasitəsilə işləyir.

AVFoundation vasitəsilə ekran videosunu necə yazmaq olar?

ReplayKit-dən RPScreenRecorder vasitəsilə, o daxildə AVFoundation istifadə edir. iOS 9-dan etibarən ekran yazma RPScreenRecorder.shared().startRecording() ilə əlavə mikrofon seçimi ilə mümkündür.

Nəticə

  • AVFoundation — audio/video tutma, oxutma və emal üçün Apple-ın əsas multimedia freymvorku
  • AVCaptureSession 8K və 240 FPS-ə qədər rezolyusiya tənzimləməsi ilə kamera və mikrofonu idarə edir
  • AVPlayer AirPlay və PiP ilə lokal və HLS axınlarının oxudulmasını təmin edir
  • AVAudioEngine effektlərlə qovşaq qrafı vasitəsilə real vaxtda audio emal edir
  • AVAssetExportSession HDR dəstəyi ilə media fayllarını formatlar arasında konvertasiya edir
  • AVKit pleyer üçün hazır UI və şəkil içərisində şəkil rejiminin idarə edilməsini təmin edir
  • Freymvork media məzmunu ilə işləyən iOS tətbiqlərinin 90%-də istifadə olunur

Açar təslim mobil tətbiq hazırlayacağıq

IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.

Layihəni müzakirə et

Həm də oxuyun