AVPlayer — کلیدی تصورات، خصوصیات اور استعمال

مصنف: IT Sectr اشاعت: 2026-05-23 مطالعے کا وقت: 9 منٹ

AVPlayer Apple کا ایک میڈیا پلیئر فریم ورک ہے، جو AVFoundation کا حصہ ہے، اور iOS، macOS، tvOS اور visionOS پر آڈیو اور ویڈیو پلے بیک فراہم کرتا ہے۔ AVPlayer مقامی MP4 فائلوں سے لے کر انکولی HLS سٹریمز تک — Apple Silicon چپس پر ہارڈویئر سے تیز رفتار ڈی کوڈنگ کے ساتھ ایک یونیفائیڈ API کے ذریعے فارمیٹس کی ایک وسیع رینج کو سپورٹ کرتا ہے۔ Apple WWDC (2024) کے مطابق، AVPlayer میڈیا کے ساتھ کام کرنے والی 90% iOS ایپلیکیشنز میں استعمال ہوتا ہے، بشمول Apple TV، Music اور Photos۔

اہم نکات

  • AVPlayer — تمام Apple پلیٹ فارمز کے لیے AVFoundation سے Apple کا میڈیا پلیئر فریم ورک۔
  • ہارڈویئر ایکسلریشن — AVPlayer GPU پر ڈی کوڈنگ کے لیے VideoToolbox استعمال کرتا ہے، بجلی کی کھپت کم کرتا ہے۔
  • HLS — خودکار انکولی بٹریٹ سوئچنگ کے ساتھ مقامی HTTP Live Streaming سپورٹ۔
  • Picture in Picture — iPad، iPhone اور Mac پر پکچر اِن پکچر موڈ کے لیے بلٹ ان سپورٹ۔
  • DRM — پریمیم مواد کے تحفظ کے لیے FairPlay Streaming کے ساتھ انضمام۔

AVPlayer کیا ہے؟

AVPlayer AVFoundation فریم ورک کا مرکزی جزو ہے، جو تمام Apple پلیٹ فارمز پر ملٹی میڈیا پلے بیک کا ذمہ دار ہے۔ iOS 4.0 (2010) میں متروک MPMoviePlayerController کے متبادل کے طور پر متعارف کرایا گیا، AVPlayer ڈی کوڈنگ پیرامیٹرز کی باریک ٹیوننگ، آڈیو-ویڈیو سنکرونائزیشن، اور AirPlay اور Picture in Picture جیسی سسٹم سروسز کے ساتھ انضمام کے ساتھ پلے بیک پر نچلی سطح کا کنٹرول فراہم کرتا ہے۔

تیسرے فریق کے پلیئرز کے برعکس، AVPlayer Apple Silicon چپس پر ہارڈویئر ایکسلریشن سے فائدہ اٹھاتا ہے۔ ویڈیو ڈی کوڈنگ وقف M-سیریز میڈیا انجن (Media Engine) کا استعمال کرتے ہوئے VideoToolbox کے ذریعے کی جاتی ہے، جو کم سے کم بجلی کی کھپت کے ساتھ 8K HDR پلے بیک کو قابل بناتی ہے۔ HEVC (H.265) اور ProRes کے لیے، ڈی کوڈنگ CPU پر بوجھ ڈالے بغیر خصوصی چپ بلاکس پر ہوتی ہے۔

AVPlayer Apple ایکو سسٹم کے ساتھ مضبوطی سے مربوط ہے: آلات کے درمیان پلے بیک منتقل کرنے کے لیے Handoff سپورٹ، Apple TV پر سٹریم کرنے کے لیے AirPlay 2، متحرک ہیڈ ٹریکنگ کے ساتھ مقامی آڈیو، اور MPNowPlayingInfoCenter کے ذریعے سسٹم کنٹرول عناصر کے ساتھ سنکرونائزیشن۔ یہ انضمام AVPlayer کو Apple پلیٹ فارمز پر میڈیا کے ساتھ کام کرنے والی تمام ایپلیکیشنز کے لیے ڈی فیکٹو معیار بناتے ہیں۔

