У меня есть приложение, которое записывает звук с помощью AVAudioRecorder. Он отлично работает на устройствах с версиями iOS до iOS 5.1, но с последней версией он не увеличивает размер файла аудиозаписи, который остается на постоянном уровне 4k.
// init audio recorder here so recording could be started immediately
NSDictionary *recordSettings = [NSDictionary
dictionaryWithObjectsAndKeys:
[NSNumber numberWithInt:kAudioFormatAppleIMA4],
AVFormatIDKey,
[NSNumber numberWithInt: 1],
AVNumberOfChannelsKey,
[NSNumber numberWithFloat:44100.0],
AVSampleRateKey,
nil];
// Get temp path name
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
NSString *cachePath = [paths objectAtIndex:0];
BOOL isDir = NO;
NSError *error = nil;
if (![[NSFileManager defaultManager] fileExistsAtPath:cachePath isDirectory:&isDir] && isDir == NO) {
[[NSFileManager defaultManager] createDirectoryAtPath:cachePath withIntermediateDirectories:NO attributes:nil error:&error];
}
self.audioFilePath = [cachePath stringByAppendingPathComponent:@"audio.ima4"];
NSURL *audioFileURL = [NSURL fileURLWithPath:self.audioFilePath];
AVAudioRecorder *anAudioRecorder = [[AVAudioRecorder alloc] initWithURL:audioFileURL
settings:recordSettings
error:&error];
self.audioRecorder = anAudioRecorder;
[anAudioRecorder release];
[self.audioRecorder prepareToRecord];
(подождите, пользователь нажмет запись)
[self.audioRecorder record];
(подождите, 5-10 секунд, пользователь нажимает стоп)
[self.audioRecorder stop];
Я поместил отладочные операторы, которые проверяют размер временного файла, и он составляет 4096 байт во время записи и только 4130 байт после вызова stop.
Я не вижу способа обойти это. Это ошибка в iOS 5.1?