AVPlayerViewController: यह क्या है, iOS में एकीकरण के तरीके

लेखक: IT Sectr प्रकाशित: 2026-05-23 पढ़ने का समय: 8 मिनट

AVPlayerViewController Apple इकोसिस्टम में एक अंतर्निर्मित वीडियो प्लेयर कंट्रोलर है, जो iOS और tvOS पर मीडिया सामग्री चलाने के लिए डिज़ाइन किया गया है। यह कस्टम UI लिखने की आवश्यकता के बिना नियंत्रण, उपशीर्षक समर्थन और AirPlay के साथ एक पूर्ण-स्क्रीन इंटरफ़ेस प्रदान करता है। Apple Developer दस्तावेज़ीकरण, 2026 के अनुसार, AVPlayerViewController कोड की कुछ पंक्तियों में एकीकृत होता है और HLS, MP4 और अधिकांश मीडिया प्रारूपों का समर्थन करता है।

मुख्य बिंदु

  • AVPlayerViewController iOS और tvOS के लिए AVKit फ्रेमवर्क से मानक वीडियो प्लेबैक कंट्रोलर है।
  • यह एक नियंत्रण पट्टी, प्लेबैक बटन और प्रगति संकेतक के साथ एक तैयार उपयोगकर्ता इंटरफ़ेस प्रदान करता है।
  • कंट्रोलर स्वचालित रूप से उपशीर्षक, ऑडियो ट्रैक, AirPlay और Picture in Picture का समर्थन करता है।
  • एकीकरण AVPlayer के माध्यम से किया जाता है — प्लेबैक प्रबंधन के लिए मूल ऑब्जेक्ट।
  • डेवलपर नियंत्रण के प्रदर्शन को अनुकूलित कर सकते हैं, ओवरले व्यू जोड़ सकते हैं और डेलिगेट के माध्यम से ईवेंट हैंडल कर सकते हैं।

AVPlayerViewController क्या है?

AVPlayerViewController AVKit फ्रेमवर्क का एक घटक है जो Apple अनुप्रयोगों में वीडियो चलाने के लिए एक तैयार इंटरफ़ेस प्रदान करता है। यह डेवलपर को शुरू से कस्टम प्लेयर बनाने की आवश्यकता से मुक्त करता है, मानक नियंत्रण प्रदान करता है: प्ले/पॉज़, स्क्रबिंग, वॉल्यूम समायोजन और पूर्ण-स्क्रीन मोड।

निचले स्तर के AVPlayerLayer के विपरीत, जिसके लिए मैन्युअल UI निर्माण की आवश्यकता होती है, AVPlayerViewController प्लेयर जीवनचक्र का पूरी तरह से प्रबंधन करता है। कंट्रोलर स्वचालित रूप से स्क्रीन रोटेशन को संभालता है, नॉच वाले iPhone पर सेफ एरिया के अनुकूल होता है और iPad पर मल्टीटास्किंग का समर्थन करता है।

Apple दस्तावेज़ीकरण (2026) के अनुसार, AVPlayerViewController AVPlayer और AVQueuePlayer के साथ संगत है, जो एकल फ़ाइलों और प्लेलिस्ट दोनों को चलाने की अनुमति देता है। स्थानीय स्टोरेज से URL, HLS नेटवर्क स्ट्रीम और एन्क्रिप्टेड FairPlay सामग्री समर्थित हैं।

AVPlayerViewController का इतिहास और संस्करण

यह घटक iOS 8 में AVKit के साथ पुराने MPMoviePlayerController के प्रतिस्थापन के रूप में दिखाई दिया। iOS 11 में Picture in Picture और उपशीर्षक प्रदर्शन के लिए समर्थन जोड़ा गया। iOS 14 में, कंट्रोलर को AVPlayerViewControllerDelegate के माध्यम से एक अनुकूलन योग्य ट्रांसपोर्ट बार मिला। iOS 16 से शुरू करके, प्लेयर को पुनः बनाए बिना गतिशील मीडिया फ़ाइल प्रतिस्थापन के लिए समर्थन शुरू किया गया।