AVFoundation اور کلاس کا درجہ بندی

AVFoundation فریم ورک پلے بیک کے لیے تین سطحی درجہ بندی فراہم کرتا ہے: AVAsset (میٹا ڈیٹا اور مواد کی معلومات)، AVPlayerItem (کسی مخصوص مواد کی مثال کی حالت اور انتظام)، اور AVPlayer (پلے بیک کنٹرول)۔ یہ آرکیٹیکچر میٹا ڈیٹا لوڈنگ، پلے بیک کی تیاری، اور پلے بیک کے عمل کو الگ کرتا ہے — جو متعدد بٹریٹ آپشنز والی HLS سٹریمز کے لیے خاص طور پر اہم ہے۔

AVAsset ایک میڈیا مواد کے ماڈل — ایک فائل یا سٹریم — کی نمائندگی کرتا ہے۔ AVAsset خود سے چلانے کے قابل نہیں ہے؛ اس میں ٹریک (AVAssetTrack)، میٹا ڈیٹا (commonMetadata)، دورانیے کی معلومات اور دیگر خصوصیات ہوتی ہیں۔ AVAsset سے AVPlayerItem بنایا جاتا ہے، جسے پھر پلے بیک کے لیے AVPlayer کو بھیجا جا سکتا ہے۔

AVPlayer کی اہم خصوصیات

AVPlayer زیادہ تر پلے بیک منظرناموں کو کور کرنے والی صلاحیتوں کا ایک سیٹ فراہم کرتا ہے — سادہ فائل پلے بیک سے لے کر DRM کے ساتھ پیچیدہ لائیو براڈکاسٹ تک۔ آئیے استعمال کی مثالوں کے ساتھ اہم خصوصیات کو دریافت کریں۔

خصوصیتتفصیلپلیٹ فارمز
مقامی فائلیںMP4، MOV، M4V، AVI، MKV (ایکسٹینشن کے ذریعے)iOS، macOS، tvOS
HLSانکولی ABR کے ساتھ HTTP Live Streamingتمام Apple پلیٹ فارمز
FairPlay DRMسٹریمنگ لائسنس کے ساتھ محفوظ HLS موادiOS، tvOS، macOS
Picture in Pictureدیگر ایپس کے اوپر تیرتی ویڈیو ونڈوiPad، iPhone (iOS 14+)، Mac
AirPlay 2Apple TV اور اسپیکرز پر وائرلیس سٹریمنگتمام پلیٹ فارمز
مقامی آڈیوDolby Atmos اور متحرک ہیڈ ٹریکنگiOS 15+، macOS 13+
HDRDolby Vision، HDR10، HLG ڈسپلے سپورٹ کے ساتھiOS 11+، macOS 10.13+

HLS سپورٹ اور انکولی سوئچنگ

AVPlayer کو اضافی لائبریریوں کی ضرورت کے بغیر مقامی HLS سپورٹ حاصل ہے۔ HLS سٹریم چلاتے وقت، AVPlayer Apple پلیٹ فارمز کے لیے موزوں ایک بلٹ ان ABR الگورتھم کا استعمال کرتے ہوئے خود بخود انکولی بٹریٹ سوئچنگ کو ہینڈل کرتا ہے۔ الگورتھم صرف نیٹ ورک بینڈوڈتھ ہی نہیں بلکہ ڈیوائس کی تھرمل حالت کو بھی مدنظر رکھتا ہے — زیادہ گرم ہونے پر، AVPlayer CPU لوڈ کم کرنے کے لیے بٹریٹ کم کر سکتا ہے۔

FairPlay Streaming کے ساتھ HLS سٹریمز کے لیے، AVPlayer خود بخود AVContentKeySession ڈیلیگیٹ کے ذریعے لائسنس کے حصول اور تجدید کو ہینڈل کرتا ہے۔ ڈیولپر کو AVContentKeySessionDelegate پروٹوکول لاگو کرنا ہوتا ہے، جسے پلیئر اس وقت کال کرتا ہے جب ڈکرپشن کلید حاصل کرنے یا تجدید کرنے کی ضرورت ہوتی ہے۔ Apple پلیٹ فارمز پر HLS مواد کی حفاظت کا یہی واحد طریقہ ہے، کیونکہ Widevine iOS پر سپورٹ نہیں ہے۔

