Los medios y el streaming son una de las competencias clave del desarrollo móvil moderno. Según Statista (2025), el mercado mundial de vídeo en streaming superará los 100 mil millones de dólares en 2027. Los dispositivos móviles representan más del 60% de todo el tráfico de las plataformas de streaming. El desarrollador debe comprender los protocolos, los reproductores, los mecanismos de protección de contenido y funciones como Picture-in-Picture. El streaming de calidad en aplicaciones móviles requiere el dominio de todas estas tecnologías.
Lo más importante
HTTP Live Streaming (HLS) es un protocolo para streaming en aplicaciones móviles desarrollado por Apple. Divide el vídeo en pequeños segmentos (generalmente de 6 a 10 segundos) y los transmite a través de HTTP normal. El reproductor descarga una lista de reproducción (.m3u8) y carga secuencialmente los segmentos, adaptando la calidad a la velocidad de la conexión. HLS proporciona un streaming fiable en aplicaciones móviles en todos los dispositivos Apple y es el estándar de facto para iOS.
DASH (Dynamic Adaptive Streaming over HTTP) es un estándar abierto MPEG para la entrega de contenido multimedia a aplicaciones móviles. A diferencia de HLS, DASH utiliza formato MP4 para los segmentos y un manifiesto XML (MPD) en lugar de .m3u8. DASH ofrece más control sobre los códecs y admite más formatos. La elección entre HLS y DASH es una decisión clave al desarrollar streaming para dispositivos móviles. La comparación de protocolos se muestra en la siguiente tabla.
| Parámetro | HLS | DASH |
|---|---|---|
| Desarrollador | Apple | MPEG (estándar abierto) |
| Formato de lista | .m3u8 | .mpd (XML) |
| Segmentos | .ts o fMP4 | fMP4 (cualquier códec) |
| Soporte nativo | iOS, macOS, tvOS | Android, web |
| Bitrate adaptativo | Sí (avc1, mp4a) | Sí (cualquier códec) |
| Baja latencia | LL-HLS (2–5 s) | LL-DASH (2–5 s) |
En la práctica, las aplicaciones iOS eligen HLS — AVPlayer funciona con él de forma nativa. Para Android, se prefiere DASH gracias a ExoPlayer. Ambos protocolos son adecuados para streaming de medios en dispositivos móviles. En IT Sectr, utilizamos ambas tecnologías y recomendamos elegir el protocolo según la plataforma objetivo.
Adaptive Bitrate (ABR) es un mecanismo mediante el cual el reproductor selecciona automáticamente la calidad del vídeo según la velocidad de la conexión. El flujo se codifica en múltiples bitrates (360p, 720p, 1080p, 4K). El reproductor cambia entre ellos sin pausas. Códecs: H.264 (AVC) — básico, H.265 (HEVC) — 50% más eficiente, VP9 y AV1 — alternativas abiertas para Android.
Para la decodificación por hardware en aplicaciones móviles, es importante elegir el códec correcto. Hardware Decoding utiliza la GPU/procesador de vídeo del dispositivo y consume menos batería. Software Decoding funciona en la CPU — se usa cuando la decodificación por hardware no está disponible. IT Sectr recomienda verificar siempre la compatibilidad de códecs a través de MediaCodec (Android) o AVAssetTrack (iOS) para una reproducción óptima de medios en dispositivos móviles.
ExoPlayer es un reproductor multimedia de Google para Android, optimizado para la reproducción de medios en aplicaciones móviles. A diferencia de MediaPlayer, ExoPlayer no está vinculado a la decodificación por hardware y admite esquemas personalizados a través de módulos de extensión. Funciona con HLS, DASH, SmoothStreaming y RTSP. ExoPlayer es el reproductor principal de YouTube, Google TV y Android TV.
AVPlayer y AVPlayerViewController son reproductores de Apple para iOS, macOS, tvOS. AVPlayer es una API de bajo nivel, AVPlayerViewController es un envoltorio de UI listo para usar con PiP y AirPlay. Diferencias principales: ExoPlayer ofrece control total sobre el almacenamiento en búfer y la representación, AVPlayerViewController ofrece integración rápida con código mínimo. La elección del reproductor afecta directamente la calidad del streaming en aplicaciones móviles.
// ExoPlayer — configuración básica del reproductor en 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
El código muestra la inicialización mínima de ExoPlayer: creación de una instancia, configuración del elemento multimedia e inicio de la reproducción. ExoPlayer maneja automáticamente el ciclo de vida de Activity a través de player.release() en onStop. Para Android TV o PiP, se requiere manejo adicional del ciclo de vida mediante PlayerView — esto es especialmente importante al configurar streaming para aplicaciones móviles.
Transcoding es la conversión de vídeo de un formato a otro. Se utiliza para optimizar flujos multimedia para diferentes dispositivos móviles (por ejemplo, H.264 → H.265). En dispositivos móviles, la transcodificación es posible a través de MediaCodec (Android) o AVAssetExportSession (iOS). La transcodificación consume muchos recursos y agota la batería — hágalo en segundo plano mediante WorkManager o BGTaskScheduler.
Digital Rights Management (DRM) son sistemas de protección de contenido multimedia contra la copia no autorizada. Se utilizan tres tecnologías principales para el streaming de contenido premium en aplicaciones móviles: Widevine (Google), FairPlay (Apple) y PlayReady (Microsoft). Sin DRM, los servicios premium (Netflix, Spotify, Disney+) no pueden distribuir contenido.
Widevine es el estándar de protección DRM para Android, disponible en tres niveles: L3 (cifrado por software), L2, L1 (cifrado por hardware, solo Trusted Execution Environment). FairPlay es el sistema exclusivo de Apple, utiliza SVP (Secure Video Pipeline) a nivel de chip. PlayReady es el sistema de Microsoft, extendido en dispositivos Xbox y Windows.
Multi-DRM es un enfoque en el que se utiliza una única plataforma para gestionar todas las claves DRM. Por ejemplo: EZDRM o Verimatrix. Emiten licencias Widevine, FairPlay y PlayReady a través de una API unificada. Multi-DRM es especialmente relevante para contenido premium en dispositivos móviles. En IT Sectr, implementamos multi-DRM a través de agregadores — esto ahorra tiempo y dinero en comparación con integrar cada DRM por separado.
Audio Focus (Android) es un sistema de gestión de flujos de audio para la reproducción de medios en aplicaciones móviles. Cuando tu aplicación solicita Audio Focus, otras aplicaciones (música, podcasts) se pausan o reducen su volumen (ducking). Sin Audio Focus, dos aplicaciones se reproducirían simultáneamente, creando ruido.
Android divide los flujos de audio en tipos: MUSIC, VOICE_CALL, ALARM, NOTIFICATION. Para un reproductor multimedia, es necesario solicitar AudioManager.AUDIOFOCUS_GAIN. Al perder el foco (llamada entrante), debes pausar la reproducción y reanudarla cuando el foco regrese. Implementación a través de AudioManager.OnAudioFocusChangeListener.
Audio Session (iOS) es el equivalente de Audio Focus para aplicaciones multimedia en dispositivos móviles Apple. Se configura a través de AVAudioSession.sharedInstance(). Categorías: .playback (obligatoria para vídeo), .soloAmbient (predeterminada, silencio al bloquear), .playAndRecord (para grabación). Para streaming, use .playback con la opción .allowAirPlay.
Picture-in-Picture (PiP) es un modo en el que el contenido multimedia continúa reproduciéndose en una pequeña ventana flotante al minimizar la aplicación o al navegar a otra pantalla. PiP se ha convertido en un estándar para aplicaciones multimedia en dispositivos móviles — iOS (desde iPadOS 13) y Android (desde Android 8.0).
En Android, PiP se habilita mediante Activity.isInPictureInPictureMode() y PictureInPictureParams.Builder. La aplicación debe estar en modo multiventana. Se requiere MediaSession para controlar la reproducción desde la ventana PiP. En el manifiesto, especifique android:supportsPictureInPicture="true".
AirPlay es el protocolo de Apple para transmitir contenido multimedia a Apple TV, HomePod y Smart TV compatibles. En iOS, se implementa mediante AVRoutePickerView o MPNowPlayingInfoCenter. En Android, el equivalente es Google Cast SDK (Chromecast). Ambas tecnologías requieren configuración en el archivo binario y soporte en el reproductor. El streaming de calidad en aplicaciones móviles es imposible sin una de ellas.
Preguntas frecuentes
Para iOS es mejor HLS — es compatible de forma nativa con AVPlayer. Para Android y aplicaciones multiplataforma, es preferible DASH, ya que ExoPlayer proporciona mejor soporte para DASH y un control más flexible del almacenamiento en búfer. La elección del protocolo afecta directamente al streaming en aplicaciones móviles.
DRM es obligatorio solo si distribuyes contenido multimedia premium (películas, música, cursos). Para contenido generado por el usuario o transmisiones free-to-air, no se necesita DRM. IT Sectr recomienda comenzar sin DRM y añadirlo solo cuando sea necesario.
ExoPlayer es un reproductor multimedia personalizable para Android con soporte para DASH, HLS y SmoothStreaming. AVPlayerViewController es un reproductor nativo de iOS para HLS con PiP y AirPlay. ExoPlayer ofrece más control, AVPlayerViewController requiere menos código. Ambos proporcionan una reproducción multimedia de calidad en aplicaciones móviles.
PiP es un modo en el que el contenido multimedia continúa reproduciéndose en una pequeña ventana al minimizar la aplicación. En iOS se activa mediante el delegado de AVPlayerViewController, en Android mediante PictureInPictureParams. Requiere configuración en el manifiesto y manejo del ciclo de vida.
Audio Focus (Android) y Audio Session (iOS) gestionan la reproducción simultánea de audio de diferentes fuentes. Garantizan que tu aplicación multimedia responda correctamente a llamadas, notificaciones y al inicio de otras aplicaciones de audio.
Resumen
Desarrollaremos una aplicación móvil llave en mano
IT Sectr crea aplicaciones para iOS y Android para startups y empresas desde 2017. Le asesoraremos y le propondremos la mejor solución.