आधुनिक AVPlayerViewController ProMotion डिस्प्ले के लिए अनुकूलित है — वीडियो फ्रेम दर स्वचालित रूप से स्क्रीन रिफ्रेश दर के साथ सिंक्रनाइज़ होती है। tvOS पर, घटक Siri Remote फोकस इंटरफ़ेस के अनुकूल होता है, और macOS पर QuickTime Player विंडो मोड के अनुकूल होता है।

AVPlayerViewController कैसे काम करता है

कंट्रोलर के मूल में AVPlayer और AVPlayerItem की जोड़ी है। AVPlayer प्लेबैक ऑब्जेक्ट है जो टाइमलाइन, गति और स्थिति का प्रबंधन करता है। AVPlayerItem एक विशिष्ट मीडिया फ़ाइल के चारों ओर एक रैपर है जिसमें मेटाडेटा, ट्रैक और लोडिंग जानकारी होती है।

प्रारंभ होने पर, AVPlayerViewController AVPlayer का एक संदर्भ प्राप्त करता है और स्वचालित रूप से वीडियो प्रदर्शित करने के लिए AVPlayerLayer बनाता है। कंट्रोलर readyToPlay, लोडिंग त्रुटियों और प्लेबैक पूर्णता जैसी स्थिति परिवर्तनों के बारे में AVPlayer KVO सूचनाओं की सदस्यता लेता है।

नियंत्रण (ट्रांसपोर्ट बार) टैप करने पर प्रदर्शित होते हैं। iOS 15+ में, वे AVPlayerViewControllerCustomizationDelegate के माध्यम से अनुकूलन का समर्थन करते हैं, जिससे मानक बटन छिपाए या बदले जा सकते हैं।

कंट्रोलर जीवनचक्र

कंट्रोलर बनाने और AVPlayer असाइन करने के बाद, viewDidLoad विधि कॉल की जाती है, जो वीडियो स्ट्रीम तैयार करना शुरू करती है। जब AVPlayerItem AVPlayerItemStatusReadyToPlay स्थिति में संक्रमण करता है, तो प्लेयर फ्रेम प्रदर्शित करने के लिए तैयार होता है। जब play() विधि कॉल की जाती है, तो Video Toolbox के माध्यम से वीडियो स्ट्रीम डिकोडिंग शुरू होती है।

स्क्रीन छोड़ने पर, कंट्रोलर स्वचालित रूप से प्लेबैक रोकता है और डिकोडर संसाधनों को मुक्त करता है। iOS 13+ पर, ऐप के छोटा होने पर प्लेबैक बनाए रखने के लिए, बैकग्राउंड मोड और ऑडियो सत्र कॉन्फ़िगर किया जाना चाहिए। WWDC 2024 के अनुसार, iOS मीडिया सेंटर के साथ सिंक्रनाइज़ेशन के लिए AVPlayerPlaybackCoordinator का उपयोग करने की अनुशंसा की जाती है।

AVPlayerViewController की मुख्य विशेषताएं

यह घटक बॉक्स से बाहर सुविधाओं का एक समृद्ध सेट प्रदान करता है, जो इसे अधिकांश परियोजनाओं के लिए आकर्षक बनाता है। नीचे प्रमुख क्षमताएं दी गई हैं जिनके लिए अतिरिक्त कोड की आवश्यकता नहीं है।

  • ट्रांसपोर्ट बार प्ले/पॉज़, 15-सेकंड स्किप, वॉल्यूम नियंत्रण और प्रगति स्लाइडर के साथ।
  • उपशीर्षक समर्थन — VTT, SRT और iTunes Timed Text प्रारूपों में एम्बेडेड और बाहरी उपशीर्षक का स्वचालित प्रदर्शन।
  • AirPlay — Apple TV और अन्य AirPlay-संगत उपकरणों पर वीडियो स्ट्रीम करने की क्षमता।
  • Picture in Picture — एक विशेष बटन टैप करने पर फ्लोटिंग विंडो में प्लेबैक (iPad और iPhone पर iOS 14+ के साथ)।
  • पूर्ण-स्क्रीन मोड — डिवाइस घुमाने और बड़ा करने वाले बटन पर टैप करने पर स्वचालित स्विचिंग।
  • गति नियंत्रण — प्लेबैक गति चुनने के लिए अंतर्निर्मित नियंत्रण (0.5x, 1.0x, 1.5x, 2.0x)।
  • संरक्षित सामग्री — DRM के साथ HLS सामग्री के लिए FairPlay Streaming का मूल समर्थन।

