AVFoundation Apple का मल्टीमीडिया फ्रेमवर्क है जो iOS, macOS, tvOS और watchOS पर ऑडियो, वीडियो और इमेज के साथ काम करने का पूर्ण वर्कफ़्लो प्रदान करता है। यह कैमरा और माइक्रोफ़ोन से कैप्चर, मीडिया फ़ाइल प्लेबैक, ऑडियो ट्रैक एडिटिंग, रीयल-टाइम ध्वनि प्रोसेसिंग और नेटवर्क स्ट्रीमिंग को कवर करता है। Apple AVFoundation Documentation (2026) के अनुसार, यह फ्रेमवर्क मीडिया सामग्री के साथ काम करने वाले 90% App Store अनुप्रयोगों में उपयोग होता है।
मुख्य बातें
AVFoundation Apple का मौलिक मल्टीमीडिया फ्रेमवर्क है, जिसे iOS 4 (2010) में ऑडियो और वीडियो प्लेबैक के लिए पुराने UIWebView के प्रतिस्थापन के रूप में पेश किया गया था। तब से AVFoundation सभी प्रकार के मीडिया के साथ काम करने के लिए एक पूर्ण सुविधा संपन्न टूलसेट के रूप में विकसित हुआ है: सरल MP3 फ़ाइल प्लेबैक से लेकर मल्टी-चैनल माइक्रोफ़ोन के साथ पेशेवर वीडियो कैप्चर और रीयल-टाइम प्रभावों के माध्यम से ध्वनि परिवर्तन तक।
AVFoundation की आर्किटेक्चर कई मूलभूत अब्स्ट्रैक्शन के आसपास बनी है: AVAsset (मीडिया डेटा), AVPlayer (प्लेबैक), AVCaptureSession (कैप्चर) और AVAudioEngine (प्रोसेसिंग)। प्रत्येक घटक एसिंक्रोनस रूप से काम करता है, जो बड़ी फ़ाइलों को लोड करने या प्रोसेस करने के दौरान UI की स्मूथनेस बनाए रखने के लिए महत्वपूर्ण है। 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 नियंत्रणों के साथ तैयार UI प्रदान करता है: play/pause, scrubbing, 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 preset के साथ एक 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 और पिक्चर-इन-पिक्चर मोड के साथ एक अंतर्निहित UI प्रदान करता है। प्लेयर की स्थिति 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 के ऊपर एक परत है जो तैयार UI घटक प्रदान करता है: 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 एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।
यह भी पढ़ें