AVFoundation para Swift: guía completa con ejemplos

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Introducción a AVFoundation

\n\n

AVFoundation es un potente framework de Apple, diseñado para trabajar con audio y video en las plataformas iOS, macOS, tvOS y watchOS. Proporciona a los desarrolladores una API de alto nivel para capturar, procesar, reproducir y editar contenido multimedia. A diferencia de soluciones de nivel más bajo (como Core Audio o Video Toolbox), AVFoundation abstrae los detalles complejos de códecs, contenedores y sincronización, permitiendo centrarse en la lógica de la aplicación.

\n\n

¿Para qué sirve AVFoundation? Permite resolver una amplia gama de tareas:

\n
    \n
  • Reproducción: Reproducir archivos de audio (MP3, AAC, WAV) y archivos de video (MP4, MOV, M4V) con soporte para subtítulos y capítulos.
  • \n
  • Grabación: Capturar video de la cámara y audio del micrófono en tiempo real.
  • \n
  • Edición: Crear composiciones a partir de múltiples pistas, aplicar efectos, recortar, cambiar la velocidad.
  • \n
  • Procesamiento: Extraer metadatos, trabajar con muestras de audio, aplicar filtros.
  • \n
  • Streaming: Reproducir contenido HLS (HTTP Live Streaming).
  • \n
\n\n

AVFoundation es el estándar de facto para el desarrollo en Apple. Si estás escribiendo una aplicación que necesita reproducir música, grabar video o editar podcasts, utilizarás este framework.

\n\n

Instalación (Conexión al proyecto)

\n\n

AVFoundation no se instala a través de pip o npm, ya que es un framework nativo de Apple. Está integrado en Xcode y el SDK. Para usarlo, simplemente importa el módulo en los archivos Swift.

\n\n

Pasos para la conexión:

\n
    \n
  1. Abre tu proyecto en Xcode.
  2. \n
  3. En cualquier archivo Swift donde necesites trabajar con multimedia, agrega la línea de importación:
  4. \n
\n\n
import AVFoundation
\n\n

No se requieren acciones adicionales. El framework está automáticamente disponible para todos los proyectos iOS/macOS.

\n\n

Configuración de permisos (iOS)

\n

Para trabajar con la cámara y el micrófono, es necesario agregar líneas al archivo Info.plist:

\n
    \n
  • NSCameraUsageDescription — descripción de por qué la aplicación necesita la cámara.
  • \n
  • NSMicrophoneUsageDescription — descripción de por qué la aplicación necesita el micrófono.
  • \n
\n

Sin estas claves, la aplicación fallará con un error al intentar acceder a los dispositivos.

\n\n

Inicio rápido: Reproducción de audio

\n\n

El ejemplo más simple es reproducir un archivo de audio local. Crea una instancia de AVAudioPlayer y llama al método play().

\n\n
import AVFoundation\nimport UIKit\n\nclass ViewController: UIViewController {\n    var audioPlayer: AVAudioPlayer?\n\n    override func viewDidLoad() {\n        super.viewDidLoad()\n        \n        // 1. Buscamos la ruta al archivo en el Bundle\n        guard let path = Bundle.main.path(forResource: "sample", ofType: "mp3") else {\n            print("Archivo no encontrado")\n            return\n        }\n        \n        let url = URL(fileURLWithPath: path)\n        \n        do {\n            // 2. Inicializamos el reproductor\n            audioPlayer = try AVAudioPlayer(contentsOf: url)\n            // 3. Preparamos para la reproducción (opcional, pero recomendado)\n            audioPlayer?.prepareToPlay()\n            // 4. Iniciamos\n            audioPlayer?.play()\n            print("Reproducción iniciada")\n        } catch {\n            print("Error al inicializar el reproductor: \\(error.localizedDescription)")\n        }\n    }\n}
\n\n

Este código crea un reproductor, carga el archivo sample.mp3 desde los recursos de la aplicación y comienza su reproducción.

\n\n

Clases y métodos principales

\n\n

A continuación se presentan las clases y métodos clave de AVFoundation que se utilizan en el 90% de las tareas. Para cada método se proporciona una descripción, parámetros y un ejemplo funcional.

\n\n

1. AVAudioPlayer

\n

Qué

Recommendations