Сохранение записанного звукового файла AVAudioRecorder: что теперь? (iOS, Xcode 4) - PullRequest
2 голосов
/ 20 февраля 2012

В моем приложении я хочу, чтобы пользователь мог записать один звуковой файл и воспроизвести его, а затем сохранить звуковой файл для дальнейшего использования. Я использовал этот урок для настройки интерфейса воспроизведения и записи, но в этом уроке пропущена ключевая часть: как мне постоянно сохранить звук на диск?

Кроме того, пока вы здесь, как установить максимальное время записи звукового файла? Я не хочу, чтобы звуковые файлы превышали 30 секунд.

Спасибо, надеюсь, я смогу разобраться со всем этим.

1 Ответ

1 голос
/ 24 мая 2012

Демо-запись голоса - отличный пример, чтобы взглянуть на него. Он использует Cocos2D для пользовательского интерфейса, но если вы просто посмотрите на класс HelloWorldScene.m, он содержит весь код, необходимый для:

  1. Создать новый аудио сеанс
  2. Проверьте, подключен ли микрофон
  3. Начать запись
  4. Остановить запись
  5. Сохранить записанный аудиофайл
  6. Воспроизвести сохраненный голосовой файл

После того, как вы начнете аудио сеанс, вы можете использовать метод, подобный приведенному ниже, чтобы сохранить запись с данным именем файла:

-(void) saveAudioFileNamed:(NSString *)filename {

destinationString = [[self documentsPath] stringByAppendingPathComponent:filename];
NSLog(@"%@", destinationString);
NSURL *destinationURL = [NSURL fileURLWithPath: destinationString];

NSDictionary *settings = [NSDictionary dictionaryWithObjectsAndKeys:
                          [NSNumber numberWithFloat: 44100.0],                 AVSampleRateKey,
                          [NSNumber numberWithInt: kAudioFormatAppleLossless], AVFormatIDKey,
                          [NSNumber numberWithInt: 1],                         AVNumberOfChannelsKey,
                          [NSNumber numberWithInt: AVAudioQualityMax],         AVEncoderAudioQualityKey,
                          nil];

NSError *error;

recorder = [[AVAudioRecorder alloc] initWithURL:destinationURL settings:settings error:&error];
recorder.delegate = self;
}
...