Picture in Picture

PiP ایک موڈ ہے جو صارفین کو ایپس کے درمیان سوئچ کرتے وقت تیرتی ونڈو میں ویڈیو دیکھتے رہنے کی اجازت دیتا ہے۔ iPad اور iPhone (iOS 14+) پر، AVPlayer اس موڈ کو فعال کرنے کے لیے AVPictureInPictureController کے ساتھ مربوط ہوتا ہے۔ macOS 15+ پر، PiP بھی دستیاب ہے لیکن سسٹم مینیو یا پلیئر ونڈو میں بٹن کے ذریعے فعال کیا جاتا ہے۔

iOS ایپ میں AVPlayer کا استعمال کیسے کریں

AVPlayer کو iOS ایپ میں ضم کرنا دو طریقوں سے کیا جا سکتا ہے: اعلیٰ سطحی AVPlayerViewController کے ذریعے (معیاری منظرناموں کے لیے) یا براہ راست AVPlayer + AVPlayerLayer کے ذریعے (مکمل UI حسب ضرورت کے لیے)۔ آئیے Swift میں دونوں طریقوں کو دریافت کریں۔

AVPlayerViewController کے ذریعے انضمام

AVPlayerViewController ایک ریڈی ٹو یوز UI جزو ہے جو بلٹ ان کنٹرولز فراہم کرتا ہے: پلے/پاز، تلاش، والیوم، AirPlay، PiP اور فل سکرین موڈ۔ کم سے کم انضمام کے لیے کوڈ کی صرف چند لائنیں درکار ہیں: AVPlayer مثال بنائیں، اسے AVPlayerViewController کو بھیجیں اور کنٹرولر کو سکرین پر ڈسپلے کریں۔

swift
import AVKit

let url = URL(string: "https://example.com/video.mp4")!
let asset = AVAsset(url: url)
let playerItem = AVPlayerItem(asset: asset)
let player = AVPlayer(playerItem: playerItem)

let controller = AVPlayerViewController()
controller.player = player
controller.allowsPictureInPicturePlayback = true

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

AVPlayerLayer کے ذریعے براہ راست انضمام

کسٹم UI والی ایپس کے لیے، AVPlayerLayer استعمال کریں — ایک Core Animation پرت جو کسی بھی UIView کے اندر ویڈیو رینڈر کرتی ہے۔ یہ طریقہ انٹرفیس پر مکمل کنٹرول دیتا ہے: آپ کسٹم کنٹرولز، اینیمیشنز شامل کر سکتے ہیں اور ویڈیو کے اوپر اضافی پرتیں لگا سکتے ہیں۔

swift
class VideoPlayerView: UIView {

    var player: AVPlayer? {
        get { (layer as! AVPlayerLayer).player }
        set { (layer as! AVPlayerLayer).player = newValue }
    }

    override class var layerClass: AnyClass {
        AVPlayerLayer.self
    }
}

// استعمال:
let playerView = VideoPlayerView(frame: view.bounds)
playerView.player = AVPlayer(url: url)
view.addSubview(playerView)

AVPlayer لائف سائیکل مینجمنٹ

ایپ کے استحکام کے لیے مناسب پلیئر لائف سائیکل مینجمنٹ ضروری ہے۔ AVPlayer کو سکرین ظاہر ہونے پر بنایا جانا چاہیے اور بند ہونے پر ریلیز کیا جانا چاہیے۔ جب ایپ بیک گراؤنڈ میں جاتی ہے، تو وسائل بچانے اور غیر ضروری بیک گراؤنڈ پلے بیک کے لیے App Review جرمانے سے بچنے کے لیے پلے بیک کو روکنے کی سفارش کی جاتی ہے۔

