My code worked fine until iOS 8 kAudioFormatMPEG4AAC
but now it creates an empty file. No errors are reported. When I changed it to kAudioFormatLinearPCM
it works. This is my code:
recordSettings = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithInt:AVAudioQualityMin], AVEncoderAudioQualityKey,
[NSNumber numberWithInt: kAudioFormatLinearPCM], AVFormatIDKey,
[NSNumber numberWithInt:16], AVEncoderBitRateKey,
[NSNumber numberWithInt: 1], AVNumberOfChannelsKey,
[NSNumber numberWithFloat:32000.0], AVSampleRateKey,
nil];
Please remove
AVEncoderBitRateKey
key from your settings dictionary and it will work on iOS8 withkAudioFormatMPEG4AAC
.It could be a specific correlation between
AVEncoderBitRateKey
andAVNumberOfChannelsKey
. But I didn't play with parameters but used default bitrate value to get working recorder.That bitrate looks suspiciously low, even for
kAudioFormatMPEG4AAC
(16 bytes per second), maybe try 16000 or 64000 or more.p.s. try the new Objective-C literals for your
NSDictionarys
,NSArrays
andNSNumbers
, I think they're an improvement: