Удивительный звуковой движок 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]
где-нибудь в моем коде. Теперь это работает как шарм. Надеюсь, это кому-нибудь поможет. Я должен сказать, что это очень хорошее программное обеспечение.