AVPlayerLayer اور ویڈیو ڈسپلے

AVPlayerLayer ایک Core Animation پرت ہے جو CALayer سے وراثت پاتی ہے اور سکرین پر ویڈیو رینڈر کرتی ہے۔ UIView کے برعکس، AVPlayerLayer Metal یا OpenGL کے ذریعے براہ راست GPU کے ساتھ کام کرتی ہے، کم سے کم فریم آؤٹ پٹ لیٹنسی کو یقینی بناتی ہے۔ کسٹم پلے بیک انٹرفیس لاگو کرنے کے لیے AVPlayerLayer کو سمجھنا ضروری ہے۔

videoGravity کنفیگریشن

videoGravity خاصیت یہ طے کرتی ہے کہ ویڈیو پرت کی حدود میں کیسے فٹ ہوتی ہے۔ AVLayerVideoGravity.resizeAspect (سیاہ باروں کے ساتھ تناسب برقرار رکھنا) AVPlayerViewController کے لیے ڈیفالٹ ہے۔ resizeAspectFill (کراپنگ کے ساتھ پوری سکرین بھرنا) فل سکرین موڈ کے لیے استعمال ہوتا ہے۔ resize (پرت کے سائز میں فٹ ہونے کے لیے تناسب کو بگاڑنا) شاذ و نادر ہی استعمال ہوتا ہے، زیادہ تر تجزیاتی ایپلیکیشنز کے لیے۔

مین تھریڈ سنکرونائزیشن

AVPlayerLayer ویڈیو کو ریئل ٹائم میں رینڈر کرتی ہے، لیکن تمام پلیئر آپریشنز (شروع، روکنا، تلاش) مین تھریڈ پر انجام دینے چاہئیں۔ مشاہدے کے لیے کلیدی قدریں — timeControlStatus، rate، status اور error — KVO (Key-Value Observing) یا iOS 16 میں Swift Concurrency سپورٹ کے ساتھ AVPlayer طریقوں کے ذریعے متعارف کردہ جدید async/await API کے ذریعے ٹریک کی جاتی ہیں۔

swift
let player = AVPlayer(url: url)
let statusObservation = player.observe(
    \.status,
    options: [.new, .initial]
) { player, _ in
    switch player.status {
    case .readyToPlay:
        player.play()
    case .failed:
        handleError(player.error)
    default:
        break
    }
}

سب ٹائٹل اور متبادل ٹریک سپورٹ

AVPlayer VTT، CEA-608 اور ITT (iTunes Timed Text) فارمیٹس میں ایمبیڈڈ سب ٹائٹلز کو سپورٹ کرتا ہے۔ آڈیو ٹریک اور سب ٹائٹل کا انتخاب AVMediaSelectionGroup اور AVMediaSelectionOption کے ذریعے کیا جاتا ہے۔ صارف کی سب ٹائٹل سیٹنگز (فونٹ، سائز، رنگ) سسٹم ایکسیسبیلٹی سیٹنگز سے پڑھی جاتی ہیں اور کوڈ میں واضح طور پر متعین نہ ہونے پر خود بخود AVPlayerLayer پر لاگو ہوتی ہیں۔

پلے بیک مینجمنٹ اور جدید منظرنامے

پروڈکشن ایپلیکیشنز کے لیے، بنیادی AVPlayer انضمام میں اکثر اضافی کنفیگریشن کی ضرورت ہوتی ہے: HLS سیگمنٹ کیشنگ، FairPlay DRM انضمام، Now Playing سسٹم انضمام اور کسٹم بٹریٹ سلیکشن الگورتھم۔

AVAssetResourceLoader کے ذریعے HLS کیشنگ

AVAssetResourceLoader HLS سیگمنٹ لوڈنگ کو روکنے اور کیشنگ لاگو کرنے کا واحد طریقہ ہے۔ AVAssetResourceLoaderDelegate کیز اور سیگمنٹس کے لیے لوڈنگ کی درخواستیں وصول کرتا ہے، انہیں مقامی طور پر ذخیرہ کرنے اور بعد کی درخواستوں پر کیش سے واپس کرنے کی اجازت دیتا ہے۔ یہ غیر مستحکم نیٹ ورک حالات میں کام کرنے والی ایپلیکیشنز کے لیے خاص طور پر مفید ہے۔

