Le média et le streaming sont l'une des compétences clés du développement mobile moderne. Selon Statista (2025), le marché mondial du streaming vidéo dépassera 100 milliards de dollars d'ici 2027. Les appareils mobiles représentent plus de 60 % de tout le trafic des plateformes de streaming. Le développeur doit comprendre les protocoles, les lecteurs, les mécanismes de protection du contenu et des fonctionnalités comme Picture-in-Picture. Un streaming de qualité dans les applications mobiles nécessite la maîtrise de toutes ces technologies.
L'essentiel
HTTP Live Streaming (HLS) est un protocole de streaming pour applications mobiles développé par Apple. Il divise la vidéo en petits segments (généralement 6 à 10 secondes) et les transmet via HTTP classique. Le lecteur télécharge une liste de lecture (.m3u8) et charge séquentiellement les segments, en adaptant la qualité à la vitesse de connexion. HLS offre un streaming fiable dans les applications mobiles sur tous les appareils Apple et est la norme de facto pour iOS.
DASH (Dynamic Adaptive Streaming over HTTP) est une norme ouverte MPEG pour la livraison de médias aux applications mobiles. Contrairement à HLS, DASH utilise le format MP4 pour les segments et un manifeste XML (MPD) au lieu de .m3u8. DASH offre plus de contrôle sur les codecs et prend en charge davantage de formats. Le choix entre HLS et DASH est une décision clé lors du développement du streaming pour les appareils mobiles. La comparaison des protocoles est présentée dans le tableau ci-dessous.
| Paramètre | HLS | DASH |
|---|---|---|
| Développeur | Apple | MPEG (norme ouverte) |
| Format de liste | .m3u8 | .mpd (XML) |
| Segments | .ts ou fMP4 | fMP4 (tout codec) |
| Support natif | iOS, macOS, tvOS | Android, web |
| Débit adaptatif | Oui (avc1, mp4a) | Oui (tout codec) |
| Faible latence | LL-HLS (2–5 s) | LL-DASH (2–5 s) |
En pratique, les applications iOS choisissent HLS — AVPlayer fonctionne nativement avec. Pour Android, DASH est préféré grâce à ExoPlayer. Les deux protocoles conviennent au streaming multimédia sur les appareils mobiles. Chez IT Sectr, nous utilisons les deux technologies et recommandons de choisir le protocole en fonction de la plateforme cible.
Adaptive Bitrate (ABR) est un mécanisme par lequel le lecteur sélectionne automatiquement la qualité vidéo en fonction de la vitesse de connexion. Le flux est encodé à plusieurs débits (360p, 720p, 1080p, 4K). Le lecteur bascule entre eux sans pause. Codecs : H.264 (AVC) — basique, H.265 (HEVC) — 50 % plus efficace, VP9 et AV1 — alternatives ouvertes pour Android.
Pour le décodage matériel dans les applications mobiles, il est important de choisir le bon codec. Hardware Decoding utilise le GPU/processeur vidéo de l'appareil et consomme moins de batterie. Software Decoding fonctionne sur le CPU — utilisé lorsque le décodage matériel n'est pas disponible. IT Sectr recommande de toujours vérifier la prise en charge des codecs via MediaCodec (Android) ou AVAssetTrack (iOS) pour une lecture multimédia optimale sur les appareils mobiles.
ExoPlayer est un lecteur multimédia de Google pour Android, optimisé pour la lecture de médias dans les applications mobiles. Contrairement à MediaPlayer, ExoPlayer n'est pas lié au décodage matériel et prend en charge des schémas personnalisés via des modules d'extension. Il fonctionne avec HLS, DASH, SmoothStreaming et RTSP. ExoPlayer est le lecteur principal de YouTube, Google TV et Android TV.
AVPlayer et AVPlayerViewController sont les lecteurs Apple pour iOS, macOS, tvOS. AVPlayer est une API de bas niveau, AVPlayerViewController est un wrapper d'interface utilisateur prêt à l'emploi avec PiP et AirPlay. Différences principales : ExoPlayer offre un contrôle total sur la mise en mémoire tampon et le rendu, AVPlayerViewController offre une intégration rapide avec un minimum de code. Le choix du lecteur affecte directement la qualité du streaming dans les applications mobiles.
// ExoPlayer — configuration de base du lecteur sur 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
Le code montre l'initialisation minimale d'ExoPlayer : création d'une instance, définition de l'élément multimédia et démarrage de la lecture. ExoPlayer gère automatiquement le cycle de vie de l'Activity via player.release() dans onStop. Pour Android TV ou PiP, un traitement supplémentaire du cycle de vie via PlayerView est nécessaire — c'est particulièrement important lors de la configuration du streaming pour les applications mobiles.
Transcoding est la conversion d'une vidéo d'un format à un autre. Il est utilisé pour optimiser les flux multimédia pour différents appareils mobiles (par exemple, H.264 → H.265). Sur les appareils mobiles, le transcodage est possible via MediaCodec (Android) ou AVAssetExportSession (iOS). Le transcodage est gourmand en ressources et épuise la batterie — faites-le en arrière-plan, via WorkManager ou BGTaskScheduler.
Digital Rights Management (DRM) sont des systèmes de protection des contenus multimédias contre la copie non autorisée. Trois technologies principales sont utilisées pour le streaming de médias premium dans les applications mobiles : Widevine (Google), FairPlay (Apple) et PlayReady (Microsoft). Sans DRM, les services premium (Netflix, Spotify, Disney+) ne peuvent pas distribuer de contenu.
Widevine est la norme de protection DRM pour Android, disponible en trois niveaux : L3 (chiffrement logiciel), L2, L1 (chiffrement matériel, Trusted Execution Environment uniquement). FairPlay est le système exclusif d'Apple, utilisant SVP (Secure Video Pipeline) au niveau de la puce. PlayReady est le système de Microsoft, répandu sur les appareils Xbox et Windows.
Multi-DRM est une approche où vous utilisez une seule plateforme pour gérer toutes les clés DRM. Exemple : EZDRM ou Verimatrix. Ils délivrent des licences Widevine, FairPlay et PlayReady via une API unifiée. Le Multi-DRM est particulièrement pertinent pour les médias premium sur les appareils mobiles. Chez IT Sectr, nous implémentons le multi-DRM via des agrégateurs — cela économise du temps et de l'argent par rapport à l'intégration de chaque DRM séparément.
Audio Focus (Android) est un système de gestion des flux audio pour la lecture de médias dans les applications mobiles. Lorsque votre application demande Audio Focus, les autres applications (musique, podcasts) se mettent en pause ou réduisent leur volume (ducking). Sans Audio Focus, deux applications joueraient simultanément, créant du bruit.
Android divise les flux audio en types : MUSIC, VOICE_CALL, ALARM, NOTIFICATION. Pour un lecteur multimédia, vous devez demander AudioManager.AUDIOFOCUS_GAIN. En cas de perte de focus (appel entrant), vous devez mettre en pause la lecture multimédia et reprendre après le retour du focus. Implémentation via AudioManager.OnAudioFocusChangeListener.
Audio Session (iOS) est l'équivalent d'Audio Focus pour les applications multimédias sur les appareils mobiles Apple. Il est configuré via AVAudioSession.sharedInstance(). Catégories : .playback (obligatoire pour la vidéo), .soloAmbient (par défaut, silencieux lors du verrouillage), .playAndRecord (pour l'enregistrement). Pour le streaming, utilisez .playback avec l'option .allowAirPlay.
Picture-in-Picture (PiP) est un mode dans lequel le contenu multimédia continue de jouer dans une petite fenêtre flottante lors de la réduction de l'application ou de la navigation vers un autre écran. PiP est devenu un standard pour les applications multimédias sur les appareils mobiles — iOS (depuis iPadOS 13) et Android (depuis Android 8.0).
Sur Android, PiP est activé via Activity.isInPictureInPictureMode() et PictureInPictureParams.Builder. L'application doit être en mode multi-fenêtre. MediaSession est nécessaire pour contrôler la lecture multimédia depuis la fenêtre PiP. Dans le manifeste, spécifiez android:supportsPictureInPicture="true".
AirPlay est le protocole d'Apple pour diffuser des médias sur Apple TV, HomePod et les téléviseurs intelligents compatibles. Sur iOS, il est implémenté via AVRoutePickerView ou MPNowPlayingInfoCenter. Sur Android, l'équivalent est Google Cast SDK (Chromecast). Les deux technologies nécessitent une configuration dans le fichier binaire et une prise en charge dans le lecteur. Un streaming de qualité dans les applications mobiles est impossible sans l'une d'elles.
Questions fréquentes
Pour iOS, HLS est meilleur — il est nativement supporté par AVPlayer. Pour Android et les applications multiplateformes, DASH est préférable car ExoPlayer offre un meilleur support pour DASH et un contrôle plus flexible de la mise en mémoire tampon. Le choix du protocole affecte directement le streaming dans les applications mobiles.
DRM est obligatoire uniquement si vous distribuez du contenu multimédia premium (films, musique, cours). Pour le contenu généré par l'utilisateur ou les diffusions free-to-air, DRM n'est pas nécessaire. IT Sectr recommande de commencer sans DRM et de l'ajouter uniquement si nécessaire.
ExoPlayer est un lecteur multimédia personnalisable pour Android avec support de DASH, HLS et SmoothStreaming. AVPlayerViewController est un lecteur natif iOS pour HLS avec PiP et AirPlay. ExoPlayer offre plus de contrôle, AVPlayerViewController nécessite moins de code. Les deux offrent une lecture multimédia de qualité dans les applications mobiles.
PiP est un mode dans lequel le contenu multimédia continue de jouer dans une petite fenêtre lors de la réduction de l'application. Sur iOS, il est activé via le délégué AVPlayerViewController, sur Android via PictureInPictureParams. Nécessite une configuration du manifeste et une gestion du cycle de vie.
Audio Focus (Android) et Audio Session (iOS) gèrent la lecture audio simultanée provenant de différentes sources. Ils garantissent que votre application multimédia réponde correctement aux appels, notifications et au lancement d'autres applications audio.
Résumé
Nous développerons une application mobile clé en main
IT Sectr crée des applications iOS et Android pour les startups et les entreprises depuis 2017. Nous vous conseillerons et vous proposerons la meilleure solution.