AVAudioRecorder in iOS 8 does not handle kAudioFor

2019-06-22 05:52发布

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];

2条回答
对你真心纯属浪费
2楼-- · 2019-06-22 06:33

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.

查看更多
Summer. ? 凉城
3楼-- · 2019-06-22 06:33

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
}; 
查看更多
登录 后发表回答