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