AVPlayerViewController ट्रांसपोर्ट बार

ट्रांसपोर्ट बार इंटरफ़ेस का निचला भाग है जिसमें मुख्य नियंत्रण बटन होते हैं। डिफ़ॉल्ट रूप से, बार उपयोगकर्ता की निष्क्रियता के 3 सेकंड बाद छिप जाता है और टैप करने पर दिखाई देता है। iOS 16+ में, व्यक्तिगत तत्वों की दृश्यता को नियंत्रित करने के लिए डेलिगेट का उपयोग किया जा सकता है।

डीबग मोड में, AVPlayerViewController.requiresLinearPlayback प्रॉपर्टी का उपयोग करके ट्रांसपोर्ट बार को जबरन दिखाया जा सकता है, जो वीडियो को रोके जाने से भी रोकता है। यह विज्ञापन ब्रेक और शैक्षिक सामग्री के लिए उपयोगी है।

अपने प्रोजेक्ट में AVPlayerViewController का एकीकरण

कंट्रोलर का बुनियादी एकीकरण कोड की 10 से अधिक पंक्तियाँ नहीं लेता है। पहले, मीडिया फ़ाइल URL के साथ एक AVPlayer इंस्टेंस बनाएं, फिर इसे AVPlayerViewController में पास करें और कंट्रोलर को स्क्रीन पर प्रदर्शित करें।

Swift में बुनियादी प्लेयर बनाना

swift
import AVKit

let player = AVPlayer(url: URL(string: "https://example.com/video.mp4")!)
let playerVC = AVPlayerViewController()
playerVC.player = player

present(playerVC, animated: true) {
    player.play()
}

present कॉल करने के बाद, कंट्रोलर पूर्ण स्क्रीन प्रदर्शित होता है। वीडियो नेटवर्क से लोड होना शुरू होता है, और एक बार बफर readyToPlay सीमा तक पहुंच जाता है, play() कॉल करने के बाद प्लेबैक स्वचालित रूप से शुरू होता है।

उन्नत नियंत्रण के लिए AVPlayerItem कॉन्फ़िगर करना

swift
let asset = AVAsset(url: videoURL)
let item = AVPlayerItem(asset: asset)

let metadata = AVMutableMetadataItem()
metadata.key = AVMetadataKey.commonKeyTitle
metadata.value = "मेरा वीडियो"
item.addMetadata(metadata)

let player = AVPlayer(playerItem: item)
let playerVC = AVPlayerViewController()
playerVC.player = player

AVPlayerItem का उपयोग करने से आपको मेटाडेटा, टाइमकोड, ऑडियो ट्रैक चयन और उपशीर्षक पर नियंत्रण मिलता है। AVPlayerItem के माध्यम से, आप status प्रॉपर्टी पर KVO का उपयोग करके लोडिंग प्रगति, बफरिंग और नेटवर्क त्रुटियों की निगरानी भी कर सकते हैं।

नियंत्रणों को अनुकूलित करना

iOS 11 से शुरू करके, डेवलपर AVPlayerViewControllerDelegate प्रोटोकॉल के माध्यम से ट्रांसपोर्ट बार को अनुकूलित कर सकते हैं। playerViewController(_:willBeginFullScreenPresentationWithAnimationCoordinator:) विधि पूर्ण-स्क्रीन मोड में प्रवेश करने से पहले कॉल की जाती है और UI तैयार करने की अनुमति देती है।

व्यक्तिगत बटन छिपाने के लिए, AVPlayerViewController.showsPlaybackControls प्रॉपर्टी का उपयोग करें। यदि false पर सेट किया जाता है, तो ट्रांसपोर्ट बार पूरी तरह से गायब हो जाता है, केवल वीडियो स्ट्रीम छोड़ता है। कस्टम ओवरले तत्वों के लिए उपयोगी।

डेलिगेट का उपयोग करके अनुकूलन

swift
class CustomPlayerViewController: UIViewController {
    private let playerVC = AVPlayerViewController()