swift
let asset = AVURLAsset(url: hlsURL)
asset.resourceLoader.setDelegate(
    resourceLoaderDelegate,
    queue: DispatchQueue(label: "com.app.resourceloader")
)
let playerItem = AVPlayerItem(asset: asset)

FairPlay Streaming — DRM انضمام

FairPlay Streaming (FPS) HLS مواد کے تحفظ کے لیے Apple کا معیار ہے۔ FPS کو ضم کرنے کے لیے، آپ کو AVContentKeySessionDelegate پروٹوکول لاگو کرنا ہوگا، جو ڈکرپشن کیز کی درخواستوں کو ہینڈل کرتا ہے۔ اس عمل میں شامل ہیں: پلیئر سے SPC (سرور پلے بیک سیاق) حاصل کرنا، اسے لائسنس سرور پر بھیجنا، CKC (مواد کی کلید کا سیاق) وصول کرنا اور اسے AVContentKeySession کو واپس بھیجنا۔

swift
class DRMDelegate: NSObject, AVContentKeySessionDelegate {

    func contentKeySession(
        _ session: AVContentKeySession,
        didProvide keyRequest: AVContentKeyRequest
    ) {
        // 1. keyRequest سے SPC حاصل کریں
        // 2. SPC لائسنس سرور پر بھیجیں
        // 3. CKC حاصل کریں اور keyRequest.processContentKeyResponse کو بھیجیں
    }
}

Now Playing اور سسٹم کنٹرولز

لاک سکرین، کنٹرول سینٹر اور Apple Watch پر موجودہ پلے بیک کی معلومات ظاہر کرنے کے لیے، MediaPlayer.framework سے MPNowPlayingInfoCenter استعمال کریں۔ AVPlayer خود بخود Now Playing کو اپ ڈیٹ نہیں کرتا — ڈیولپر کو پلے بیک کی حالت بدلنے پر دستی طور پر میٹا ڈیٹا (عنوان، آرٹسٹ، آرٹ ورک، پیش رفت) سیٹ کرنا ہوتا ہے۔ پیش رفت کی اپ ڈیٹس کے لیے ایک باقاعدہ ٹائمر یا observe(\.timeControlStatus) استعمال کیا جاتا ہے۔

Remote Command Center ایک اور سسٹم سروس ہے جو لاک سکرین، AirPods اور CarPlay سے پلے بیک کو کنٹرول کرنے کی اجازت دیتی ہے۔ MPRemoteCommandCenter play، pause، nextTrack، previousTrack، changePlaybackPosition اور skipForward/skipBackward کمانڈز کے لیے ہینڈلر رجسٹر کرتا ہے۔ AVPlayer ان کمانڈز کو خود بخود ہینڈل نہیں کرتا — ڈیولپر کو انہیں player.play()، player.pause() اور player.seek() کالز سے جوڑنا ہوتا ہے۔

اکثر پوچھے گئے سوالات

AVPlayer AVAudioPlayer سے کیسے مختلف ہے؟

AVPlayer سٹریمنگ، HLS، DRM اور سسٹم کنٹرولز کے ساتھ سنکرونائزیشن کے سپورٹ کے ساتھ ایک یونیورسل آڈیو اور ویڈیو پلیئر ہے۔ AVAudioPlayer سٹریمنگ یا ہارڈویئر ویڈیو ایکسلریشن کے بغیر مقامی آڈیو فائل پلے بیک کے لیے ایک سادہ آڈیو پلیئر ہے۔ ویڈیو اور HLS کے لیے، AVPlayer استعمال کریں؛ سادہ آڈیو کے لیے، AVAudioPlayer استعمال کریں۔

کیا AVPlayer YouTube پلے بیک کو سپورٹ کرتا ہے؟

