Media və streaming müasir mobil inkişafın əsas bacarıqlarından biridir. Statista (2025) məlumatına görə, qlobal video streaming bazarı 2027-ci ilədək 100 milyard dolları keçəcək. Mobil cihazlar bütün streaming platformalarının trafikinin 60%-dən çoxunu təşkil edir. Tərtibatçı protokolları, pleyerləri, məzmun qoruma mexanizmlərini və Picture-in-Picture kimi funksiyaları başa düşməlidir. Mobil tətbiqlərdə keyfiyyətli streaming bütün bu texnologiyalara yiyələnməyi tələb edir.
Əsas məqamlar
HTTP Live Streaming (HLS) Apple tərəfindən hazırlanmış mobil tətbiqlərdə streaming üçün protokoldur. Videonu kiçik seqmentlərə (adətən 6–10 saniyə) bölür və onları adi HTTP vasitəsilə ötürür. Pleyer pleylist (.m3u8) yükləyir və ardıcıl olaraq seqmentləri yükləyərək keyfiyyəti əlaqə sürətinə uyğunlaşdırır. HLS bütün Apple cihazlarında mobil tətbiqlərdə etibarlı streaming təmin edir və iOS üçün de-fakto standartdır.
DASH (Dynamic Adaptive Streaming over HTTP) mobil tətbiqlərə media çatdırılması üçün açıq MPEG standartıdır. HLS-dən fərqli olaraq, DASH seqmentlər üçün MP4 formatı və .m3u8 əvəzinə XML manifest (MPD) istifadə edir. DASH kodeklər üzərində daha çox nəzarət verir və daha çox formatı dəstəkləyir. HLS və DASH arasında seçim mobil cihazlar üçün streaming hazırlayarkən əsas qərardır. Protokolların müqayisəsi aşağıdakı cədvəldə göstərilmişdir.
| Parametr | HLS | DASH |
|---|---|---|
| Tərtibatçı | Apple | MPEG (açıq standart) |
| Pleylist formatı | .m3u8 | .mpd (XML) |
| Seqmentlər | .ts və ya fMP4 | fMP4 (istənilən kodek) |
| Yerli dəstək | iOS, macOS, tvOS | Android, veb |
| Adaptiv bitrate | Bəli (avc1, mp4a) | Bəli (istənilən kodek) |
| Aşağı gecikmə | LL-HLS (2–5 san) | LL-DASH (2–5 san) |
Praktikada iOS tətbiqləri HLS seçir — AVPlayer onunla yerli işləyir. Android üçün ExoPlayer sayəsində DASH üstünlük təşkil edir. Hər iki protokol mobil cihazlarda media streaming üçün uyğundur. IT Sectr-da hər iki texnologiyadan istifadə edirik və protokolu hədəf platformaya əsasən seçməyi tövsiyə edirik.
Adaptive Bitrate (ABR) pleyerin əlaqə sürətinə əsasən avtomatik olaraq video keyfiyyətini seçdiyi mexanizmdir. Stream bir neçə bitrate-də (360p, 720p, 1080p, 4K) kodlanır. Pleyer fasiləsiz olaraq onların arasında keçid edir. Kodeklər: H.264 (AVC) — əsas, H.265 (HEVC) — 50% daha səmərəli, VP9 və AV1 — Android üçün açıq alternativlər.
Mobil tətbiqlərdə aparat dekodlanması üçün düzgün kodek seçmək vacibdir. Hardware Decoding cihazın GPU/video prosessorundan istifadə edir və daha az batareya sərf edir. Software Decoding CPU-da işləyir — aparat dekodlanması mövcud olmadıqda istifadə olunur. IT Sectr mobil cihazlarda optimal media oxutma üçün MediaCodec (Android) və ya AVAssetTrack (iOS) vasitəsilə kodek dəstəyini həmişə yoxlamağı tövsiyə edir.
ExoPlayer Google tərəfindən Android üçün media pleyeridir, mobil tətbiqlərdə media oxutma üçün optimallaşdırılıb. MediaPlayer-dən fərqli olaraq, ExoPlayer aparat dekodlanmasına bağlı deyil və genişləndirmə modulları vasitəsilə xüsusi sxemləri dəstəkləyir. HLS, DASH, SmoothStreaming və RTSP ilə işləyir. ExoPlayer YouTube, Google TV və Android TV-nin əsas pleyeridir.
AVPlayer və AVPlayerViewController iOS, macOS, tvOS üçün Apple pleyerləridir. AVPlayer aşağı səviyyəli API, AVPlayerViewController PiP və AirPlay ilə hazır UI sarğıcıdır. Əsas fərqlər: ExoPlayer buferləmə və renderinq üzərində tam nəzarət verir, AVPlayerViewController minimal kodla sürətli inteqrasiya təmin edir. Pleyer seçimi birbaşa mobil tətbiqlərdə streaming keyfiyyətinə təsir edir.
// ExoPlayer — Android-də əsas pleyer qurulumu
val player = ExoPlayer.Builder(this)
.setMediaSource(ProgressiveMediaSource.Factory(DefaultHttpDataSource.Factory()))
.build()
val mediaItem = MediaItem.fromUri("https://example.com/stream.m3u8")
player.setMediaItem(mediaItem)
player.prepare()
player.playWhenReady = true
Kod ExoPlayer-ın minimal başlanğıcını göstərir: nümunə yaratma, media elementi təyin etmə və oxutmanı başlatma. ExoPlayer onStop-da player.release() vasitəsilə Activity həyat dövrünü avtomatik idarə edir. Android TV və ya PiP üçün PlayerView vasitəsilə əlavə həyat dövrü idarəetməsi tələb olunur — bu mobil tətbiqlər üçün streaming qurarkən xüsusilə vacibdir.
Transcoding videonun bir formatdan digərinə çevrilməsidir. Müxtəlif mobil cihazlar üçün media stream-lərini optimallaşdırmaq üçün istifadə olunur (məsələn, H.264 → H.265). Mobil cihazlarda transcoding MediaCodec (Android) və ya AVAssetExportSession (iOS) vasitəsilə mümkündür. Transcoding resurs tutumludur və batareyanı boşaldır — onu WorkManager və ya BGTaskScheduler vasitəsilə fonda edin.
Digital Rights Management (DRM) media məzmununu icazəsiz kopyalamadan qoruyan sistemlərdir. Mobil tətbiqlərdə premium media streaming üçün üç əsas texnologiya istifadə olunur: Widevine (Google), FairPlay (Apple) və PlayReady (Microsoft). DRM olmadan premium xidmətlər (Netflix, Spotify, Disney+) məzmun paylaya bilməz.
Widevine Android üçün DRM qoruma standartıdır, üç səviyyədə mövcuddur: L3 (proqram şifrələmə), L2, L1 (aparat şifrələmə, yalnız Trusted Execution Environment). FairPlay Apple-ın eksklüziv sistemidir, çip səviyyəsində SVP (Secure Video Pipeline) istifadə edir. PlayReady Microsoft-un sistemidir, Xbox və Windows cihazlarında geniş yayılmışdır.
Multi-DRM bütün DRM açarlarını idarə etmək üçün vahid platformadan istifadə etdiyiniz yanaşmadır. Nümunə: EZDRM və ya Verimatrix. Onlar vahid API vasitəsilə Widevine, FairPlay və PlayReady lisenziyaları verir. Multi-DRM mobil cihazlarda premium media üçün xüsusilə aktualdır. IT Sectr-da biz aqreqatorlar vasitəsilə multi-DRM həyata keçiririk — bu, hər DRM-ni ayrıca inteqrasiya etməklə müqayisədə vaxt və pul qənaət edir.
Audio Focus (Android) mobil tətbiqlərdə media oxutma üçün səs axını idarəetmə sistemidir. Tətbiqiniz Audio Focus tələb etdikdə, digər tətbiqlər (musiqi, podkastlar) dayanır və ya səsini aşağı salır (ducking). Audio Focus olmadan iki tətbiq eyni anda çalaraq səs-küy yaradar.
Android səs axınlarını növlərə ayırır: MUSIC, VOICE_CALL, ALARM, NOTIFICATION. Media pleyer üçün AudioManager.AUDIOFOCUS_GAIN tələb etməlisiniz. Fokus itirildikdə (daxil olan zəng) media oxutmanı dayandırmalı və fokus qayıtdıqda bərpa etməlisiniz. Tətbiq AudioManager.OnAudioFocusChangeListener vasitəsilə həyata keçirilir.
Audio Session (iOS) Apple mobil cihazlarında media tətbiqləri üçün Audio Focus-un ekvivalentidir. AVAudioSession.sharedInstance() vasitəsilə konfiqurasiya edilir. Kateqoriyalar: .playback (video üçün məcburi), .soloAmbient (defolt, bağlandıqda səssiz), .playAndRecord (yazmaq üçün). Streaming üçün .allowAirPlay seçimi ilə .playback istifadə edin.
Picture-in-Picture (PiP) tətbiq kiçildildikdə və ya başqa ekrana keçdikdə media məzmununun kiçik üzən pəncərədə oxumağa davam etdiyi rejimdir. PiP mobil cihazlarda media tətbiqləri üçün standart halına gəlib — iOS (iPadOS 13-dən) və Android (Android 8.0-dən).
Android-də PiP Activity.isInPictureInPictureMode() və PictureInPictureParams.Builder vasitəsilə aktivləşdirilir. Tətbiq çoxpəncərə rejimində olmalıdır. PiP pəncərəsindən media oxutmanı idarə etmək üçün MediaSession tələb olunur. Manifestdə android:supportsPictureInPicture="true" göstərin.
AirPlay Apple TV, HomePod və uyğun Smart TV-lərə media streaming etmək üçün Apple protokoludur. iOS-da AVRoutePickerView və ya MPNowPlayingInfoCenter vasitəsilə həyata keçirilir. Android-də ekvivalent Google Cast SDK (Chromecast)-dir. Hər iki texnologiya ikili faylda konfiqurasiya və pleyer dəstəyi tələb edir. Onlardan biri olmadan mobil tətbiqlərdə keyfiyyətli streaming mümkün deyil.
Tez-tez verilən suallar
iOS üçün HLS daha yaxşıdır — AVPlayer tərəfindən yerli dəstəklənir. Android və çarpaz platforma tətbiqləri üçün DASH üstünlük təşkil edir, çünki ExoPlayer DASH-ı daha yaxşı dəstəkləyir və buferləməyə daha çevik nəzarət edir. Protokol seçimi birbaşa mobil tətbiqlərdə streaming-ə təsir edir.
DRM məcburidir yalnız premium media məzmunu (filmlər, musiqi, kurslar) paylayırsınızsa. İstifadəçi tərəfindən yaradılan məzmun və ya pulsuz yayımlar üçün DRM lazım deyil. IT Sectr DRM olmadan başlamağı və yalnız tələb olunduqda əlavə etməyi tövsiyə edir.
ExoPlayer DASH, HLS və SmoothStreaming dəstəyi ilə Android üçün fərdiləşdirilə bilən media pleyerdir. AVPlayerViewController PiP və AirPlay ilə iOS üçün yerli pleyerdir. ExoPlayer daha çox nəzarət verir, AVPlayerViewController daha az kod tələb edir. Hər ikisi mobil tətbiqlərdə keyfiyyətli media oxutma təmin edir.
PiP tətbiq kiçildildikdə media məzmununun kiçik pəncərədə oxumağa davam etdiyi rejimdir. iOS-da AVPlayerViewController delegatı vasitəsilə, Android-də PictureInPictureParams vasitəsilə aktivləşdirilir. Manifest konfiqurasiyası və həyat dövrü idarəetməsi tələb edir.
Audio Focus (Android) və Audio Session (iOS) müxtəlif mənbələrdən eyni vaxtda səs oxutmanı idarə edir. Onlar media tətbiqinizin zənglərə, bildirişlərə və digər audio tətbiqlərin işə salınmasına düzgün cavab verməsini təmin edir.
Xülasə
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.