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 کے ساتھ مطابقت رکھتا ہے، جو ایک فائل اور پلے لسٹ دونوں کو چلانے کی اجازت دیتا ہے۔ مقامی اسٹوریج سے URLs, 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 ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔

پروجیکٹ پر بحث کریں

مزید پڑھیں