AVFoundation ایپل کا ملٹی میڈیا فریم ورک ہے جو iOS، macOS، tvOS اور watchOS پر آڈیو، ویڈیو اور امیجز کے ساتھ کام کرنے کا مکمل ورک فلو فراہم کرتا ہے۔ یہ کیمرہ اور مائیکروفون سے کیپچر، میڈیا فائل پلے بیک، آڈیو ٹریک ایڈیٹنگ، ریئل ٹائم ساؤنڈ پروسیسنگ اور نیٹ ورک سٹریمنگ کو کور کرتا ہے۔ Apple AVFoundation Documentation (2026) کے مطابق، یہ فریم ورک میڈیا مواد کے ساتھ کام کرنے والی 90% App Store ایپلی کیشنز میں استعمال ہوتا ہے۔
اہم نکات
AVFoundation ایپل کا بنیادی ملٹی میڈیا فریم ورک ہے، جو iOS 4 (2010) میں آڈیو اور ویڈیو پلے بیک کے لیے متروک UIWebView کے متبادل کے طور پر متعارف کرایا گیا تھا۔ اس کے بعد سے AVFoundation ہر قسم کے میڈیا کے ساتھ کام کرنے کے لیے ایک مکمل ٹول سیٹ میں تبدیل ہو گیا ہے: سادہ MP3 فائل پلے بیک سے لے کر ملٹی چینل مائیکروفون کے ساتھ پیشہ ورانہ ویڈیو کیپچر اور ریئل ٹائم اثرات کے ذریعے آواز کی تبدیلی تک۔
AVFoundation کا فن تعمیر کئی بنیادی تجریدوں کے گرد بنایا گیا ہے: AVAsset (میڈیا ڈیٹا)، AVPlayer (پلے بیک)، AVCaptureSession (کیپچر) اور AVAudioEngine (پروسیسنگ)۔ ہر جزو غیر مطابقت پذیر طور پر کام کرتا ہے، جو بڑی فائلوں کو لوڈ کرنے یا پروسیس کرنے کے دوران یوزر انٹرفیس کی ہمواری کو برقرار رکھنے کے لیے اہم ہے۔ Apple (WWDC 2025) کے مطابق، AVFoundation M سیریز چپس والے آلات پر کارکردگی میں کمی کے بغیر 8K ویڈیو تک ہینڈل کرتا ہے۔
AVFoundation 4K ProRes، HDR اور سلو موشن میں 240 FPS تک کی معاونت کے ساتھ کیمرہ سے ویڈیو کیپچر، بلٹ ان اور بیرونی مائیکروفونز سے آڈیو ریکارڈنگ اور مکسنگ، HLS، MPEG-4، QuickTime، MP3، AAC اور FLAC کی معاونت کے ساتھ میڈیا پلے بیک، AVAssetExportSession کے ذریعے فائل برآمد اور کنورژن، ریورب، ایکولائزر اور پچ شفٹنگ اثرات کے ساتھ AVAudioEngine کے ذریعے ریئل ٹائم آڈیو پروسیسنگ، نیز AirPlay اور نیٹ ورک پروٹوکولز کے ذریعے سٹریمنگ فراہم کرتا ہے۔
AVFoundation کئی ماڈیولز پر مشتمل ہے، ہر ایک میڈیا کام کے ایک مخصوص شعبے کا ذمہ دار ہے۔ جزو کا انتخاب کام پر منحصر ہے: کیپچر، پلے بیک، برآمد یا ریئل ٹائم پروسیسنگ۔
| جزو | مقصد | اہم کلاس |
|---|---|---|
| کیپچر | کیمرہ اور مائیکروفون کے ساتھ کام | AVCaptureSession |
| پلے بیک | آڈیو اور ویڈیو پلیئر | AVPlayer / AVAudioPlayer |
| ایڈیٹنگ | کمپوزیشن اور مونٹیج | AVMutableComposition |
| برآمد | دوسرے فارمیٹس میں کنورژن | AVAssetExportSession |
| آڈیو انجن | ریئل ٹائم ساؤنڈ پروسیسنگ | AVAudioEngine |
| میٹا ڈیٹا | ID3، EXIF اور XMP پڑھنا | AVMetadataItem |
AVCaptureSession ویڈیو اور آڈیو کیپچر کے لیے مرکزی آبجیکٹ ہے۔ یہ فزیکل ڈیوائسز (کیمرہ، مائیکروفون) سے آنے والے ڈیٹا سٹریمز کا انتظام کرتا ہے، ان کی سیٹنگز (ریزولوشن، FPS، فارمیٹ) کنفیگر کرتا ہے، اور آؤٹ پٹ پر بھیجتا ہے: پیش نظارہ (AVCaptureVideoPreviewLayer)، فائل ریکارڈنگ (AVCaptureMovieFileOutput)، یا فریم بہ فریم پروسیسنگ (AVCaptureVideoDataOutput)۔
AVPlayer ایک یونیورسل AVFoundation پلیئر ہے جو مقامی اور نیٹ ورک دونوں پر میڈیا مواد چلانے کی صلاحیت رکھتا ہے۔ AVPlayer HLS سٹریمنگ، MPEG-4، QuickTime Movie اور زیادہ تر آڈیو فارمیٹس کو سپورٹ کرتا ہے۔ پلے بیک کنٹرول AVPlayerItem کے ذریعے غیر مطابقت پذیر طور پر کیا جاتا ہے۔ AVPlayerViewController کنٹرولز کے ساتھ تیار یوزر انٹرفیس فراہم کرتا ہے: پلے/پاز، سکربرنگ، AirPlay اور PiP۔
ویڈیو اور آڈیو کیپچر AVFoundation کی سب سے زیادہ مانگی جانے والی صلاحیتوں میں سے ایک ہے۔ کیپچر سیشن سیٹ اپ میں کئی مراحل شامل ہیں: AVCaptureSession بنانا، ان پٹ (کیمرہ، مائیکروفون) شامل کرنا، آؤٹ پٹ کنفیگر کرنا اور سیشن شروع کرنا۔
آئیے iPhone کے پچھلے کیمرہ سے ویڈیو کیپچر کرنے اور ایک ہی وقت میں مائیکروفون سے آواز ریکارڈ کرنے کے لیے AVCaptureSession کا مرحلہ وار سیٹ اپ دیکھتے ہیں۔ یہ عمل 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 کوڈ Full HD پری سیٹ کے ساتھ AVCaptureSession بناتا ہے، پچھلے کیمرہ کو ویڈیو سورس کے طور پر جوڑتا ہے، اور فائل ریکارڈنگ کے لیے آؤٹ پٹ شامل کرتا ہے۔ session.startRunning() کے بعد، کیمرہ پیش نظارہ اور آؤٹ پٹ فائل پر فریم بھیجنا شروع کرتا ہے۔ ریکارڈنگ گیلری میں محفوظ کرنے کے آپشن کے ساتھ output.stopRecording() کے ذریعے روکی جاتی ہے۔
صرف آڈیو کیپچر (ویڈیو کے بغیر) کے لیے، AVCaptureSession میں صرف مائیکروفون AVCaptureDevice.default(.audio) کے ذریعے شامل کیا جاتا ہے۔ آؤٹ پٹ ریئل ٹائم ساؤنڈ پروسیسنگ کے لیے AVAudioFileOutput یا AVCaptureAudioDataOutput ہے۔ AVFoundation ملٹی چینل کیپچر کو سپورٹ کرتا ہے: iPad Pro پر 8 آڈیو چینلز تک اور iPhone پر 2 تک، جو Lightning، USB-C یا Bluetooth کے ذریعے بیرونی مائیکروفونز سے سٹیریو ریکارڈنگ کی اجازت دیتا ہے۔ ان پٹ سورس کا انتخاب AVAudioSession.sharedInstance().setPreferredInput کے ذریعے کیا جاتا ہے، جو بیرونی ہیڈسیٹ اور Bluetooth مائیکروفونز کے ساتھ کام کرنے والی ایپلی کیشنز کے لیے اہم ہے۔
AVFoundation میڈیا چلانے کے دو اہم طریقے فراہم کرتا ہے: ویڈیو کے لیے AVPlayer اور آڈیو کے لیے AVAudioPlayer۔ آئیے AVPlayer کا استعمال کرتے ہوئے ریموٹ HLS سٹریم چلانے کی مثال دیکھتے ہیں۔
کوڈ ایک AVPlayer بناتا ہے، URL سے HLS سٹریم لوڈ کرتا ہے، اور کم والیوم لیول پر پلے بیک شروع کرتا ہے۔ AVPlayerItem لوڈنگ اور بفرنگ کی حالت کا انتظام کرتا ہے، اور اسٹیٹس کا KVO مشاہدہ غلطیوں کو ہینڈل کرنے کی اجازت دیتا ہے۔
import AVFoundation
import AVKit
// 1. HLS سٹریم کے ساتھ AVPlayer بنانا
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
)
کوڈ HLS URL کے ساتھ AVPlayer بناتا ہے، والیوم 70% سیٹ کرتا ہے، اور پلے بیک شروع کرتا ہے۔ AVPlayerViewController کنٹرولز، AirPlay اور پکچر ان پکچر موڈ کے ساتھ بلٹ ان یوزر انٹرفیس فراہم کرتا ہے۔ پلیئر کی اسٹیٹس KVO کے ذریعے مانیٹر کی جاتی ہے جب HLS سٹریم عارضی طور پر دستیاب نہ ہو تو ان صورتوں کو ہینڈل کرنے کے لیے۔
ویڈیو انٹرفیس کے بغیر آڈیو پلے بیک کے لیے AVAudioPlayer استعمال کیا جاتا ہے — ایک ہلکا پھلکا پلیئر جسے AVPlayerItem کی ضرورت نہیں ہے۔ AVAudioPlayer MP3، AAC، ALAC، FLAC، WAV اور AIFF آڈیو فارمیٹس کو سپورٹ کرتا ہے، play()، pause() اور stop() کے طریقے فراہم کرتا ہے، نیز پلے بیک مکمل ہونے اور ڈی کوڈنگ کی غلطیوں کو ٹریک کرنے کے لیے AVAudioPlayerDelegate فراہم کرتا ہے۔ AVAudioPlayer iOS اور macOS پر بیک گراؤنڈ میوزک پلے بیک، پوڈکاسٹس اور گیمز میں صوتی اثرات کے لیے مثالی ہے۔
آئیے AVFoundation کے ساتھ کام کرنے کے دو مزید عام منظرنامے دیکھتے ہیں: AVAudioEngine کے ذریعے آڈیو پروسیسنگ اور ویڈیو کو دوسرے فارمیٹ میں برآمد کرنا۔
AVAudioEngine پروسیسنگ گراف میں نوڈس کو جوڑ کر ریئل ٹائم آڈیو پروسیسنگ کو قابل بناتا ہے: ان پٹ نوڈ (مائیکروفون) → اثرات → آؤٹ پٹ نوڈ (اسپیکر)۔ نیچے دی گئی مثال میں آواز میں ریورب شامل کیا گیا ہے۔
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() کے بعد، مائیکروفون سے آڈیو ریئل ٹائم میں اثر کے ذریعے پروسیس ہو کر ڈیوائس کے ہیڈ فون یا اسپیکر پر آؤٹ پٹ ہوتی ہے۔ تمام جدید Apple آلات پر پروسیسنگ لیٹنسی 10 ms سے کم ہے۔
AVAudioEngine کی ایک اضافی صلاحیت AVAudioUnitEQ اور AVAudioUnitMixer کے ذریعے آواز کا تجزیہ ہے۔ ڈویلپر کسی بھی آڈیو سٹریم میں ایکولائزر، کمپریسر اور لمیٹر شامل کر سکتا ہے۔ میوزک ایپلی کیشنز کے لیے، AVFoundation MIDI فائل پلے بیک کے لیے AVAudioSequencer اور اسپیچ سنتھیسس کے لیے AVSpeechSynthesizer فراہم کرتا ہے۔ تمام اجزاء ایک ہی آڈیو گراف میں کام کرتے ہیں، جو Apple آلات پر کیپچر اور پروسیسنگ کے درمیان 5 ms سے کم لیٹنسی فراہم کرتا ہے۔
AVFoundation کے ساتھ کام کرتے وقت سسٹم اجازتوں پر غور کرنا ضروری ہے: کیمرہ تک رسائی کے لیے Info.plist میں NSCameraUsageDescription درکار ہے، اور مائیکروفون کے لیے NSMicrophoneUsageDescription۔ AVFoundation خود بخود ڈیوائس تک پہلی رسائی کی کوشش پر سسٹم اجازت ڈائیلاگ دکھاتا ہے۔ صارف کا انکار AVCaptureDevice.authorizationStatus() کے ذریعے ہینڈل کیا جاتا ہے، جو سیٹنگز میں جانے کی تجویز کے ساتھ کیمرہ کی عدم دستیابی کے بارے میں مناسب پیغام دکھانے کی اجازت دیتا ہے۔
AVFoundation پروجیکٹ کی Capabilities میں Audio Background Mode کے ذریعے بیک گراؤنڈ آڈیو پلے بیک کو سپورٹ کرتا ہے۔ فعال کرنے کے لیے، UIBackgroundModes Info.plist میں audio انٹری شامل کریں اور AVAudioSession کو .playback کیٹیگری کے ساتھ کنفیگر کریں۔ ویڈیو ڈیفالٹ طور پر بیک گراؤنڈ میں نہیں چلتی، لیکن آپ iPad پر منیمائزڈ ایپ میں ویڈیو پلے بیک جاری رکھنے کے لیے پکچر ان پکچر موڈ کے ساتھ AVPlayer استعمال کر سکتے ہیں۔ PiP موڈ آئیکن پروٹوکول ڈیلیگیٹ کے ساتھ AVPictureInPictureController کے ذریعے کنفیگر کیا جاتا ہے۔
اکثر پوچھے گئے سوالات
iOS 4+ بنیادی پلے بیک اور کیپچر کے لیے۔ iOS 8+ AVAudioEngine کے لیے۔ iOS 17+ HDR موڈ میں AVAssetWriter کے لیے۔ فریم ورک کا موجودہ ورژن تمام iPhone، iPad اور Mac آلات پر سپورٹ کیا جاتا ہے۔
جی ہاں، AVPlayer HLS (HTTP Live Streaming) کو سپورٹ کرتا ہے — Apple کا بنیادی سٹریمنگ پروٹوکول۔ سرور کو میڈیا بھیجنے کے لیے، URLSession پر کسٹم پروٹوکول کے ساتھ AVAssetWriter استعمال کریں۔
AVFoundation میڈیا کے ساتھ کام کرنے کے لیے ایک نچلی سطح کا فریم ورک ہے۔ AVKit AVFoundation کے اوپر ایک پرت ہے جو تیار یوزر انٹرفیس اجزاء فراہم کرتی ہے: AVPlayerViewController، AVPictureInPictureController اور AVPipView۔
جی ہاں، iOS 11 سے AVFoundation پلے بیک کے لیے FLAC (Free Lossless Audio Codec) کو سپورٹ کرتا ہے۔ ALAC (Apple Lossless) iOS 4 سے سپورٹ کیا جاتا ہے۔ دونوں کوڈیک AVAudioPlayer اور AVPlayer کے ذریعے کام کرتے ہیں۔
ReplayKit سے RPScreenRecorder کے ذریعے، جو اندرونی طور پر AVFoundation استعمال کرتا ہے۔ iOS 9 سے، سکرین ریکارڈنگ اختیاری مائیکروفون کے ساتھ RPScreenRecorder.shared().startRecording() کے ذریعے دستیاب ہے۔
خلاصہ
ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے
IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔
مزید پڑھیں