¿Cómo reproducir sonidos en iOS?

| Última modificación: 9 de octubre de 2024 | Tiempo de Lectura: 2 minutos

Algunos de nuestros reconocimientos:

Premios KeepCoding

Reproducir sonidos en iOS: Formatos de Sonido para iPhone e iPad

Con Cocoa-Touch puedes reproducir sonidos en iOS utilizando los siguientes formatos:

  1. wav (no comprimido)
  2. mp3 (comprimido)
  3. aiff (comprimido)
  4. caff (no comprimido)
Ogg, a fecha de hoy (Junio 2011) no es uno de ellos. Los formatos preferidos son CAFF (Core Audio File Format) y AIFF (Audio Interchange File Format). Son los que menos recursos consumirán.
reproducir sonidos en iOS

¿Qué formato de sonido es más adecuado para iOS?

Para reproducir sonidos iOS es conveniente es conveniente conocer el formato más adecuado. Para sonidos cortos, como un bip al tocar un botón, el ideal es CAFF. Al no ser comprimido, iOS no tendrá que perder el tiempo descomprimiéndolo y sonará casi instantaneamente. Apple recomienda no usarlo para ficheros de más de 30 segundos de duración.

Para sonidos más largos, es preferible usar el formato AIFF (que logra compresiones de hasta 4:1). iOS lo irá descomprimiendo sobre la marcha, a medida que lo reproduce.

Convertir sonidos al formato adecuado para Cocoa

Si tienes un sonido en mp3 o wav y deseas convertirlo a alguno de estos formatos para reproducir sonidos en iOS, la herramienta necesaria viene incluída con el SDK de iPhone. Es una utilidad de linea de comandos llamada afconvert.

Algunos ejemplos del uso de afconvert:

# creates sound.caf (little endian, 16 bit)
afconvert -f caff -d LEI16 sound.wav

# creates sound.caf (little endian, 16 bit, 22kHz)
afconvert -f caff -d LEI16@22050 sound.wav

# creates sound.caf (little endian, 16 bit, MONO)
afconvert -f caff -d LEI16 -c 1 sound.wav

# creates sound.aifc (IMA4 compression)
afconvert -f AIFC -d ima4 sound.wav

# creates sound.aifc (IMA4 compression, MONO)
afconvert -f AIFC -d ima4 -c 1 sound.wav

Reproducir un sonido corto en iOS

Lo primero es añadir la siguiente framework a tu proyecto: AudioToolbox. Luego tienes que #import <AudioToolbox/AudioServices.h>

Crear un SystemSoundID para tu sonido

- (void)viewDidLoad
{
    [superviewDidLoad];
    NSString *path = [[NSBundlemainBundle] pathForResource:@"btn"ofType:@"caf"];
    NSURL *url = [NSURLfileURLWithPath:path isDirectory:NO];
    SystemSoundID id;
    OSStatus res = AudioServicesCreateSystemSoundID((CFURLRef)url, &id);
    if (res == kAudioServicesNoError) {
        self.btnClickId = id;
}

}

Reproducir el sonido

-(IBAction) playClic: (id) sender{
    AudioServicesPlaySystemSound(self.btnClickId);
}

Recuerda que luego habrá que llamar a AudioServicesDisposeSystemSoundID() para liberar recursos.

Reproducir un sonido largo en iOS

Lo primero es añadir las siguientes frameworks a tu proyecto:

  • AVFoundation
  • MediaPlayer
luego haz un #import <AVFoundation/AVAudioPlayer.h>.
-(IBAction) playLongSound: (id) sender{
    NSString *filePath = [[NSBundlemainBundle] pathForResource:@"beach_waves"ofType:@"aifc"];
    NSError *err = nil;
    NSData *soundData = [[NSDataalloc] initWithContentsOfFile:filePath options:NSDataReadingMappederror:&err];

    AVAudioPlayer *p = [[AVAudioPlayeralloc] initWithData:soundData error:&err];
    self.player = p;

    self.player.numberOfLoops = -1;
    [self.playerplay];}
Todos estos ejemplos suponen que los archivos de sonido han sido previamente añadidos a tu proyecto.

Donde obtener sonidos

Un excelente lugar para buscar sonidos bajo licencia Creative Commons es Freesound. Si no encuentras lo que buscas, pídelo en el foro. Los gurus del audio que allí habitan  son muy amables y es más que seguro que alguien grabe o cree el sonido que has pedido.

Fernando Rodríguez

Sígueme en twitter.
Cursos de desarrollo iPhone

Si quieres saber más, suscríbete. Y si te gusta la programación y aprender sobre lo último de lo último en tecnología, mira nuestros bootcamps.

Fernando Rodríguez

iOS Developer & Co-Fundador de KeepCoding

Posts más leídos