Проблема в воспроизведении и записи звука на двух разных плеерах - PullRequest
1 голос
/ 19 января 2011

Я реализовал два AVAudioPlayer в своем проекте iPad. Я играю звук с одним объектом игрока а также одновременно запись с другим плеером.

Первый сценарий

1.Player1 записывает слова, которые я говорю. 2. Одновременно player1 также записывает музыку, воспроизводимую на player2.

* Этот сценарий работает нормально, если я не подключаю гарнитуру с микрофоном к своему iPad.

* Но, если я подключил гарнитуру к своему iPad и повторил описанный выше сценарий, наблюдаются следующие моменты:

я. Я слышу музыку, которую играет player2 в моей гарнитуре.

II. Но после того, как я перестал записывать свой голос через микрофон гарнитуры, при воспроизведении записанной дорожки не слышен звук музыки. Я слышу только свой голос, который записал через микрофон гарнитуры. Это моя проблема. Я хочу, чтобы с «гарнитурой с микрофоном» мое приложение работало так же, как и в сценарии 1.

Я использую следующие настройки для моей AVAudioSession:

AVAudioSession *audioSession = [AVAudioSession sharedInstance];
            NSError *err = nil;
            [audioSession setCategory :AVAudioSessionCategoryPlayAndRecord error:&err];

Ниже приведены настройки записи для рекордера:

NSDictionary *recordSettings = [[NSDictionary alloc] initWithObjectsAndKeys:
                                            [NSNumber numberWithFloat: 44100.0],AVSampleRateKey,
                                            [NSNumber numberWithInt: kAudioFormatLinearPCM],AVFormatIDKey,
                                            [NSNumber numberWithInt: 1], AVNumberOfChannelsKey,
                                            [NSNumber numberWithInt: AVAudioQualityMax],AVEncoderAudioQualityKey,nil];

Дорожка сохраняется в формате файла .wav.

Кроме того, музыка, воспроизводимая плеером2, имеет формат .wav или .mp3.

Пожалуйста, помогите мне решить эту проблему.

1 Ответ

1 голос
/ 26 января 2011

Я немного заржавел с AVAudioSession, поэтому не могу предложить прямую помощь с этим. Что я могу сказать, так это то, что когда люди обнаруживают, что не могут делать то, что им нужно, с AVAudioSession, они переходят на OpenAL. OpenAL может быть немного пугающим для начала, но то, что я сделал, было загрузить Cocos2D. Приятной особенностью Cocos2D (CocosDenshion) является то, что у него есть эти простые классы-оболочки для OpenAL. И весь код доступен, так что вы можете просмотреть его и посмотреть, как все это работает. Это немного сложно для настройки (вам придется возиться с фреймворками и добавлять исходный код в ваш проект), но как только вы это отсортируете, все будет хорошо.

Это был лучший путь для меня, надеюсь, он тоже вам подходит!

... Повторно читая вопрос, может ли быть просто, что диктофон (который записывает окружающие звуки) не записывает какие-либо музыкальные звуки, когда у вас включены наушники или наушники? Казалось бы, решение этой проблемы заключается в воспроизведении оригинальной музыки вместе с записью (одновременно).

...