2010-05-18 13 views
5

Quiero inicializar un AVAudioRecorder con un formato de archivo AAC, pero no funciona ...inicialización de AVAudioRecorder con aac

¿Cuál es incorrecto con el siguiente código?

soundFilePath = [soundFilePath stringByAppendingPathExtension:@"aac"]; 
NSURL *url = [NSURL fileURLWithPath:soundFilePath isDirectory:FALSE]; 
NSMutableDictionary *recordSetting = [[NSMutableDictionary alloc] init]; 
[recordSetting setValue:[NSNumber numberWithInt: 'aac '] forKey:AVFormatIDKey];          //General Audio Format Settings 
[recordSetting setValue:[NSNumber numberWithFloat:44100.0] forKey:AVSampleRateKey];         //   " 
[recordSetting setValue:[NSNumber numberWithInt: 2] forKey:AVNumberOfChannelsKey];         //   " 
[recordSetting setValue:[NSNumber numberWithInt: 32] forKey:AVLinearPCMBitDepthKey];        //Linear PCM Format Settings 
[recordSetting setValue:[NSNumber numberWithBool:NO] forKey:AVLinearPCMIsBigEndianKey];        //   " 
[recordSetting setValue:[NSNumber numberWithBool:NO] forKey:AVLinearPCMIsFloatKey];         //   " 
[recordSetting setValue:[NSNumber numberWithInt:AVAudioQualityLow] forKey:AVEncoderAudioQualityKey];    //Encoder Settings 
[recordSetting setValue:[NSNumber numberWithInt:96] forKey:AVEncoderBitRateKey];         //   " 
[recordSetting setValue:[NSNumber numberWithInt:16] forKey:AVEncoderBitDepthHintKey];        //   " 
[recordSetting setValue:[NSNumber numberWithInt:AVAudioQualityLow] forKey:AVSampleRateConverterAudioQualityKey]; //Sample Rate Conversion Settings 

_recorder = [[AVAudioRecorder alloc] initWithURL:url settings:recordSetting error:nil]; 

esta asignación sólo devuelve nil ...

será apreciado Cualquier ayuda ...!

Respuesta

-1

[recordSetting setValue :[NSNumber numberWithInt:kAudioFormatMPEG4AAC_HE_V2] forKey:AVFormatIDKey]; El formato para esto es una enumeración. Trata de ver las enumeraciones. No hay una ID de formato para 'aac'. Tiene aacp y otros.

+0

Hay'aac ''formatIDKey': kAudioFormatMPEG4AAC. – memmons

-1

Simplemente use la siguiente configuración para grabar voz en el archivo aac.

recordSetting = [[NSMutableDictionary alloc] init]; 
    [recordSetting setValue:[NSNumber numberWithInt:kAudioFormatAppleLossless] forKey:AVFormatIDKey]; 
    [recordSetting setValue:[NSNumber numberWithFloat:44100.0] forKey:AVSampleRateKey]; 
    [recordSetting setValue:[NSNumber numberWithInt: 2] forKey:AVNumberOfChannelsKey]; 
    [recordSetting setValue:[NSNumber numberWithInt:16] forKey:AVLinearPCMBitDepthKey]; 
    [recordSetting setValue:[NSNumber numberWithBool:NO] forKey:AVLinearPCMIsBigEndianKey]; 
    [recordSetting setValue:[NSNumber numberWithBool:NO] forKey:AVLinearPCMIsFloatKey];
+1

El formato Apple Lossless es _no_ AAC. – memmons

1

iOS 5 permite grabar a AAC. Pruebe esto usando "kAudioFormatMPEG4AAC" para AVFormatIDKey.

3

Retire cada línea acerca de PCM, y la línea de cambio con formatIDKey a

[NSNumber numberWithInt: kAudioFormatMPEG4AAC], AVFormatIDKey, 

Por cierto, es más adecuado utilizar m4a como una extensión, en lugar de aac, debido a la extensión AAC se utiliza para el formato MPEG2 AAC.

Cuestiones relacionadas