Удивительный звуковой движок AERecorder не записывается

Я использую класс Amazing Audio Engine AERecorder для записи звука со встроенного микрофона. Я ознакомился с примером проекта, который поставляется с загрузкой. Я также реализовал код, представленный в документации TAAE для использования AERecorder.

Насколько я могу судить, у меня есть все необходимое для записи звука. Увы, файл создан, заголовок есть, но аудиоданных нет. Все, что я могу понять, это то, что что-то не так с AEAudioController или некоторыми настройками в моем проекте XCode.

Для справки, мой проект использует ARC, и я считаю, что я следовал инструкциям в документации для добавления -fno-objc-arc флаги компилятора для любых импортируемых источников.

Кто-нибудь еще сталкивался с этой проблемой, и если да, то как она была решена?

Я бы попытался задать этот вопрос на форуме TAAE, но не могу зарегистрироваться.

Вот код для тех, кто не хочет переходить по ссылке.

РЕДАКТИРОВАТЬ: Код ниже обновляется, чтобы показать, какие детали ранее отсутствовали.

- (void)viewDidLoad
{
   [super viewDidLoad]
   self.audioController = [[AEAudioController alloc] 
                       initWithAudioDescription:[AEAudioController nonInterleavedFloatStereoAudioDescription] 
                                   inputEnabled:YES];
   //************************
   // This is the crucial bit of code that was missing
   NSError *error;
   [audioController start:&error];
   //************************
}

- (void)beginRecording {
   // Init recorder
   self.recorder = [[AERecorder alloc] initWithAudioController:_audioController];
   NSString *documentsFolder = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) 
                               objectAtIndex:0];
   NSString *filePath = [documentsFolder stringByAppendingPathComponent:@"Recording.aiff"];
   // Start the recording process
   NSError *error = NULL;
   if ( ![_recorder beginRecordingToFileAtPath:filePath 
                                     fileType:kAudioFileAIFFType 
                                        error:&error] ) {
      // Report error
      return;
   }
   // Receive both audio input and audio output. Note that if you're using
   // AEPlaythroughChannel, mentioned above, you may not need to receive the input again.
   [_audioController addInputReceiver:_recorder];
   [_audioController addOutputReceiver:_recorder];
}
-(void)stopRecording
{
    [_recorder finishRecording];
    [_audioController removeInputReceiver:_recorder];
    [_audioController removeOutputReceiver:_recorder];
    self.recorder = nil;
}

1 ответ

Решение

Я разобрался с проблемой, которая должна была быть очевидной. Я не звонил [audioController start:&error] где-нибудь в моем коде. Теперь это работает как шарм. Надеюсь, это кому-нибудь поможет. Я должен сказать, что это очень хорошее программное обеспечение.

Другие вопросы по тегам