AVPlayerViewController: bu nədir, iOS-da inteqrasiya üsulları

Müəllif: IT Sectr Dərc olunub: 2026-05-23 Oxuma vaxtı: 8 dəq

AVPlayerViewController — Apple ekosistemində iOS və tvOS-da media məzmununu oxutmaq üçün nəzərdə tutulmuş daxili video pleyer kontrolleridir. O, xüsusi UI yazmağa ehtiyac olmadan tam ekran interfeysi, idarəetmə elementləri, altyazı dəstəyi və AirPlay təmin edir. Apple Developer Documentation, 2026-ya görə, AVPlayerViewController bir neçə sətir kodla inteqrasiya olunur və HLS, MP4 və əksər media formatlarını dəstəkləyir.

Əsas məqamlar

  • AVPlayerViewController — iOS və tvOS üçün AVKit freymvorkundan standart video oxutma kontrolleri.
  • O, idarəetmə paneli, oxutma düymələri və gedişat göstəricisi ilə hazır istifadəçi interfeysi təqdim edir.
  • Kontroller avtomatik olaraq altyazıları, audio trekləri, AirPlay və Picture in Picture-i dəstəkləyir.
  • İnteqrasiya AVPlayer vasitəsilə həyata keçirilir — oxutmanı idarə etmək üçün əsas obyekt.
  • Tərtibatçı idarəetmə elementlərinin göstərilməsini konfiqurasiya edə, overlay-view əlavə edə və hadisələri deleqat vasitəsilə emal edə bilər.

AVPlayerViewController nədir?

AVPlayerViewController — Apple tətbiqlərində video oxutmaq üçün hazır interfeys təmin edən AVKit freymvorkunun komponentidir. O, tərtibatçını sıfırdan xüsusi pleyer yaratmaq zərurətindən azad edərək standart idarəetmə elementləri təklif edir: play/pause, geri sarma, səs tənzimlənməsi və tam ekran rejimi.

Əl ilə UI qurmağı tələb edən aşağı səviyyəli AVPlayerLayer-dən fərqli olaraq, AVPlayerViewController pleyerin həyat dövrünü tam idarə edir. Kontroller avtomatik olaraq ekranın dönməsini idarə edir, kəsikli iPhone-da Safe Area-ya uyğunlaşır və iPad-də çoxtapşırıqlığı dəstəkləyir.

Apple Documentation (2026)-ya görə, AVPlayerViewController AVPlayer və AVQueuePlayer ilə uyğunlaşır, həm tək faylları, həm də pleylistləri oxutmağa imkan verir. Yerli yaddaşdan URL-lər, HLS şəbəkə axınları və şifrələnmiş FairPlay məzmunu dəstəklənir.

AVPlayerViewController-ın tarixi və versiyaları

Komponent iOS 8-də AVKit ilə birlikdə köhnəlmiş MPMoviePlayerController-ın əvəzi olaraq meydana çıxdı. iOS 11-də Picture in Picture dəstəyi və altyazıların göstərilməsi əlavə edildi. iOS 14-də kontroller AVPlayerViewControllerDelegate deleqatı vasitəsilə fərdiləşdirilə bilən nəqliyyat paneli aldı. iOS 16-dan başlayaraq, pleyeri yenidən yaratmadan media faylının dinamik dəyişdirilməsi dəstəyi ortaya çıxdı.

Müasir AVPlayerViewController ProMotion displeyləri üçün optimallaşdırılıb — video kadr sürəti avtomatik olaraq ekran yenilənmə tezliyi ilə sinxronlaşır. tvOS-da komponent Siri Remote fokus interfeysinə, macOS-da isə QuickTime Player pəncərə rejiminə uyğunlaşır.

AVPlayerViewController necə işləyir

Kontrollerin əsasında AVPlayerAVPlayerItem əlaqəsi dayanır. AVPlayer — zaman xəttini, sürəti və vəziyyəti idarə edən oxutma obyektidir. AVPlayerItem — metadatları, trekləri və yükləmə məlumatlarını ehtiva edən konkret media faylının üzərindəki qabıqdır.