نہیں، AVPlayer براہ راست YouTube مواد لوڈنگ کو سپورٹ نہیں کرتا، کیونکہ YouTube DASH اور ملکیتی فارمیٹس پر مبنی اپنا پلیئر استعمال کرتا ہے۔ iOS ایپ میں YouTube کو ضم کرنے کے لیے، WKWebView یا آفیشل youtube-ios-player-helper لائبریری کے ذریعے YouTube IFrame Player API استعمال کریں۔

AVPlayer کے ساتھ بیک گراؤنڈ آڈیو پلے بیک کیسے لاگو کریں؟

بیک گراؤنڈ آڈیو کے لیے، اپنے Xcode پروجیکٹ کی بیک گراؤنڈ موڈز میں Audio, AirPlay and Picture in Picture شامل کریں۔ AVAudioSession کو .playback زمرے کے ساتھ کنفیگر کریں: try AVAudioSession.sharedInstance().setCategory(.playback)۔ AVPlayer بیک گراؤنڈ میں چلتا رہے گا، اور لاک سکرین اور کنٹرول سینٹر MPNowPlayingInfoCenter کے ذریعے کنٹرولز ڈسپلے کریں گے۔

AVPlayer YouTube، Vimeo یا Twitter سے ویڈیو کیوں نہیں چلاتا؟

یہ خدمات DRM تحفظ اور اپنے پلیئر حل استعمال کرتی ہیں۔ AVPlayer صرف براہ راست میڈیا فائل URL یا HLS پلے لسٹ کے ذریعے مواد چلا سکتا ہے۔ YouTube اور اسی طرح کے پلیٹ فارمز کی ویڈیوز iframe یا JavaScript پلیئرز میں لپٹی ہوتی ہیں جو AVPlayer کے ساتھ مطابقت نہیں رکھتیں۔ ڈسپلے کے لیے ان کے آفیشل SDK یا WebView استعمال کریں۔

AVPlayer کے ذریعے لائیو سٹریمنگ میں تاخیر کیسے کم کریں؟

کم تاخیر والی HLS کے لیے، AVPlayerItem کو preferredForwardBufferDuration = 2.0 (سیکنڈ) کے ساتھ کنفیگر کریں اور لائیو ایج سے پیچھے رہنے پر خود بخود روکنے کا انتظام کریں: player.currentItem?.configuredTimeOffsetFromLive اور player.currentItem?.canPlayReverse استعمال کریں۔ Apple سرور اور کلائنٹ دونوں پر درست کنفیگریشن کے ساتھ 2-4 سیکنڈ تاخیر کے ساتھ LL-HLS کی سفارش کرتا ہے۔

خلاصہ

  • AVPlayer — iOS، macOS، tvOS اور visionOS کے لیے Apple Silicon پر ہارڈویئر ایکسلریشن کے ساتھ Apple کا یونیورسل میڈیا پلیئر۔
  • HLS — اضافی لائبریریوں کے بغیر خودکار انکولی بٹریٹ سوئچنگ کے ساتھ مقامی سپورٹ۔
  • FairPlay Streaming — Apple پلیٹ فارمز پر محفوظ HLS کے لیے واحد DRM سسٹم۔
  • انضمام — فوری شروع کرنے کے لیے AVPlayerViewController یا کسٹم UI کے لیے AVPlayerLayer۔
  • کیشنگ HLS سیگمنٹ کی درخواستوں کو روک کر AVAssetResourceLoaderDelegate کے ذریعے لاگو کی جاتی ہے۔
  • Now Playing — MPNowPlayingInfoCenter کے ذریعے کنٹرول سینٹر اور لاک سکرین کے لیے دستی میٹا ڈیٹا اپ ڈیٹس۔
  • سفارش کردہ HLS ضروریات والے Apple پلیٹ فارمز پر تمام میڈیا پروجیکٹس کے لیے AVPlayer استعمال کرنے کی سفارش کی جاتی ہے۔

ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے

IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔

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

مزید پڑھیں