15. Vídeo y audio

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

  1. VideoView (uso básico)

    Componente de muy alto nivel, fácil de integrar para streams o ficheros locales.

  2. MediaPlayer (control detallado)

    Permite gestionar estados, eventos (onPrepared, onCompletion), ajustar volumen y pistas de subtítulos.

  3. 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

  1. MediaRecorder

    API de alto nivel para capturar cámara y micrófono en MP4, AAC, 3GP.

  2. Camera2 MediaCodec

    Permite configuración de resolución, velocidad de fotogramas y codificación en tiempo real.

  3. 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:

  1. Obtener MediaCodec para códec (“video/avc”, “audio/mp4a-latm”).
  2. Configurar MediaFormat (ancho, alto, bitrate, sample rate).
  3. Encolar buffers de entrada y extraer buffers de salida.
  4. 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.

PreviusNext


¿Necesitas ayuda con este punto? Nuestra IA te puede ayudar

  • Hola 👋 , soy la IA de Synzen.org, puedes preguntarme siempre sobre la página donde estás leyendo, yo también la leo, así que puedo ayudarte a entenderlo, expandirlo, ponerte ejercicios…¡y mucho más!
Quiero saber más sobre… ...

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *