Media en streaming is een van de belangrijkste competenties van moderne mobiele ontwikkeling. Volgens Statista (2025) zal de wereldwijde videostreamingmarkt in 2027 de 100 miljard dollar overschrijden. Mobiele apparaten zijn goed voor meer dan 60% van al het verkeer van streamingplatforms. Een ontwikkelaar moet protocollen, spelers, mechanismen voor contentbescherming en functies zoals Picture-in-Picture begrijpen. Kwaliteitsstreaming in mobiele apps vereist beheersing van al deze technologieën.
Belangrijkste punten
HTTP Live Streaming (HLS) is een protocol voor streaming in mobiele apps ontwikkeld door Apple. Het splitst video op in kleine segmenten (meestal 6–10 seconden) en verzendt ze via gewone HTTP. De speler downloadt een afspeellijst (.m3u8) en laadt achtereenvolgens segmenten, waarbij de kwaliteit wordt aangepast aan de verbindingssnelheid. HLS biedt betrouwbare streaming in mobiele apps op alle Apple-apparaten en is de de facto standaard voor iOS.
DASH (Dynamic Adaptive Streaming over HTTP) is een open MPEG-standaard voor het leveren van media aan mobiele apps. In tegenstelling tot HLS gebruikt DASH het MP4-formaat voor segmenten en een XML-manifest (MPD) in plaats van .m3u8. DASH biedt meer controle over codecs en ondersteunt meer formaten. De keuze tussen HLS en DASH is een cruciale beslissing bij het ontwikkelen van streaming voor mobiele apparaten. De vergelijking van de protocollen wordt weergegeven in de onderstaande tabel.
| Parameter | HLS | DASH |
|---|---|---|
| Ontwikkelaar | Apple | MPEG (open standaard) |
| Afspeellijstformaat | .m3u8 | .mpd (XML) |
| Segmenten | .ts of fMP4 | fMP4 (elke codec) |
| Native ondersteuning | iOS, macOS, tvOS | Android, web |
| Adaptieve bitrate | Ja (avc1, mp4a) | Ja (elke codec) |
| Lage latentie | LL-HLS (2–5 s) | LL-DASH (2–5 s) |
In de praktijk kiezen iOS-apps voor HLS — AVPlayer werkt er native mee. Voor Android heeft DASH de voorkeur dankzij ExoPlayer. Beide protocollen zijn geschikt voor mediastreaming op mobiele apparaten. Bij IT Sectr gebruiken we beide technologieën en raden we aan het protocol te kiezen op basis van het doelplatform.
Adaptive Bitrate (ABR) is een mechanisme waarbij de speler automatisch de videokwaliteit selecteert op basis van de verbindingssnelheid. De stream wordt gecodeerd met meerdere bitrates (360p, 720p, 1080p, 4K). De speler schakelt zonder pauzes tussen deze bitrates. Codecs: H.264 (AVC) — basis, H.265 (HEVC) — 50% efficiënter, VP9 en AV1 — open alternatieven voor Android.
Voor hardwarematige decodering in mobiele apps is het belangrijk de juiste codec te kiezen. Hardware Decoding gebruikt de GPU/videoprocessor van het apparaat en verbruikt minder batterij. Software Decoding werkt op de CPU — gebruikt wanneer hardwarematige decodering niet beschikbaar is. IT Sectr raadt aan om altijd codec-ondersteuning te controleren via MediaCodec (Android) of AVAssetTrack (iOS) voor optimale mediaweergave op mobiele apparaten.
ExoPlayer is een mediaspeler van Google voor Android, geoptimaliseerd voor mediaweergave in mobiele apps. In tegenstelling tot MediaPlayer is ExoPlayer niet gebonden aan hardwarematige decodering en ondersteunt het aangepaste schema's via extensiemodules. Het werkt met HLS, DASH, SmoothStreaming en RTSP. ExoPlayer is de belangrijkste speler voor YouTube, Google TV en Android TV.
AVPlayer en AVPlayerViewController zijn de spelers van Apple voor iOS, macOS, tvOS. AVPlayer is een low-level API, AVPlayerViewController is een kant-en-klare UI-wrapper met PiP en AirPlay. Belangrijkste verschillen: ExoPlayer biedt volledige controle over buffering en rendering, AVPlayerViewController biedt snelle integratie met minimale code. De keuze van de speler heeft direct invloed op de kwaliteit van streaming in mobiele apps.
// ExoPlayer — basisinstelling van de speler op Android
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
De code toont de minimale initialisatie van ExoPlayer: een instantie maken, het media-item instellen en de weergave starten. ExoPlayer behandelt automatisch de levenscyclus van Activity via player.release() in onStop. Voor Android TV of PiP is extra levenscyclusbeheer via PlayerView vereist — dit is vooral belangrijk bij het instellen van streaming voor mobiele apps.
Transcoding is het omzetten van video van het ene formaat naar het andere. Het wordt gebruikt om mediastromen te optimaliseren voor verschillende mobiele apparaten (bijv. H.264 → H.265). Op mobiele apparaten is transcoderen mogelijk via MediaCodec (Android) of AVAssetExportSession (iOS). Transcoderen is resource-intensief en verbruikt de batterij — doe het op de achtergrond via WorkManager of BGTaskScheduler.
Digital Rights Management (DRM) zijn systemen voor de bescherming van media-inhoud tegen ongeoorloofd kopiëren. Voor het streamen van premium media in mobiele apps worden drie hoofdtechnologieën gebruikt: Widevine (Google), FairPlay (Apple) en PlayReady (Microsoft). Zonder DRM kunnen premium diensten (Netflix, Spotify, Disney+) geen inhoud distribueren.
Widevine is de DRM-beschermingsstandaard voor Android, beschikbaar in drie niveaus: L3 (software-encryptie), L2, L1 (hardware-encryptie, alleen Trusted Execution Environment). FairPlay is het exclusieve systeem van Apple, het gebruikt SVP (Secure Video Pipeline) op chiplevel. PlayReady is het systeem van Microsoft, wijdverspreid op Xbox- en Windows-apparaten.
Multi-DRM is een aanpak waarbij u één platform gebruikt om alle DRM-sleutels te beheren. Voorbeeld: EZDRM of Verimatrix. Zij geven licenties voor Widevine, FairPlay en PlayReady via een uniforme API. Multi-DRM is vooral relevant voor premium media op mobiele apparaten. Bij IT Sectr implementeren we multi-DRM via aggregators — dit bespaart tijd en geld in vergelijking met het afzonderlijk integreren van elke DRM.
Audio Focus (Android) is een systeem voor het beheren van audiostreams voor mediaweergave in mobiele apps. Wanneer uw app Audio Focus aanvraagt, worden andere apps (muziek, podcasts) gepauzeerd of verlagen ze het volume (ducken). Zonder Audio Focus zouden twee apps tegelijkertijd afspelen, wat ruis veroorzaakt.
Android verdeelt audiostreams in typen: MUSIC, VOICE_CALL, ALARM, NOTIFICATION. Voor een mediaspeler moet u AudioManager.AUDIOFOCUS_GAIN aanvragen. Bij verlies van focus (inkomende oproep) moet u de mediaweergave pauzeren en hervatten nadat de focus terugkeert. Implementatie via AudioManager.OnAudioFocusChangeListener.
Audio Session (iOS) is het equivalent van Audio Focus voor media-apps op Apple-mobiele apparaten. Het wordt geconfigureerd via AVAudioSession.sharedInstance(). Categorieën: .playback (vereist voor video), .soloAmbient (standaard, stil bij vergrendeling), .playAndRecord (voor opname). Gebruik voor streaming .playback met de optie .allowAirPlay.
Picture-in-Picture (PiP) is een modus waarin media-inhoud blijft afspelen in een klein zwevend venster wanneer de app wordt geminimaliseerd of naar een ander scherm wordt genavigeerd. PiP is standaard geworden voor media-apps op mobiele apparaten — iOS (sinds iPadOS 13) en Android (sinds Android 8.0).
Op Android wordt PiP ingeschakeld via Activity.isInPictureInPictureMode() en PictureInPictureParams.Builder. De app moet in meerdervenster-modus zijn. MediaSession is vereist om de mediaweergave vanuit het PiP-venster te bedienen. Specificeer in het manifest android:supportsPictureInPicture="true".
AirPlay is het protocol van Apple voor het streamen van media naar Apple TV, HomePod en compatibele Smart TV's. Op iOS wordt het geïmplementeerd via AVRoutePickerView of MPNowPlayingInfoCenter. Op Android is het equivalent Google Cast SDK (Chromecast). Beide technologieën vereisen configuratie in het binaire bestand en ondersteuning in de speler. Kwaliteitsstreaming in mobiele apps is onmogelijk zonder een van beide.
Veelgestelde vragen
Voor iOS is HLS beter — het wordt native ondersteund door AVPlayer. Voor Android en cross-platform apps heeft DASH de voorkeur, omdat ExoPlayer betere ondersteuning biedt voor DASH en flexibelere bufferingcontrole. De keuze van het protocol heeft direct invloed op streaming in mobiele apps.
DRM is verplicht alleen als u premium media-inhoud (films, muziek, cursussen) distribueert. Voor door gebruikers gegenereerde inhoud of free-to-air uitzendingen is DRM niet nodig. IT Sectr raadt aan om zonder DRM te beginnen en het alleen toe te voegen wanneer dat nodig is.
ExoPlayer is een aanpasbare mediaspeler voor Android met ondersteuning voor DASH, HLS en SmoothStreaming. AVPlayerViewController is een native iOS-speler voor HLS met PiP en AirPlay. ExoPlayer biedt meer controle, AVPlayerViewController vereist minder code. Beide bieden hoogwaardige mediaweergave in mobiele apps.
PiP is een modus waarin media-inhoud blijft afspelen in een klein venster wanneer de app wordt geminimaliseerd. Op iOS wordt het ingeschakeld via de AVPlayerViewController-delegate, op Android via PictureInPictureParams. Vereist manifestconfiguratie en levenscyclusbeheer.
Audio Focus (Android) en Audio Session (iOS) beheren gelijktijdige audioweergave uit verschillende bronnen. Ze zorgen ervoor dat uw media-app correct reageert op oproepen, meldingen en het starten van andere audio-apps.
Samenvatting
We ontwikkelen een mobiele applicatie turnkey
IT Sectr creëert sinds 2017 iOS- en Android-applicaties voor startups en bedrijven. We adviseren u en stellen de beste oplossing voor.