İnisiallaşdırma zamanı AVPlayerViewController AVPlayer-a istinad alır və videonu göstərmək üçün avtomatik olaraq AVPlayerLayer yaradır. Kontroller AVPlayer-ın readyToPlay status dəyişikliyi, yükləmə xətaları və oxutmanın bitməsi barədə KVO bildirişlərinə abunə olur.

İdarəetmə elementləri (nəqliyyat paneli) ekrana toxunmaqla göstərilir. iOS 15+-də onlar AVPlayerViewControllerCustomizationDelegate vasitəsilə konfiqurasiyanı dəstəkləyərək standart düymələri gizlətməyə və ya əvəz etməyə imkan verir.

Kontrollerin həyat dövrü

Kontroller yaradıldıqdan və AVPlayer təyin edildikdən sonra video axınının hazırlanmasını işə salan viewDidLoad metodu çağırılır. AVPlayerItem AVPlayerItemStatusReadyToPlay statusuna keçdikdə, pleyer kadrları göstərməyə hazırdır. Play() metodu çağırıldıqda Video Toolbox vasitəsilə video axınının dekodlanması başlayır.

Ekrandan çıxarkən kontroller avtomatik olaraq oxutmanı dayandırır və dekoder resurslarını azad edir. iOS 13+-də tətbiq kiçildildikdə oxutmanı qorumaq üçün Background Modes və Audio Session konfiqurasiyası tələb olunur. WWDC 2024-ə görə, iOS media mərkəzi ilə sinxronizasiya üçün AVPlayerPlaybackCoordinator-dan istifadə etmək tövsiyə olunur.

AVPlayerViewController-ın əsas imkanları

Komponent qutudan çıxan kimi zəngin funksiyalar dəsti təmin edir ki, bu da onu əksər layihələr üçün cəlbedici edir. Aşağıda əlavə kod tələb etməyən əsas imkanlar verilmişdir.

  • Nəqliyyat paneli play/pause, 15 saniyə geri sarma, səs tənzimləyicisi və gedişat sürgüsü ilə.
  • Altyazı dəstəyi — VTT, SRT və iTunes Timed Text formatlarında daxili və xarici altyazıların avtomatik göstərilməsi.
  • AirPlay — videonu Apple TV və digər AirPlay uyğun cihazlara yayımlamaq imkanı.
  • Picture in Picture — xüsusi düyməyə basdıqda üzən pəncərədə oxutma (iOS 14+ olan iPad və iPhone-da).
  • Tam ekran rejimi — cihaz döndərildikdə və böyütmə düyməsinə toxunulduqda avtomatik keçid.
  • Sürət dəyişməsi — daxili oxutma sürəti seçimi (0.5x, 1.0x, 1.5x, 2.0x).
  • Qorunan məzmun — DRM ilə HLS məzmunu üçün FairPlay Streaming-in yerli dəstəyi.

AVPlayerViewController nəqliyyat paneli

Nəqliyyat paneli — əsas idarəetmə düymələrini ehtiva edən interfeysin aşağı hissəsidir. Standart olaraq panel istifadəçi hərəkətsizliyindən 3 saniyə sonra gizlənir və toxunmaqla görünür. iOS 16+-da deleqat vasitəsilə ayrı-ayrı elementlərin görünməsini idarə etmək olar.

Debug rejimində nəqliyyat paneli AVPlayerViewController.requiresLinearPlayback xassəsi vasitəsilə məcburi göstərilə bilər, bu da videonu dayandırmaq imkanını bloklayır. Bu reklam əlavələri və təhsil məzmunu üçün faydalıdır.

AVPlayerViewController-ın layihəyə inteqrasiyası

Kontrollerin əsas inteqrasiyası 10 sətir koddan çox çəkmir. Əvvəlcə media faylının URL-i ilə AVPlayer nümunəsi yaratmaq, sonra onu AVPlayerViewController-a ötürmək və kontrolleri ekranda göstərmək lazımdır.

