比赛中的问题&用两个不同的播放器录制声音

时间:2011-01-19 04:37:51

标签: iphone objective-c ipad avaudioplayer avaudiorecorder

我在iPad项目中实现了两个AVAudioPlayer。 我正在用一个玩家对象播放声音 并同时与其他玩家一起录制。

第一个场景

1.Player1正在记录我说的话。 2.同时,player1也正在录制播放器播放的音乐。

*如果我没有将带麦克风的耳机插入iPad,这种情况可以正常工作。

*但是,如果我将耳机插入iPad和iPad重复上述情况,观察到以下几点:

我。我可以在耳机中听到播放器2播放的音乐。

II。但是当我通过耳机麦克风停止录制声音后,播放录制的曲目时没有音乐声。我只能通过耳机的麦克风听到我录制的声音。这是我的问题。 我想要'带麦克风的耳机'我的应用程序应该与scenario1相同。

我正在为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文件格式保存。

此外,player2播放的音乐是.wav或.mp3格式。

请帮我解决这个问题。

1 个答案:

答案 0 :(得分:1)

我对AVAudioSession有点生疏,所以无法提供直接的帮助。我能说的是,当人们发现他们无法通过AVAudioSession做他们想做的事情时,他们会转向OpenAL。 OpenAL可能有点令人生畏,但我做的是下载Cocos2D。关于Cocos2D(CocosDenshion)的好处是它为OpenAL提供了这些简单的包装类。 代码全部公开,因此您可以在其中查看并查看它是如何工作的。设置有点棘手(你必须搞乱框架并在你的项目中添加源代码),但是一旦你对它进行了排序就很好了。

这对我来说是最好的路径,希望它也适合你!

...再次阅读问题,当你的耳机/耳机开启时,录音机(正在录制环境声音)是不是没有录制任何音乐声音?对此的解决方案似乎是回放原始音乐以及录音(同时)。