Media och streaming inom mobilutveckling: vad det är, vilka protokoll och hur det fungerar

Författare: IT Sectr Publicerad: 2026-05-20 Lästid: 10 min

Media och streaming är en av de viktigaste kompetenserna inom modern mobilutveckling. Enligt Statista (2025) kommer den globala videostreamingmarknaden att överstiga 100 miljarder dollar år 2027. Mobila enheter står för över 60 % av all trafik på streamingplattformar. En utvecklare måste förstå protokoll, spelare, mekanismer för innehållsskydd och funktioner som Picture-in-Picture. Kvalitativ streaming i mobilappar kräver behärskning av alla dessa teknologier.

Huvudpunkter

  • De huvudsakliga streamingprotokollen — HLS (Apple) och DASH (MPEG). HLS föredras för iOS, DASH för Android och plattformsoberoende lösningar.
  • ExoPlayer (Android) och AVPlayer (iOS) är standardspelarna. ExoPlayer är mer flexibel, AVPlayer är lättare att integrera. För plattformsoberoende utveckling finns Google Cast SDK.
  • DRM-system (Widevine, FairPlay, PlayReady) skyddar premiuminnehåll. Widevine är standarden för Android, FairPlay för iOS, PlayReady för Windows/Xbox.
  • Audio Focus (Android) och Audio Session (iOS) hanterar ljuduppspelning under samtal och aviseringar. Utan dem blir användarupplevelsen ofullständig.
  • Picture-in-Picture och AirPlay är obligatoriska funktioner för premium-videoappar. PiP gör det möjligt att titta på video i ett minifönster när appen minimeras.

HLS- och DASH-protokoll

HTTP Live Streaming (HLS) är ett protokoll för streaming i mobilappar utvecklat av Apple. Det delar upp video i små segment (vanligtvis 6–10 sekunder) och överför dem via vanlig HTTP. Spelaren laddar ner en spellista (.m3u8) och laddar sekventiellt segmenten och anpassar kvaliteten efter anslutningshastigheten. HLS ger tillförlitlig streaming i mobilappar på alla Apple-enheter och är de facto-standarden för iOS.

HLS vs DASH

DASH (Dynamic Adaptive Streaming over HTTP) är en öppen MPEG-standard för leverans av media till mobilappar. Till skillnad från HLS använder DASH MP4-format för segment och en XML-manifest (MPD) istället för .m3u8. DASH ger mer kontroll över codecs och stöder fler format. Valet mellan HLS och DASH är ett viktigt beslut vid utveckling av streaming för mobila enheter. Jämförelsen av protokollen visas i tabellen nedan.

Parameter HLS DASH
UtvecklareAppleMPEG (öppen standard)
Spellista-format.m3u8.mpd (XML)
Segment.ts eller fMP4fMP4 (valfri codec)
Native supportiOS, macOS, tvOSAndroid, webb
Adaptiv bitrateJa (avc1, mp4a)Ja (valfri codec)
Låg latensLL-HLS (2–5 s)LL-DASH (2–5 s)

I praktiken väljer iOS-appar HLS — AVPlayer fungerar native med det. För Android föredras DASH tack vare ExoPlayer. Båda protokollen är lämpliga för mediastreaming på mobila enheter. Hos IT Sectr använder vi båda teknologierna och rekommenderar att du väljer protokoll baserat på målplattformen.

Adaptiv bitrate och codecs

Adaptive Bitrate (ABR) är en mekanism där spelaren automatiskt väljer videokvalitet baserat på anslutningshastigheten. Strömmen kodas i flera bitrates (360p, 720p, 1080p, 4K). Spelaren växlar mellan dem utan pauser. Codecs: H.264 (AVC) — grundläggande, H.265 (HEVC) — 50 % effektivare, VP9 och AV1 — öppna alternativ för Android.

För hårdvaruavkodning i mobilappar är det viktigt att välja rätt codec. Hardware Decoding använder enhetens GPU/videoprocessor och förbrukar mindre batteri. Software Decoding körs på CPU — används när hårdvaruavkodning inte är tillgänglig. IT Sectr rekommenderar att du alltid kontrollerar codec-stöd via MediaCodec (Android) eller AVAssetTrack (iOS) för optimal mediauppspelning på mobila enheter.