    override func viewDidLoad() {
        super.viewDidLoad()
        playerVC.delegate = self
        playerVC.showsPlaybackControls = true
        playerVC.entersFullScreenWhenPlaybackBegins = true
    }
}

extension CustomPlayerViewController: AVPlayerViewControllerDelegate {
    func playerViewController(
        _ playerViewController: AVPlayerViewController,
        willBeginFullScreenPresentationWithAnimationCoordinator coordinator: UIViewControllerTransitionCoordinator
    ) {
        // ओवरले बटन जोड़ें
    }

    func playerViewController(
        _ playerViewController: AVPlayerViewController,
        didUpdate legibleMediaSelection: AVMediaSelectionGroup
    ) {
        print("नई उपशीर्षक भाषा चयनित")
    }
}

डेलिगेट उपशीर्षक परिवर्तन ईवेंट, पूर्ण-स्क्रीन मोड में प्रवेश और बाहर निकलने, साथ ही Picture in Picture शुरू और समाप्त करने को इंटरसेप्ट करने की अनुमति देता है। WWDC 2024 में, Apple ने विश्लेषण के लिए डेलिगेट का उपयोग करने की अनुशंसा की — प्रत्येक संक्रमण को 100 ms के भीतर लॉग करें।

उपशीर्षक और ऑडियो ट्रैक के साथ काम करना

AVPlayerViewController स्वचालित रूप से सभी उपलब्ध उपशीर्षक और ऑडियो ट्रैक प्रदर्शित करता है यदि वे मीडिया फ़ाइल में एम्बेडेड हैं या HLS मेनिफेस्ट में निर्दिष्ट हैं। उपयोगकर्ता ट्रांसपोर्ट बार में उपशीर्षक आइकन पर टैप करने पर दिखाई देने वाले मेनू के माध्यम से उन्हें स्विच कर सकते हैं।

HLS स्ट्रीम के लिए, M3U8 मेनिफेस्ट में उपलब्ध भाषा वेरिएंट की एक सूची होती है। AVPlayer संबंधित WebVTT उपशीर्षक सेगमेंट लोड करता है और उन्हें रेंडरिंग के लिए AVPlayerLayer में पास करता है। iOS 16+ ने AVTextStyleRule के माध्यम से उपशीर्षक स्टाइलिंग समर्थन पेश किया।

प्रोग्रामेटिक ऑडियो ट्रैक चयन

swift
func selectAudioTrack(languageCode: String) {
    guard let group = player.currentItem?
        .asset.mediaSelectionGroup(forMediaCharacteristic: AVMediaCharacteristic.audible)
    else { return }

    for option in group.options {
        if option.extendedLanguageTag?.hasPrefix(languageCode) == true {
            player.currentItem?.select(option, in: group)
        }
    }
}

selectAudioTrack विधि audible समूह के ऑडियो विकल्पों में उस वेरिएंट की खोज करती है जिसका extendedLanguageTag वांछित भाषा कोड से मेल खाता है। यह बहुभाषी सामग्री वाले ऐप्स में “मूल ऑडियो” सुविधा को लागू करने की अनुमति देता है।

iPad पर Picture in Picture

Picture in Picture (PiP) मोड अन्य ऐप्स के ऊपर एक फ्लोटिंग विंडो में वीडियो प्रदर्शित करने की अनुमति देता है। iPad पर, यह सुविधा iOS 9 से उपलब्ध है, iPhone पर — iOS 14 से। AVPlayerViewController UIBackgroundModes की सदस्यता लेने पर स्वचालित रूप से ट्रांसपोर्ट बार में एक PiP बटन जोड़ता है।

PiP सक्रिय करने के लिए, Info.plist में audio और airplay मानों के साथ UIBackgroundModes कुंजी जोड़ें। उसके बाद, कंट्रोलर में एक PiP बटन दिखाई देता है, जिसे टैप करने पर वीडियो 192x108 पॉइंट की फ्लोटिंग विंडो में सिमट जाता है।

PiP ईवेंट डेलिगेट के माध्यम से हैंडल किए जाते हैं: playerViewController(_:willStartPictureInPictureFromFullScreen:) और playerViewController(_:didStopPictureInPicture:)। Apple HIG के अनुसार, सामग्री पठनीयता बनाए रखने के लिए न्यूनतम PiP विंडो आकार कम से कम 120x68 पॉइंट होना चाहिए।