Swift-də əsas pleyerin yaradılması

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 çağırıldıqdan sonra kontroller tam ekranda göstərilir. Video şəbəkədən yüklənməyə başlayır və bufer readyToPlay həddinə çatdıqda, play() çağırıldıqdan sonra avtomatik olaraq oxutma başlayır.

Təkmil idarəetmə üçün AVPlayerItem-ın konfiqurasiyası

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

let metadata = AVMutableMetadataItem()
metadata.key = AVMetadataKey.commonKeyTitle
metadata.value = "Mənim videom"
item.addMetadata(metadata)

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

AVPlayerItem-dan istifadə metadatlar, vaxt kodları, audio trek və altyazı seçimi üzərində nəzarət verir. AVPlayerItem vasitəsilə həmçinin status xassəsində KVO ilə yükləmə gedişatını, buferləməni və şəbəkə xətalarını izləmək olar.

İdarəetmə elementlərinin konfiqurasiyası

iOS 11-dən başlayaraq tərtibatçı AVPlayerViewControllerDelegate protokolu vasitəsilə nəqliyyat panelini konfiqurasiya edə bilər. playerViewController(_:willBeginFullScreenPresentationWithAnimationCoordinator:) metodu tam ekran rejiminə girməzdən əvvəl çağırılır və UI hazırlamağa imkan verir.

Ayrı-ayrı düymələri gizlətmək üçün AVPlayerViewController.showsPlaybackControls xassəsindən istifadə olunur. Onu false-a təyin etsəniz, nəqliyyat paneli tamamilə yox olur və yalnız video axını qalır. Xüsusi overlay elementləri üçün faydalıdır.

Deleqatdan istifadə edərək konfiqurasiya

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
    ) {
        // Overlay düyməsi əlavə et
    }

    func playerViewController(
        _ playerViewController: AVPlayerViewController,
        didUpdate legibleMediaSelection: AVMediaSelectionGroup
    ) {
        print("Yeni altyazı dili seçildi")
    }
}

Deleqat altyazı dəyişməsi, tam ekran rejiminə girmə və çıxma, həmçinin Picture in Picture-in başlanması və bitməsi hadisələrini tutmağa imkan verir. WWDC 2024-də Apple analitika üçün deleqatdan istifadə etməyi tövsiyə etdi — hər keçidi 100 ms-ə qədər loglamaq.

Altyazılar və audio treklərlə iş

AVPlayerViewController media faylına daxil edilmiş və ya HLS manifestində göstərilmiş bütün mövcud altyazıları və audio trekləri avtomatik göstərir. İstifadəçi onları nəqliyyat panelində altyazı ikonasına toxunmaqla açılan menyu vasitəsilə dəyişə bilər.

HLS axınları üçün M3U8 manifesti mövcud dil variantlarının siyahısını ehtiva edir. AVPlayer WebVTT formatında müvafiq altyazı seqmentlərini yükləyir və onları AVPlayerLayer vasitəsilə renderə ötürür. iOS 16+-da AVTextStyleRule vasitəsilə altyazı stilizasiyası dəstəyi ortaya çıxdı.

Audio trekin proqram seçimi

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 metodu audiable qrupunun audio seçimləri arasında extendedLanguageTag-ı tələb olunan dil kodu ilə uyğun gələn variantı axtarır. Bu, çoxdilli məzmunu olan tətbiqlərdə "Orijinal səsləndirmə" funksiyasını həyata keçirməyə imkan verir.

iPad-də Picture in Picture

Picture in Picture (PiP) rejimi videonu digər tətbiqlərin üstündə üzən pəncərədə göstərməyə imkan verir. iPad-də bu funksiya iOS 9-dan, iPhone-da iOS 14-dən etibarən mövcuddur. AVPlayerViewController UIBackgroundModes abunəliyi olduqda nəqliyyat panelinə avtomatik olaraq PiP düyməsini əlavə edir.