Spelare: ExoPlayer och AVPlayer

ExoPlayer är en mediaspelare från Google för Android, optimerad för mediauppspelning i mobilappar. Till skillnad från MediaPlayer är ExoPlayer inte bunden till hårdvaruavkodning och stöder anpassade scheman via expansionsmoduler. Den fungerar med HLS, DASH, SmoothStreaming och RTSP. ExoPlayer är huvudspelaren för YouTube, Google TV och Android TV.

ExoPlayer vs AVPlayerViewController

AVPlayer och AVPlayerViewController är Apples spelare för iOS, macOS, tvOS. AVPlayer är ett lågnivå-API, AVPlayerViewController är ett färdigt UI-omslag med PiP och AirPlay. Huvudskillnader: ExoPlayer ger full kontroll över buffring och rendering, AVPlayerViewController ger snabb integration med minimal kod. Valet av spelare påverkar direkt kvaliteten på streaming i mobilappar.

kotlin
// ExoPlayer — grundinställning av spelare på 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

Koden visar minimal initialisering av ExoPlayer: skapa en instans, ställa in mediaobjektet och starta uppspelning. ExoPlayer hanterar automatiskt Activitys livscykel via player.release() i onStop. För Android TV eller PiP krävs ytterligare livscykelhantering via PlayerView — detta är särskilt viktigt när du ställer in streaming för mobilappar.

Transkodning och videobearbetning

Transcoding är konvertering av video från ett format till ett annat. Det används för att optimera mediaströmmar för olika mobila enheter (t.ex. H.264 → H.265). På mobila enheter är transkodning möjlig via MediaCodec (Android) eller AVAssetExportSession (iOS). Transkodning är resurskrävande och tömmer batteriet — gör det i bakgrunden via WorkManager eller BGTaskScheduler.

DRM: Widevine, FairPlay och PlayReady

Digital Rights Management (DRM) är system för att skydda medieinnehåll från obehörig kopiering. För streaming av premiummedia i mobilappar används tre huvudteknologier: Widevine (Google), FairPlay (Apple) och PlayReady (Microsoft). Utan DRM kan premiumtjänster (Netflix, Spotify, Disney+) inte distribuera innehåll.

Jämförelse av DRM-system

Widevine är DRM-skyddsstandarden för Android, tillgänglig i tre nivåer: L3 (mjukvarukryptering), L2, L1 (hårdvarukryptering, endast Trusted Execution Environment). FairPlay är Apples exklusiva system, använder SVP (Secure Video Pipeline) på chippnivå. PlayReady är Microsofts system, utbrett på Xbox- och Windows-enheter.

Multi-DRM är ett tillvägagångssätt där du använder en enda plattform för att hantera alla DRM-nycklar. Exempel: EZDRM eller Verimatrix. De utfärdar Widevine-, FairPlay- och PlayReady-licenser via ett enhetligt API. Multi-DRM är särskilt relevant för premiummedia på mobila enheter. Hos IT Sectr implementerar vi multi-DRM via aggregatorer — detta sparar tid och pengar jämfört med att integrera varje DRM separat.

Ljuduppspelning: Audio Focus och Audio Session

Audio Focus (Android) är ett system för hantering av ljudströmmar för mediauppspelning i mobilappar. När din app begär Audio Focus pausar andra appar (musik, poddar) eller sänker volymen (ducking). Utan Audio Focus skulle två appar spelas upp samtidigt och skapa buller.

Audio Focus på Android

Android delar in ljudströmmar i typer: MUSIC, VOICE_CALL, ALARM, NOTIFICATION. För en mediaspelare måste du begära AudioManager.AUDIOFOCUS_GAIN. Vid förlust av fokus (inkommande samtal) måste du pausa mediauppspelningen och återuppta när fokus återkommer. Implementering via AudioManager.OnAudioFocusChangeListener.

Audio Session på iOS

Audio Session (iOS) är motsvarigheten till Audio Focus för mediaappar på Apple-mobila enheter. Det konfigureras via AVAudioSession.sharedInstance(). Kategorier: .playback (obligatorisk för video), .soloAmbient (standard, tyst vid låsning), .playAndRecord (för inspelning). För streaming, använd .playback med alternativet .allowAirPlay.

