Игнорировать вход микрофона с помощью AVAudioRecorder и AVAudioSessionCategoryPlayAndRecord

Я разрабатываю приложение для iPad с несколькими AVAudioPlayer и одним AVAudioRecorder. Идея состоит в том, чтобы воспроизводить звук основного AvAudioPlayer как фоновую музыку, а касание различных кнопок воспроизводить звук других AVAudioPlayer для смешивания с фоновой музыкой. Микшированная музыка будет записана AVAudioRecorder.

Для этого я реализовал AVAudioSession с категорией AVAudioSessionCategoryPlayAndRecord и создал объект AVAudioRecorder со следующими настройками:

NSDictionary *recordSetting = [NSDictionary dictionaryWithObjectsAndKeys:
                               [NSNumber numberWithInt:kAudioFormatAppleIMA4], AVFormatIDKey,
                               [NSNumber numberWithInt:AVAudioQualityHigh], AVEncoderAudioQualityKey,
                               [NSNumber numberWithInt:16], AVEncoderBitRateKey,
                               [NSNumber numberWithInt: 2], AVNumberOfChannelsKey,
                               [NSNumber numberWithFloat:44100.0], AVSampleRateKey,
                                nil];

Все работает нормально, но вход микрофона тоже записывается, что меня не устраивает.

Вопрос в том, как я могу игнорировать/заменять/исключать вход микрофона в моем процессе записи?

Я долго гуглю и ищу в документации Apple категории и режимы AVAudioSession, настройки AVAudioRecorder, и у меня ничего не получается.

Я также ищу отключение микрофона, но я читал, что это невозможно на устройствах iOS.

Заранее спасибо за вашу помощь и извините за мои ошибки в написании английского.


person cuicmex    schedule 15.05.2012    source источник
comment
хм, AVAudioSessionCategoryPlayAndRecord предназначен для тех случаев, когда вы действительно хотите записывать с микрофона. Если вы на самом деле просто хотите смешать различные источники и сохранить результат в файл, вас ничто не остановит. Это не будет считаться записью.   -  person hooleyhoop    schedule 16.05.2012


Ответы (1)


API AVAudioRecorder предназначен только для записи с микрофона.

Для создания аудиофайлов любых звуков, которые издает приложение, приложение должно выполнить микширование звука в программном обеспечении (микшерный аудиоблок или ваш собственный код DSP), а затем при необходимости сжать и сохранить полученный аудиопоток.

person hotpaw2    schedule 15.05.2012
comment
Вот и все. Проблема заключалась в выборе AVAudioRecorder. Я перейду на Audio Unit Mixer. Большое спасибо. - person cuicmex; 16.05.2012