使用AVAudioRecorder和AVAudioSessionCategoryPlayAndRecord忽略麦克风输入

时间:2012-05-15 20:08:23

标签: ios input microphone avaudiorecorder avaudiosession

我正在开发一款带有多个AVAudioPlayer和一个AVAudioRecorder的iPad应用程序。这个想法是播放主要AvAudioPlayer的声音,如背景音乐和触摸不同的按钮播放其他AV​​AudioPlayers的声音与背景音乐混合。混合音乐将由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];

一切正常,但录制的麦克风输入也是如此,这对我来说还不错。

问题是,如何在录制过程中忽略/替换/消除麦克风输入?

我google很长一段时间,在Apple文档中搜索AVAudioSession类别和模式,AVAudioRecorder设置,对我来说没什么用。

我也搜索静音麦克风,但我读过这在iOS设备上是不可能的。

提前感谢您的帮助,并对写英文的错误感到抱歉。

1 个答案:

答案 0 :(得分:0)

AVAudioRecorder API仅用于从麦克风录制。

为了创建应用程序发出的任何声音的音频文件,应用程序必须使用软件(混音器音频单元或您自己的DSP代码)进行音频混合,然后根据需要进行压缩,并保存生成的音频流