PiP-ni aktivləşdirmək üçün Info.plist-də UIBackgroundModes açarını audioairplay dəyəri ilə əlavə etmək lazımdır. Bundan sonra kontrollerdə PiP düyməsi görünür, basdıqda video 192x108 nöqtə ölçüsündə üzən pəncərəyə yığışır.

PiP hadisələri deleqat vasitəsilə emal olunur: playerViewController(_:willStartPictureInPictureFromFullScreen:) və playerViewController(_:didStopPictureInPicture:). Apple HIG-ə görə, məzmunun oxunaqlılığını qorumaq üçün PiP pəncərəsinin minimum ölçüsü ən azı 120x68 nöqtə olmalıdır.

Tez-tez verilən suallar

AVPlayerViewController YouTube videolarını oxutmağı dəstəkləyirmi?

Xeyr, YouTube videoları üçün web-view WKWebView və ya YouTube iOS Helper kitabxanası tələb olunur, çünki YouTube öz DRM sistemindən istifadə edir. AVPlayerViewController birbaşa media axınları üçün nəzərdə tutulub.

AVPlayerViewController-ın nəqliyyat panelini necə söndürmək olar?

showsPlaybackControls xassəsini false olaraq təyin edin. Bundan sonra ekran boş qalır — yalnız video axını. Xüsusi düymələri qaytarmaq üçün kontrollerin üzərinə addSubview vasitəsilə overlay əlavə edin.

AVPlayerViewController HLS canlı yayımları ilə işləyirmi?

Bəli, kontroller HLS Live-ı tam dəstəkləyir. Nəqliyyat panelində gedişat sürgüsü əvəzinə Live göstəricisi göstərilir. Gecikmə HLS konfiqurasiyasından asılıdır — aşağı gecikmə parametrlərində minimum 6 saniyə.

AVPlayerViewController-da video yükləmə xətasını necə idarə etmək olar?

AVPlayerItem.status xassəsinin KVO-suna abunə olun. Xəta olduqda status .failed-ə dəyişir. AVPlayerItem-ın error xassəsi vasitəsilə detalları əldə edin və istifadəçiyə izahat ilə alert göstərin — çox vaxt problem şəbəkədə və ya yanlış URL-də olur.

AVPlayerViewController-da videonu yaddaşdan yükləmək olarmı?

Bəli, operativ yaddaşdan məlumat vermək üçün xüsusi AVAssetResourceLoader ilə AVAsset-dən istifadə edin. AVAssetResourceLoaderDelegate deleqatını tətbiq edin və diskdən oxumaq əvəzinə buferdən baytları qaytarın.

Nəticə

  • AVPlayerViewController — minimal inteqrasiya kodu ilə iOS, iPadOS və tvOS-da video oxutmaq üçün hazır AVKit komponenti.
  • Kontroller HLS, MP4, qorunan FairPlay məzmunu, altyazılar və audio trekləri qutudan çıxan kimi dəstəkləyir.
  • Əsas istifadə üçün AVPlayer yaratmaq və onu kontrollerə ötürmək kifayətdir — UI avtomatik çəkiləcək.
  • AVPlayerViewControllerDelegate deleqatı nəqliyyat panelini konfiqurasiya etməyə, PiP və altyazı dəyişməsini idarə etməyə imkan verir.
  • Nəqliyyat paneli 3 saniyə hərəkətsizlikdən sonra gizlənir, lakin showsPlaybackControls onun görünməsi üzərində tam nəzarət verir.
  • Picture in Picture üçün Info.plist-də UIBackgroundModes audio və airplay aktivləşdirilməsi tələb olunur.
  • Xəta zamanı detalları əldə etmək və istifadəçiyə göstərmək üçün AVPlayerItem.status-da KVO-dan istifadə edin.

Açar təslim mobil tətbiq hazırlayacağıq

IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.

Layihəni müzakirə et

Həm də oxuyun