PiP och AirPlay

Picture-in-Picture (PiP) är ett läge där medieinnehåll fortsätter att spelas upp i ett litet flytande fönster när appen minimeras eller navigerar till en annan skärm. PiP har blivit standard för mediaappar på mobila enheter — iOS (sedan iPadOS 13) och Android (sedan Android 8.0).

PiP på Android

På Android aktiveras PiP via Activity.isInPictureInPictureMode() och PictureInPictureParams.Builder. Appen måste vara i flerfönsterläge. MediaSession krävs för att styra mediauppspelning från PiP-fönstret. I manifestet anger du android:supportsPictureInPicture="true".

AirPlay och Chromecast

AirPlay är Apples protokoll för att strömma media till Apple TV, HomePod och kompatibla Smart TV-apparater. På iOS implementeras det via AVRoutePickerView eller MPNowPlayingInfoCenter. På Android är motsvarigheten Google Cast SDK (Chromecast). Båda teknologierna kräver konfiguration i den binära filen och stöd i spelaren. Kvalitativ streaming i mobilappar är omöjlig utan en av dem.

Vanliga frågor

Vilket är bättre: HLS eller DASH för en mobilapp?

För iOS är HLS bättre — det stöds native av AVPlayer. För Android och plattformsoberoende appar är DASH att föredra eftersom ExoPlayer ger bättre DASH-stöd och mer flexibel buffringskontroll. Valet av protokoll påverkar direkt streaming i mobilappar.

Är DRM obligatoriskt i en streamingapp?

DRM är obligatoriskt endast om du distribuerar premiummediainnehåll (filmer, musik, kurser). För användargenererat innehåll eller gratis sändningar behövs inte DRM. IT Sectr rekommenderar att börja utan DRM och lägga till det endast vid behov.

Vad är skillnaden mellan ExoPlayer och AVPlayerViewController?

ExoPlayer är en anpassningsbar mediaspelare för Android med stöd för DASH, HLS och SmoothStreaming. AVPlayerViewController är en native iOS-spelare för HLS med PiP och AirPlay. ExoPlayer ger mer kontroll, AVPlayerViewController kräver mindre kod. Båda ger högkvalitativ mediauppspelning i mobilappar.

Vad är Picture-in-Picture (PiP) och hur implementerar man det?

PiP är ett läge där medieinnehåll fortsätter att spelas upp i ett litet fönster när appen minimeras. På iOS aktiveras det via AVPlayerViewController-delegaten, på Android via PictureInPictureParams. Kräver manifestkonfiguration och livscykelhantering.

Varför behövs Audio Focus och Audio Session?

Audio Focus (Android) och Audio Session (iOS) hanterar samtidig ljuduppspelning från olika källor. De säkerställer att din mediaapp svarar korrekt på samtal, aviseringar och start av andra ljudappar.

Sammanfattning

  • HLS är standarden för iOS, DASH för Android. Protokollvalet beror på målplattformen och kraven på låg latens.
  • ExoPlayer ger full kontroll över mediauppspelning på Android. AVPlayerViewController ger snabb integration på iOS.
  • DRM (Widevine, FairPlay, PlayReady) skyddar premiummediainnehåll från piratkopiering. Multi-DRM är standardmetoden för premiumtjänster.
  • Audio Focus (Android) och Audio Session (iOS) hanterar appens ljudkontext. Nödvändiga för mobilappar med mediauppspelning.
  • Picture-in-Picture och AirPlay är nyckelfunktioner för moderna mediaappar. Implementering kräver livscykel- och spelarkonfiguration.
  • Adaptive Bitrate (ABR) justerar automatiskt videokvaliteten efter anslutningshastigheten på mobila enheter. Använd bakgrundsuppgifter för transkodning.
  • Hardware Decoding sparar batteri på mobila enheter. Kontrollera alltid codec-stöd via system-API:er innan du startar uppspelning.

Vi utvecklar en mobil applikation nyckelfärdigt

IT Sectr skapar iOS- och Android-applikationer för startups och företag sedan 2017. Vi ger dig råd och föreslår den bästa lösningen.

Diskutera projektet