अक्सर पूछे जाने वाले प्रश्न

क्या AVPlayerViewController YouTube वीडियो प्लेबैक का समर्थन करता है?

नहीं, YouTube वीडियो के लिए वेब व्यू WKWebView या YouTube iOS Helper लाइब्रेरी का उपयोग आवश्यक है, क्योंकि YouTube अपनी स्वयं की DRM प्रणाली का उपयोग करता है। AVPlayerViewController URL के माध्यम से प्रत्यक्ष मीडिया स्ट्रीम के लिए डिज़ाइन किया गया है।

मैं AVPlayerViewController ट्रांसपोर्ट बार को कैसे अक्षम करूं?

showsPlaybackControls प्रॉपर्टी को false पर सेट करें। उसके बाद, स्क्रीन खाली रहती है — केवल वीडियो स्ट्रीम। कस्टम बटन वापस लाने के लिए, कंट्रोलर के ऊपर addSubview के माध्यम से एक ओवरले जोड़ें।

क्या AVPlayerViewController HLS लाइव स्ट्रीम के साथ काम करता है?

हां, कंट्रोलर पूरी तरह से HLS Live का समर्थन करता है। ट्रांसपोर्ट बार प्रगति स्लाइडर के बजाय एक लाइव संकेतक दिखाता है। विलंबता HLS कॉन्फ़िगरेशन पर निर्भर करती है — कम-विलंबता सेटिंग्स के साथ न्यूनतम 6 सेकंड।

मैं AVPlayerViewController में वीडियो लोडिंग त्रुटियों को कैसे संभालूं?

AVPlayerItem.status प्रॉपर्टी पर KVO की सदस्यता लें। त्रुटि पर, स्थिति .failed में बदल जाती है। AVPlayerItem की error प्रॉपर्टी के माध्यम से विवरण प्राप्त करें और उपयोगकर्ता को समस्या समझाते हुए एक अलर्ट दिखाएं — अक्सर यह नेटवर्क समस्या या अमान्य URL होता है।

क्या मैं AVPlayerViewController में मेमोरी से वीडियो लोड कर सकता हूं?

हां, RAM से डेटा फीड करने के लिए कस्टम AVAssetResourceLoader के साथ AVAsset का उपयोग करें। AVAssetResourceLoaderDelegate को लागू करें और डिस्क से पढ़ने के बजाय बफर से बाइट्स लौटाएं।

सारांश

  • AVPlayerViewController न्यूनतम एकीकरण कोड के साथ iOS, iPadOS और tvOS पर वीडियो प्लेबैक के लिए एक तैयार AVKit घटक है।
  • कंट्रोलर बॉक्स से बाहर HLS, MP4, संरक्षित FairPlay सामग्री, उपशीर्षक और ऑडियो ट्रैक का समर्थन करता है।
  • बुनियादी उपयोग के लिए, बस एक AVPlayer बनाएं और इसे कंट्रोलर में पास करें — UI स्वचालित रूप से रेंडर होता है।
  • AVPlayerViewControllerDelegate ट्रांसपोर्ट बार को अनुकूलित करने, PiP और उपशीर्षक परिवर्तनों को संभालने की अनुमति देता है।
  • ट्रांसपोर्ट बार निष्क्रियता के 3 सेकंड बाद छिप जाता है, लेकिन showsPlaybackControls इसकी दृश्यता पर पूर्ण नियंत्रण देता है।
  • Picture in Picture के लिए, Info.plist में UIBackgroundModes audio और airplay सक्रिय होना चाहिए।
  • जब त्रुटियां हों, तो विवरण प्राप्त करने और उपयोगकर्ता को प्रदर्शित करने के लिए AVPlayerItem.status पर KVO का उपयोग करें।

हम एक मोबाइल एप्लिकेशन टर्नकी विकसित करेंगे

IT Sectr 2017 से स्टार्टअप और व्यवसायों के लिए iOS और Android एप्लिकेशन बनाता है। हम आपको सलाह देंगे और सर्वोत्तम समाधान प्रस्तावित करेंगे।

परियोजना पर चर्चा करें

यह भी पढ़ें