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 with kAudioFormatMPEG4AAC.
It could be a specific correlation between AVEncoderBitRateKey and AVNumberOfChannelsKey. 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 and NSNumbers, I think they're an improvement:
recordSettings = @{
AVEncoderAudioQualityKey : AVAudioQualityMin,
AVFormatIDKey : @(kAudioFormatLinearPCM),
AVEncoderBitRateKey : @16000,
AVNumberOfChannelsKey : @1,
AVSampleRateKey : @32000
};
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With