15. Vídeo y audio
En este módulo cubriremos las APIs y herramientas avanzadas de Android para reproducción, grabación y procesamiento de contenido multimedia.
15.1 Reproducción de vídeo
-
VideoView (uso básico)
Componente de muy alto nivel, fácil de integrar para streams o ficheros locales.
-
MediaPlayer (control detallado)
Permite gestionar estados, eventos (onPrepared, onCompletion), ajustar volumen y pistas de subtítulos.
-
ExoPlayer (alto rendimiento y streaming adaptativo)
Biblioteca de Google con soporte nativo para DASH, HLS, CMAF y DRM (Widevine).
Comparativa de componentes
Framework | Simpleza | Streaming adaptativo | DRM |
VideoView | Muy alto | No | No |
MediaPlayer | Medio | Limitado | Bajo (encapsulado) |
ExoPlayer | Medio-bajo | Sí (DASH, HLS) | Sí (Widevine, PlayReady) |
15.2 Reproducción de audio
- MediaPlayer: para pistas locales o streams básicos.
- ExoPlayer: adaptación a bitrate variable, audio multicanal.
- AudioTrack: salida de audio de bajo nivel, latencia reducida.
Puede combinarse con SoundPool para efectos de sonido cortos y simultáneos.
15.3 Grabación de vídeo y audio
-
MediaRecorder
API de alto nivel para capturar cámara y micrófono en MP4, AAC, 3GP.
-
Camera2 MediaCodec
Permite configuración de resolución, velocidad de fotogramas y codificación en tiempo real.
-
AudioRecord
Captura de audio en crudo (PCM), útil para procesado DSP o envío por red.
15.4 Procesamiento y sincronización
- MediaSync: sincroniza vídeo y audio de manera programática.
- Surface y SurfaceTexture: salida de vídeo a OpenGL ES o TextureView.
- Buffering y manejo de latencia: ajustar buffer size en AudioTrack.
15.5 Codificación y decodificación con MediaCodec
API de bajo nivel para acceso a códecs HW/SW. Flujo típico:
- Obtener MediaCodec para códec (“video/avc”, “audio/mp4a-latm”).
- Configurar MediaFormat (ancho, alto, bitrate, sample rate).
- Encolar buffers de entrada y extraer buffers de salida.
- Gestionar eventos onInputBufferAvailable y onOutputBufferAvailable.
15.6 Buenas prácticas y optimización
- Siempre liberar MediaPlayer, ExoPlayer, MediaCodec y recursos de cámara.
- Ejecutar procesamiento intensivo en Threads o Coroutines.
- Usar Foreground Service para reproducción en background y notificaciones.
- Monitorizar uso de memoria y CPU con Android Profiler.
- Implementar manejo de errores (onError, reconexión de streams).
Profundizando sobre: 15. Vídeo y audio
Libros:
- Android Multimedia: Captura y reproducción de audio y vídeo – José Luis Velázquez. Guía práctica con ejemplos de Camera2, MediaRecorder y ExoPlayer.
- Professional Android, 4th Edition – Reto Meier y Ian Lake. Capítulo dedicado a audio, vídeo y streaming en Android.
- Android Programming: Pushing the Limits – Erik Hellman. Sección avanzada sobre procesamiento de audio en tiempo real y APIs de vídeo.
Vídeo:
- Canal oficial Android Developers en YouTube: serie “CameraX: Next-gen Camera API” y “Media Playback”.
- Curso “Android Multimedia” en Udemy por Diego Velázquez: módulos sobre Camera2, ExoPlayer y codificación de vídeo.
- Google I/O Talks: “Building High-Performance Video Apps” y “Modern Audio in Android”.
Audio:
- Podcast “Fragmented”: episodio 193 “Multimedia on Android” y 205 “Building a Video Player”.
- Podcast “AndroidBytes”: entregas 45 “Audio Focus Playback” y 60 “ExoPlayer Deep Dive”.
- Curso “Android Audio Fundamentals” en Pluralsight: cubre AudioTrack, AudioRecord y manejo de efectos.
Deja una respuesta