A média és a streaming a modern mobilfejlesztés egyik kulcskompetenciája. A Statista (2025) szerint a globális videóstreaming-piac 2027-re meghaladja a 100 milliárd dollárt. A mobileszközök teszik ki a streaming platformok forgalmának több mint 60%-át. A fejlesztőnek meg kell értenie a protokollokat, lejátszókat, tartalomvédelmi mechanizmusokat és olyan funkciókat, mint a Picture-in-Picture. A minőségi streaming a mobilalkalmazásokban mindezen technológiák ismeretét követeli meg.
Főbb pontok
HTTP Live Streaming (HLS) az Apple által fejlesztett protokoll a mobilalkalmazásokban történő streameléshez. A videót kis szegmensekre (általában 6–10 másodperc) bontja, és normál HTTP-n keresztül továbbítja. A lejátszó letölt egy lejátszási listát (.m3u8), és egymás után betölti a szegmenseket, a minőséget a kapcsolat sebességéhez igazítva. A HLS megbízható streamelést biztosít a mobilalkalmazásokban minden Apple-eszközön, és ez a de facto szabvány iOS rendszeren.
DASH (Dynamic Adaptive Streaming over HTTP) egy nyílt MPEG szabvány a média mobilalkalmazásokba történő továbbítására. A HLS-sel ellentétben a DASH MP4 formátumot használ a szegmensekhez, és XML manifesztumot (MPD) a .m3u8 helyett. A DASH nagyobb kontrollt biztosít a kodekek felett, és több formátumot támogat. A HLS és a DASH közötti választás kulcsfontosságú döntés a mobil eszközökre történő streaming fejlesztésekor. A protokollok összehasonlítását az alábbi táblázat mutatja.
| Paraméter | HLS | DASH |
|---|---|---|
| Fejlesztő | Apple | MPEG (nyílt szabvány) |
| Lejátszási lista formátuma | .m3u8 | .mpd (XML) |
| Szegmensek | .ts vagy fMP4 | fMP4 (bármilyen kodek) |
| Natív támogatás | iOS, macOS, tvOS | Android, web |
| Adaptív bitráta | Igen (avc1, mp4a) | Igen (bármilyen kodek) |
| Alacsony késleltetés | LL-HLS (2–5 mp) | LL-DASH (2–5 mp) |
A gyakorlatban az iOS-alkalmazások a HLS-t választják — az AVPlayer natívan működik vele. Android esetén a DASH az ExoPlayernek köszönhetően előnyösebb. Mindkét protokoll alkalmas média streamelésre mobileszközökön. Az IT Sectr-nél mindkét technológiát használjuk, és javasoljuk a protokoll kiválasztását a célplatform alapján.
Adaptive Bitrate (ABR) egy olyan mechanizmus, amelyben a lejátszó automatikusan kiválasztja a videó minőségét a kapcsolat sebessége alapján. A streame több bitrátán (360p, 720p, 1080p, 4K) van kódolva. A lejátszó szünetek nélkül vált közöttük. Kodekek: H.264 (AVC) — alap, H.265 (HEVC) — 50%-kal hatékonyabb, VP9 és AV1 — nyílt alternatívák Androidhoz.
A mobilalkalmazásokban történő hardveres dekódoláshoz fontos a megfelelő kodek kiválasztása. Hardware Decoding az eszköz GPU/videó processzorát használja, és kevesebb akkumulátort fogyaszt. A Software Decoding a CPU-n fut — akkor használatos, ha a hardveres dekódolás nem érhető el. Az IT Sectr javasolja a kodek-támogatás minden ellenőrzését a MediaCodec (Android) vagy AVAssetTrack (iOS) segítségével az optimális média lejátszáshoz mobileszközökön.
ExoPlayer a Google médialejátszója Androidhoz, optimalizálva a média lejátszására mobilalkalmazásokban. A MediaPlayer-rel ellentétben az ExoPlayer nincs a hardveres dekódoláshoz kötve, és támogatja az egyéni sémákat bővítő modulokon keresztül. Működik HLS, DASH, SmoothStreaming és RTSP protokollokkal. Az ExoPlayer a YouTube, a Google TV és az Android TV fő lejátszója.
AVPlayer és AVPlayerViewController az Apple lejátszói iOS, macOS, tvOS rendszerekhez. Az AVPlayer alacsony szintű API, az AVPlayerViewController egy kész UI burkoló PiP és AirPlay funkciókkal. Fő különbségek: az ExoPlayer teljes irányítást biztosít a pufferelés és a renderelés felett, az AVPlayerViewController gyors integrációt kínál minimális kóddal. A lejátszó kiválasztása közvetlenül befolyásolja a streaming minőségét a mobilalkalmazásokban.
// ExoPlayer — alapszintű lejátszó beállítása Androidon
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
A kód az ExoPlayer minimális inicializálását mutatja: példány létrehozása, média elem beállítása és a lejátszás elindítása. Az ExoPlayer automatikusan kezeli az Activity életciklusát a player.release() segítségével az onStop-ban. Android TV vagy PiP esetén további életciklus-kezelés szükséges a PlayerView segítségével — ez különösen fontos a streaming mobilalkalmazásokhoz történő beállításakor.
Transcoding a videó átalakítása egyik formátumból a másikba. Arra használják, hogy a média streameket optimalizálják különböző mobileszközökhöz (pl. H.264 → H.265). Mobileszközökön a transkódolás MediaCodec (Android) vagy AVAssetExportSession (iOS) segítségével lehetséges. A transkódolás erőforrás-igényes és lemeríti az akkumulátort — végezze a háttérben a WorkManager vagy BGTaskScheduler segítségével.
Digital Rights Management (DRM) a médiatartalmak jogosulatlan másolás elleni védelmére szolgáló rendszerek. A prémium média streameléséhez mobilalkalmazásokban három fő technológiát használnak: Widevine (Google), FairPlay (Apple) és PlayReady (Microsoft). DRM nélkül a prémium szolgáltatások (Netflix, Spotify, Disney+) nem terjeszthetnek tartalmat.
Widevine az Android DRM védelmi szabványa, három szinten érhető el: L3 (szoftveres titkosítás), L2, L1 (hardveres titkosítás, csak Trusted Execution Environment). A FairPlay az Apple exkluzív rendszere, SVP (Secure Video Pipeline) használ chipek szintjén. A PlayReady a Microsoft rendszere, Xbox és Windows eszközökön elterjedt.
Multi-DRM egy olyan megközelítés, ahol egyetlen platformot használ az összes DRM kulcs kezelésére. Példa: EZDRM vagy Verimatrix. Ezek egységes API-n keresztül bocsátanak ki Widevine, FairPlay és PlayReady licenceket. A Multi-DRM különösen fontos a prémium média számára mobileszközökön. Az IT Sectr-nél aggregátorokon keresztül valósítjuk meg a multi-DRM-et — ez időt és pénzt takarít meg az egyes DRM-ek külön-külön történő integrálásához képest.
Audio Focus (Android) egy audió stream kezelő rendszer a média lejátszásához mobilalkalmazásokban. Amikor az alkalmazás Audio Focus-t kér, más alkalmazások (zene, podcast) szünetelnek vagy halkítanak (ducking). Audio Focus nélkül két alkalmazás egyszerre játszana le, zajt okozva.
Az Android az audió streameket típusokra osztja: MUSIC, VOICE_CALL, ALARM, NOTIFICATION. Egy médialejátszóhoz az AudioManager.AUDIOFOCUS_GAIN-t kell kérnie. A fókusz elvesztésekor (bejövő hívás) szüneteltetnie kell a média lejátszást, és folytatnia a fókusz visszatérése után. Megvalósítás az AudioManager.OnAudioFocusChangeListener segítségével.
Audio Session (iOS) az Audio Focus megfelelője a médiaalkalmazások számára Apple mobileszközökön. Az AVAudioSession.sharedInstance() segítségével konfigurálható. Kategóriák: .playback (kötelező videóhoz), .soloAmbient (alapértelmezett, néma ha zárolva), .playAndRecord (felvételhez). Streameléshez használja a .playback-et az .allowAirPlay opcióval.
Picture-in-Picture (PiP) egy olyan mód, ahol a médiatartalom egy kis lebegő ablakban folytatja a lejátszást az alkalmazás minimalizálásakor vagy másik képernyőre navigáláskor. A PiP szabvánnyá vált a médiaalkalmazások számára mobileszközökön — iOS (iPadOS 13 óta) és Android (Android 8.0 óta).
Androidon a PiP az Activity.isInPictureInPictureMode() és a PictureInPictureParams.Builder segítségével aktiválható. Az alkalmazásnak többablakos módban kell lennie. A MediaSession szükséges a média lejátszás vezérléséhez a PiP ablakból. A manifesztumban adja meg: android:supportsPictureInPicture="true".
AirPlay az Apple protokollja a média streameléséhez Apple TV, HomePod és kompatibilis Smart TV-kre. iOS-en az AVRoutePickerView vagy MPNowPlayingInfoCenter segítségével valósítható meg. Androidon a megfelelője a Google Cast SDK (Chromecast). Mindkét technológia konfigurációt igényel a bináris fájlban és támogatást a lejátszóban. A minőségi streaming mobilalkalmazásokban lehetetlen ezek egyike nélkül.
Gyakran Ismételt Kérdések
iOS esetén a HLS jobb — natívan támogatja az AVPlayer. Android és platformok közötti alkalmazások esetén a DASH előnyösebb, mivel az ExoPlayer jobb DASH támogatást és rugalmasabb pufferelési vezérlést biztosít. A protokoll választása közvetlenül befolyásolja a streaminget a mobilalkalmazásokban.
A DRM kötelező csak akkor, ha prémium médiatartalmat (filmek, zene, tanfolyamok) terjeszt. Felhasználók által generált tartalom vagy ingyenes adások esetén a DRM nem szükséges. Az IT Sectr azt javasolja, hogy DRM nélkül kezdje, és csak szükség esetén adja hozzá.
ExoPlayer egy testreszabható médialejátszó Androidhoz DASH, HLS és SmoothStreaming támogatással. Az AVPlayerViewController egy natív iOS lejátszó HLS-hez PiP és AirPlay funkciókkal. Az ExoPlayer több vezérlést biztosít, az AVPlayerViewController kevesebb kódot igényel. Mindkettő kiváló minőségű média lejátszást biztosít mobilalkalmazásokban.
PiP egy olyan mód, ahol a médiatartalom egy kis ablakban folytatja a lejátszást az alkalmazás minimalizálásakor. iOS-en az AVPlayerViewController delegáltján keresztül, Androidon a PictureInPictureParams segítségével aktiválható. Manifesztum konfigurációt és életciklus-kezelést igényel.
Audio Focus (Android) és Audio Session (iOS) kezeli a különböző forrásokból érkező egyidejű hanglejátszást. Biztosítják, hogy a médiaalkalmazás megfelelően reagáljon a hívásokra, értesítésekre és más audio alkalmazások elindítására.
Összefoglalás
Kulcsrakész mobilalkalmazást fejlesztünk
Az IT Sectr 2017 óta készít iOS és Android alkalmazásokat induló vállalkozásoknak és vállalkozásoknak. Tanácsot adunk, és a legjobb megoldást javasoljuk.