У меня есть приложение, которое использует AVAudioRecorder и AVAudioPlayer. Он записывает и играет отлично, но иногда записи обрезаются прямо вокруг отметки в одну минуту. Это происходит не все время и когда это происходит, оно по-прежнему действует подобно записи (audioRecorderEncodeErrorDidOccur не вызывается, а audioRecorderDidFinishRecording делает, когда пользователь останавливает запись). Сам звуковой файл усечен менее чем за минуту.AVAudioRecorder отключает записи
Вот кодирование я использую (soundFileURL является appsdocdir/somethingrandom.m4a Файл и имя файла получить создан правильно):
NSDictionary *recordSetting = [[NSMutableDictionary alloc] init];
[recordSetting setValue:[NSNumber numberWithInt:kAudioFormatAppleLossless] forKey:AVFormatIDKey];
[recordSetting setValue:[NSNumber numberWithFloat:44100.0] forKey:AVSampleRateKey];
[recordSetting setValue:[NSNumber numberWithInt: 2] forKey:AVNumberOfChannelsKey];
[recordSetting setValue:[NSNumber numberWithInt:16] forKey:AVLinearPCMBitDepthKey];
[recordSetting setValue:[NSNumber numberWithBool:NO] forKey:AVLinearPCMIsBigEndianKey];
[recordSetting setValue:[NSNumber numberWithBool:NO] forKey:AVLinearPCMIsFloatKey];
NSError *error = nil;
self->audioRecorder = nil;
audioRecorder = [[AVAudioRecorder alloc]
initWithURL:soundFileURL
settings:recordSetting
error:&error];
if (error)
{
NSLog(@"error: %@", [error localizedDescription]);
} else {
audioRecorder.delegate = self;
[audioRecorder prepareToRecord];
audioRecorder.meteringEnabled = YES;
}
Я думаю, что его проблема кодирования, потому что, если я смотрю на журнал устройства Я вижу это:
10 мая 10:17:23 т-iPhone mediaserverd [39]: 10: 17: 23,451 < 0x282f000> AudioConverterNew вернулся -50
мая 10 10:17:23 трет-iPhone mediaserverd [39]: 10: 17: 23,453 < 0x282f000> IO_ChangeIOFormat: ошибка -50
10 мая 10:17:23 т-iPhone mediaserverd [39]: 10:17 : 23,463 < 0x282f000> Queue_ChangeIOFormat: не удалось (-50)
EDIT: Это был вопрос, что soundFileURL было. Я кратко упомянул об этом выше, но вот фактический код. Файл и имена файлов выглядят правильно после записи:
NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"MMMMdyyyyA"];
NSString *recordDate = [formatter stringFromDate:[NSDate date]];
filename = [[NSString alloc] initWithFormat:@"%d-%@.m4a", idNumber, recordDate];
NSArray *dirPaths;
NSString *docsDir;
dirPaths = NSSearchPathForDirectoriesInDomains(
NSDocumentDirectory, NSUserDomainMask, YES);
docsDir = [dirPaths objectAtIndex:0];
NSString *soundFilePath = [docsDir
stringByAppendingPathComponent:filename];
soundFileURL = [NSURL fileURLWithPath:soundFilePath];
Вы тестирование на устройстве? – matt
Что у вас есть в качестве soundFileURL? –
matt: Да. Тестирование на iPhone 5 – tharris